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 e9dddfb35b11e8385aa218e3aa251a7448f38498..77a3406ec3981fc7d38d3006ffb6fded5ed8b0fe 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; |