| 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 3a2e74e0f321d3d2cc12cb35dd78e16ccdd21355..064fa15b8199da9c13d7c08d6fa9052ef6e1596d 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| @@ -117,6 +117,7 @@ import org.chromium.chrome.browser.tabmodel.TabWindowManager;
|
| import org.chromium.chrome.browser.toolbar.Toolbar;
|
| import org.chromium.chrome.browser.toolbar.ToolbarControlContainer;
|
| import org.chromium.chrome.browser.toolbar.ToolbarManager;
|
| +import org.chromium.chrome.browser.util.ColorUtils;
|
| import org.chromium.chrome.browser.util.FeatureUtilities;
|
| import org.chromium.chrome.browser.webapps.AddToHomescreenDialog;
|
| import org.chromium.chrome.browser.widget.ControlContainer;
|
| @@ -485,6 +486,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| }
|
|
|
| @Override
|
| + public void onShown(Tab tab) {
|
| + setStatusBarColor(tab, tab.getThemeColor());
|
| + }
|
| +
|
| + @Override
|
| public void onHidden(Tab tab) {
|
| mLoFiBarPopupController.dismissLoFiBar();
|
| }
|
| @@ -514,9 +520,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
|
|
| @Override
|
| public void onDidChangeThemeColor(Tab tab, int color) {
|
| - if (getToolbarManager() == null) return;
|
| if (getActivityTab() != tab) return;
|
| + setStatusBarColor(tab, color);
|
|
|
| + if (getToolbarManager() == null) return;
|
| getToolbarManager().updatePrimaryColor(color);
|
|
|
| ControlContainer controlContainer =
|
| @@ -549,6 +556,17 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| mCompositorViewHolder.resetFlags();
|
| }
|
|
|
| + /**
|
| + * Set device status bar to a given color.
|
| + * @param tab The tab that is currently showing.
|
| + * @param color The color that the status bar should be set to.
|
| + */
|
| + protected void setStatusBarColor(Tab tab, int color) {
|
| + int statusBarColor = (tab != null && tab.getDefaultThemeColor() == color)
|
| + ? Color.BLACK : ColorUtils.getDarkenedColorForStatusBar(color);
|
| + ApiCompatibilityUtils.setStatusBarColor(getWindow(), statusBarColor);
|
| + }
|
| +
|
| private void createContextReporterIfNeeded() {
|
| if (mContextReporter != null || getActivityTab() == null) return;
|
|
|
|
|