Commit b06c0ba2 authored by mdjones's avatar mdjones Committed by Commit bot

[Home] Fix status bar color on tab mode switch

The status bar's color would incorrectly switch when changing tab
models in the tab switcher due to tab's onShow being called. The
tab switcher logic was not handled correctly since the Chrome Home
test existed in ChromeActivity instead of ChromeTabbedActivity;
this change moves that logic.

This change also adds a special case for the incognito NTP, since
that page is completely dark, that status bar should be too.

BUG=708680

Review-Url: https://codereview.chromium.org/2803673003
Cr-Commit-Position: refs/heads/master@{#462878}
parent 67962d07
...@@ -612,6 +612,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity ...@@ -612,6 +612,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
(ControlContainer) findViewById(R.id.control_container); (ControlContainer) findViewById(R.id.control_container);
controlContainer.getToolbarResourceAdapter().invalidate(null); controlContainer.getToolbarResourceAdapter().invalidate(null);
} }
@Override
public void onContentChanged(Tab tab) {
if (getBottomSheet() != null) setStatusBarColor(tab, tab.getDefaultThemeColor());
}
}; };
if (mAssistStatusHandler != null) { if (mAssistStatusHandler != null) {
...@@ -794,11 +799,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity ...@@ -794,11 +799,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
protected void setStatusBarColor(Tab tab, int color) { protected void setStatusBarColor(Tab tab, int color) {
int statusBarColor = (tab != null && tab.isDefaultThemeColor()) int statusBarColor = (tab != null && tab.isDefaultThemeColor())
? Color.BLACK : ColorUtils.getDarkenedColorForStatusBar(color); ? Color.BLACK : ColorUtils.getDarkenedColorForStatusBar(color);
if (getBottomSheet() != null) {
statusBarColor =
ApiCompatibilityUtils.getColor(getResources(), R.color.default_primary_color);
getBottomSheet().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
ApiCompatibilityUtils.setStatusBarColor(getWindow(), statusBarColor); ApiCompatibilityUtils.setStatusBarColor(getWindow(), statusBarColor);
} }
......
...@@ -1838,6 +1838,22 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode ...@@ -1838,6 +1838,22 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
@Override @Override
protected void setStatusBarColor(Tab tab, int color) { protected void setStatusBarColor(Tab tab, int color) {
if (DeviceFormFactor.isTablet(getApplicationContext())) return; if (DeviceFormFactor.isTablet(getApplicationContext())) return;
// If Chrome Home is enabled, the super of this function is not called because it only
// performs unnecessary transformations on the theme color.
if (getBottomSheet() != null) {
color = ApiCompatibilityUtils.getColor(getResources(), R.color.default_primary_color);
getBottomSheet().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
// Special case the incognito NTP and the tab switcher.
if ((tab != null && NewTabPage.isNTPUrl(tab.getUrl()) && tab.isIncognito())
|| isInOverviewMode()) {
color = Color.BLACK;
}
ApiCompatibilityUtils.setStatusBarColor(getWindow(), color);
return;
}
super.setStatusBarColor(tab, isInOverviewMode() ? Color.BLACK : color); super.setStatusBarColor(tab, isInOverviewMode() ? Color.BLACK : color);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment