Index: chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java |
index 0eed1965b1bb7ebe54c9dad6e23278adcca9351a..aab5d089d908eca80f1a8858a83e59d643d7e926 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java |
@@ -26,6 +26,7 @@ import android.support.customtabs.ICustomTabsCallback; |
import android.support.customtabs.ICustomTabsService; |
import android.text.TextUtils; |
import android.view.WindowManager; |
+import android.widget.RemoteViews; |
import org.chromium.base.CommandLine; |
import org.chromium.base.FieldTrialList; |
@@ -384,27 +385,45 @@ public class CustomTabsConnection extends ICustomTabsService.Stub { |
@Override |
public boolean updateVisuals(final ICustomTabsCallback callback, Bundle bundle) { |
+ final RemoteViews remoteViews = IntentUtils.safeGetParcelable(bundle, |
+ CustomTabsIntent.EXTRA_SECONDARY_TOOLBAR_REMOTEVIEWS); |
final Bundle actionButtonBundle = IntentUtils.safeGetBundle(bundle, |
CustomTabsIntent.EXTRA_ACTION_BUTTON_BUNDLE); |
- if (actionButtonBundle == null) return false; |
- final int id = actionButtonBundle.getInt(CustomTabsIntent.KEY_ID, |
- CustomTabsIntent.TOOLBAR_ACTION_BUTTON_ID); |
- final Bitmap bitmap = CustomButtonParams.parseBitmapFromBundle(actionButtonBundle); |
- final String description = CustomButtonParams |
- .parseDescriptionFromBundle(actionButtonBundle); |
- if (bitmap == null || description == null) return false; |
- |
- try { |
- return ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>() { |
- @Override |
- public Boolean call() throws Exception { |
- return CustomTabActivity.updateCustomButton(callback.asBinder(), id, bitmap, |
- description); |
+ boolean result = true; |
+ if (actionButtonBundle != null) { |
+ final int id = IntentUtils.safeGetInt(actionButtonBundle, CustomTabsIntent.KEY_ID, |
+ CustomTabsIntent.TOOLBAR_ACTION_BUTTON_ID); |
+ final Bitmap bitmap = CustomButtonParams.parseBitmapFromBundle(actionButtonBundle); |
+ final String description = CustomButtonParams |
+ .parseDescriptionFromBundle(actionButtonBundle); |
+ if (bitmap != null && description != null) { |
+ try { |
+ result &= ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>() { |
+ @Override |
+ public Boolean call() throws Exception { |
+ return CustomTabActivity.updateCustomButton(callback.asBinder(), id, |
+ bitmap, description); |
+ } |
+ }); |
+ } catch (ExecutionException e) { |
+ result = false; |
} |
- }); |
- } catch (ExecutionException e) { |
- return false; |
+ } |
} |
+ if (remoteViews != null) { |
+ try { |
+ result &= ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>() { |
+ @Override |
+ public Boolean call() throws Exception { |
+ return CustomTabActivity.updateRemoteViews(callback.asBinder(), |
+ remoteViews); |
+ } |
+ }); |
+ } catch (ExecutionException e) { |
+ result = false; |
+ } |
+ } |
+ return result; |
} |
/** |
@@ -482,7 +501,7 @@ public class CustomTabsConnection extends ICustomTabsService.Stub { |
* Notifies the application of a navigation event. |
* |
* Delivers the {@link ICustomTabsConnectionCallback#onNavigationEvent} |
- * callback to the aplication. |
+ * callback to the application. |
* |
* @param session The Binder object identifying the session. |
* @param navigationEvent The navigation event code, defined in {@link CustomTabsCallback} |