| Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| index e448686d8b37e06203aa67f015aa7e1c959613a1..c7da06127ab0a08e91d0f7285f4bd31cc05f3e61 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| @@ -99,6 +99,7 @@ import org.chromium.chrome.browser.snackbar.LoFiBarPopupController;
|
| import org.chromium.chrome.browser.snackbar.SnackbarManager;
|
| import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
|
| import org.chromium.chrome.browser.sync.ProfileSyncService;
|
| +import org.chromium.chrome.browser.tab.ChromeTab;
|
| import org.chromium.chrome.browser.tab.EmptyTabObserver;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| import org.chromium.chrome.browser.tab.TabObserver;
|
| @@ -213,6 +214,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
|
|
| private OnPreDrawListener mFirstDrawListener;
|
|
|
| + protected int mThemeColor;
|
| +
|
| private final Locale mCurrentLocale = Locale.getDefault();
|
|
|
| private AssistStatusHandler mAssistStatusHandler;
|
| @@ -510,6 +513,27 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| public void onCrash(Tab tab, boolean sadTabShown) {
|
| postDeferredStartupIfNeeded();
|
| }
|
| +
|
| + @Override
|
| + public void onDidChangeThemeColor(int color) {
|
| + checkThemeColorUpdate();
|
| + }
|
| +
|
| + @Override
|
| + public void onWebContentsSwapped(Tab tab, boolean didStartLoad, boolean didFinishLoad) {
|
| + if (!didStartLoad) return;
|
| + checkThemeColorUpdate();
|
| + }
|
| +
|
| + @Override
|
| + public void onSSLStateUpdated(Tab tab) {
|
| + checkThemeColorUpdate();
|
| + }
|
| +
|
| + @Override
|
| + public void onDidAttachInterstitialPage(Tab tab) {
|
| + checkThemeColorUpdate();
|
| + }
|
| };
|
|
|
| if (mAssistStatusHandler != null) {
|
| @@ -517,6 +541,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| }
|
| }
|
|
|
| + private void checkThemeColorUpdate() {
|
| + if (getActivityTab() == null) return;
|
| + int themeColor = ChromeTab.fromTab(getActivityTab()).getThemeColor();
|
| + if (mThemeColor == themeColor) return;
|
| + mThemeColor = themeColor;
|
| + onThemeColorUpdate();
|
| + }
|
| +
|
| @Override
|
| public void onStartWithNative() {
|
| super.onStartWithNative();
|
| @@ -1462,4 +1494,15 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
|
|
| @Override
|
| public void onSceneChange(Layout layout) { }
|
| +
|
| + /**
|
| + * Gets called when the theme color corresponding to current tab changes.
|
| + */
|
| + protected void onThemeColorUpdate() {
|
| + if (mToolbarManager == null) return;
|
| + mToolbarManager.updatePrimaryColor(mThemeColor);
|
| + ControlContainer controlContainer =
|
| + (ControlContainer) findViewById(R.id.control_container);
|
| + controlContainer.getToolbarResourceAdapter().invalidate(null);
|
| + }
|
| }
|
|
|