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 52b22c66c2924360d0d4eb5c67eaff0157e89ea0..82fb4f0ece09c4949ca14ddddbdfc66d884375f4 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
@@ -97,6 +97,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; |
@@ -211,6 +212,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity |
private OnPreDrawListener mFirstDrawListener; |
+ protected int mThemeColor; |
+ |
private final Locale mCurrentLocale = Locale.getDefault(); |
private AssistStatusHandler mAssistStatusHandler; |
@@ -498,6 +501,27 @@ public abstract class ChromeActivity extends AsyncInitializationActivity |
public void onCrash(Tab tab, boolean sadTabShown) { |
postDeferredStartupIfNeeded(); |
} |
+ |
+ @Override |
+ public void onDidChangeThemeColor(int color) { |
David Trainor- moved to gerrit
2015/07/31 21:07:59
It's sad that we can't actually rely on color here
Yusuf
2015/07/31 21:12:14
Yeah... It is mostly the security related bits tha
Yusuf
2015/08/03 05:53:28
Abandoning this in favor of https://codereview.chr
|
+ 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) { |
@@ -505,6 +529,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(); |
@@ -1450,4 +1482,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); |
+ } |
} |