[go: nahoru, domu]

Catch ISE from getExtras()

onConnected() will be called when the state of browser is
CONNECT_STATE_CONNECTED. But ISE is happening when getExtras() is called
in onConnected().
This CL catches the exception and leave some logs.

Bug: 120288356
Test: ./gradlew :media:connectedCheck
Change-Id: I663e582b0d34194f40640a45fd93bbf892c1782b
diff --git a/media/src/main/java/android/support/v4/media/MediaBrowserCompat.java b/media/src/main/java/android/support/v4/media/MediaBrowserCompat.java
index 69cf852..2ab22a5 100644
--- a/media/src/main/java/android/support/v4/media/MediaBrowserCompat.java
+++ b/media/src/main/java/android/support/v4/media/MediaBrowserCompat.java
@@ -211,6 +211,7 @@
      * </p>
      */
     public void connect() {
+        Log.d(TAG, "Connecting to a MediaBrowserService.");
         mImpl.connect();
     }
 
@@ -253,6 +254,7 @@
     /**
      * Gets any extras for the media service.
      *
+     * @return The extra bundle if it is connected and set, and {@code null} otherwise.
      * @throws IllegalStateException if not connected.
      */
     public @Nullable
@@ -1890,7 +1892,14 @@
 
         @Override
         public void onConnected() {
-            Bundle extras = mBrowserFwk.getExtras();
+            Bundle extras;
+            try {
+                extras = mBrowserFwk.getExtras();
+            } catch (IllegalStateException e) {
+                // Should not be here since onConnected() will be called in a connected state.
+                Log.e(TAG, "Unexpected IllegalStateException", e);
+                return;
+            }
             if (extras == null) {
                 return;
             }