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; |