Type check before casting from CookieHandler to CookieManager
CookieHandler.getDefault() doesn't always return CookieManager.
Bug: 63638018
Test: pass StreamingMediaPlayerTest#testHlsWithHeadersCookies
Test: manual with a test app
Change-Id: Ie7c19d38f779813f3fffb9abbcb3188a0fca3f45
diff --git a/media/java/android/media/MediaHTTPConnection.java b/media/java/android/media/MediaHTTPConnection.java
index dd731df..aae1f51 100644
--- a/media/java/android/media/MediaHTTPConnection.java
+++ b/media/java/android/media/MediaHTTPConnection.java
@@ -61,9 +61,9 @@
private final static int MAX_REDIRECTS = 20;
public MediaHTTPConnection() {
- CookieManager cookieManager = (CookieManager)CookieHandler.getDefault();
- if (cookieManager == null) {
- Log.w(TAG, "MediaHTTPConnection: Unexpected. No CookieManager found.");
+ CookieHandler cookieHandler = CookieHandler.getDefault();
+ if (cookieHandler == null) {
+ Log.w(TAG, "MediaHTTPConnection: Unexpected. No CookieHandler found.");
}
native_setup();
diff --git a/media/java/android/media/MediaHTTPService.java b/media/java/android/media/MediaHTTPService.java
index b678630..3a0e58a 100644
--- a/media/java/android/media/MediaHTTPService.java
+++ b/media/java/android/media/MediaHTTPService.java
@@ -41,34 +41,40 @@
synchronized (mCookieStoreInitialized) {
// Only need to do it once for all connections
if ( !mCookieStoreInitialized ) {
- CookieManager cookieManager = (CookieManager)CookieHandler.getDefault();
- if (cookieManager == null) {
- cookieManager = new CookieManager();
- CookieHandler.setDefault(cookieManager);
- Log.v(TAG, "makeHTTPConnection: CookieManager created: " + cookieManager);
- }
- else {
- Log.v(TAG, "makeHTTPConnection: CookieManager(" + cookieManager + ") exists.");
+ CookieHandler cookieHandler = CookieHandler.getDefault();
+ if (cookieHandler == null) {
+ cookieHandler = new CookieManager();
+ CookieHandler.setDefault(cookieHandler);
+ Log.v(TAG, "makeHTTPConnection: CookieManager created: " + cookieHandler);
+ } else {
+ Log.v(TAG, "makeHTTPConnection: CookieHandler (" + cookieHandler + ") exists.");
}
// Applying the bootstrapping cookies
if ( mCookies != null ) {
- CookieStore store = cookieManager.getCookieStore();
- for ( HttpCookie cookie : mCookies ) {
- try {
- store.add(null, cookie);
- } catch ( Exception e ) {
- Log.v(TAG, "makeHTTPConnection: CookieStore.add" + e);
+ if ( cookieHandler instanceof CookieManager ) {
+ CookieManager cookieManager = (CookieManager)cookieHandler;
+ CookieStore store = cookieManager.getCookieStore();
+ for ( HttpCookie cookie : mCookies ) {
+ try {
+ store.add(null, cookie);
+ } catch ( Exception e ) {
+ Log.v(TAG, "makeHTTPConnection: CookieStore.add" + e);
+ }
+ //for extended debugging when needed
+ //Log.v(TAG, "MediaHTTPConnection adding Cookie[" + cookie.getName() +
+ // "]: " + cookie);
}
- //for extended debugging when needed
- //Log.v(TAG, "MediaHTTPConnection adding Cookie[" + cookie.getName() +
- // "]: " + cookie);
+ } else {
+ Log.w(TAG, "makeHTTPConnection: The installed CookieHandler is not a "
+ + "CookieManager. Can’t add the provided cookies to the cookie "
+ + "store.");
}
} // mCookies
mCookieStoreInitialized = true;
- Log.v(TAG, "makeHTTPConnection(" + this + "): cookieManager: " + cookieManager +
+ Log.v(TAG, "makeHTTPConnection(" + this + "): cookieHandler: " + cookieHandler +
" Cookies: " + mCookies);
} // mCookieStoreInitialized
} // synchronized
@@ -92,5 +98,4 @@
return null;
}
-
}