Commit c720e39a authored by Peter Kotwicz's avatar Peter Kotwicz Committed by Commit Bot

[Android] Use black status bar on Android L if toolbar colour not launch intent 1/6

This CL sets the status bar color to black on Android L if
android.support.customtabs.extra.TOOLBAR_COLOR is not specified in the CCT
launch intent.

BUG=1015835
TEST=CustomTabStatusBarColorProviderTest.*

Change-Id: I566080e469cecc50cc9adce2121e6571ada63015
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1942875Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Reviewed-by: default avatarPeter Conn <peconn@chromium.org>
Reviewed-by: default avatarGlenn Hartmann <hartmanng@chromium.org>
Commit-Queue: Peter Kotwicz <pkotwicz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#720696}
parent 5456d533
......@@ -871,15 +871,10 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
}
@Override
public int getBaseStatusBarColor() {
public int getBaseStatusBarColor(boolean activityHasTab) {
return StatusBarColorController.UNDEFINED_STATUS_BAR_COLOR;
}
@Override
public boolean isStatusBarDefaultThemeColor() {
return false;
}
private void createContextReporterIfNeeded() {
if (!mStarted) return; // Sync state reporting should work only in started state.
if (mContextReporter != null || getActivityTab() == null) return;
......
......@@ -139,6 +139,13 @@ public class BrowserServicesIntentDataProvider {
return Color.WHITE;
}
/**
* @return Whether the intent specifies a custom toolbar color.
*/
public boolean hasCustomToolbarColor() {
return false;
}
/**
* @return The navigation bar color specified in the intent, or null if not specified.
*/
......
......@@ -19,7 +19,6 @@ import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarC
import org.chromium.chrome.browser.dependency_injection.ChromeActivityComponent;
import org.chromium.chrome.browser.tab.TabState;
import org.chromium.chrome.browser.ui.RootUiCoordinator;
import org.chromium.chrome.browser.webapps.WebappExtras;
/**
* Contains functionality which is shared between {@link WebappActivity} and
......@@ -94,27 +93,17 @@ public abstract class BaseCustomTabActivity<C extends ChromeActivityComponent>
@Override
public int getActivityThemeColor() {
if (getIntentDataProvider().isOpenedByChrome()) {
return TabState.UNSPECIFIED_THEME_COLOR;
BrowserServicesIntentDataProvider intentDataProvider = getIntentDataProvider();
if (!intentDataProvider.isOpenedByChrome() && intentDataProvider.hasCustomToolbarColor()) {
return intentDataProvider.getToolbarColor();
}
WebappExtras webappExtras = getIntentDataProvider().getWebappExtras();
if (webappExtras != null && !webappExtras.hasCustomToolbarColor) {
return TabState.UNSPECIFIED_THEME_COLOR;
}
return getIntentDataProvider().getToolbarColor();
}
@Override
public int getBaseStatusBarColor() {
return mStatusBarColorProvider.getBaseStatusBarColor(super.getBaseStatusBarColor());
}
@Override
public boolean isStatusBarDefaultThemeColor() {
return mStatusBarColorProvider.isStatusBarDefaultThemeColor(
super.isStatusBarDefaultThemeColor());
public int getBaseStatusBarColor(boolean activityHasTab) {
return mStatusBarColorProvider.getBaseStatusBarColor(
activityHasTab, super.getBaseStatusBarColor(activityHasTab));
}
@Override
......
......@@ -226,6 +226,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
@Nullable
private String mUrlToLoad;
private boolean mHasCustomToolbarColor;
private int mToolbarColor;
private int mBottomBarColor;
private boolean mEnableUrlBarHiding;
......@@ -527,7 +528,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
mToolbarColor = defaultColor;
return; // Don't allow toolbar color customization for incognito tabs.
}
int color = schemeParams.toolbarColor != null ? schemeParams.toolbarColor : defaultColor;
mHasCustomToolbarColor = (schemeParams.toolbarColor != null);
int color = mHasCustomToolbarColor ? schemeParams.toolbarColor : defaultColor;
mToolbarColor = ColorUtils.getOpaqueColor(color);
}
......@@ -644,6 +646,11 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
return mToolbarColor;
}
@Override
public boolean hasCustomToolbarColor() {
return mHasCustomToolbarColor;
}
@Override
@Nullable
public Integer getNavigationBarColor() {
......
......@@ -4,13 +4,11 @@
package org.chromium.chrome.browser.customtabs;
import static org.chromium.chrome.browser.ui.system.StatusBarColorController.DEFAULT_STATUS_BAR_COLOR;
import static org.chromium.chrome.browser.ui.system.StatusBarColorController.UNDEFINED_STATUS_BAR_COLOR;
import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider;
import org.chromium.chrome.browser.dependency_injection.ActivityScope;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabThemeColorHelper;
import org.chromium.chrome.browser.ui.system.StatusBarColorController;
import org.chromium.chrome.browser.webapps.WebDisplayMode;
import org.chromium.chrome.browser.webapps.WebappExtras;
......@@ -23,17 +21,14 @@ import javax.inject.Inject;
@ActivityScope
public class CustomTabStatusBarColorProvider {
private final BrowserServicesIntentDataProvider mIntentDataProvider;
private final ActivityTabProvider mActivityTabProvider;
private final StatusBarColorController mStatusBarColorController;
private boolean mUseTabThemeColor;
@Inject
public CustomTabStatusBarColorProvider(BrowserServicesIntentDataProvider intentDataProvider,
ActivityTabProvider activityTabProvider,
StatusBarColorController statusBarColorController) {
mIntentDataProvider = intentDataProvider;
mActivityTabProvider = activityTabProvider;
mStatusBarColorController = statusBarColorController;
}
......@@ -48,28 +43,17 @@ public class CustomTabStatusBarColorProvider {
mStatusBarColorController.updateStatusBarColor();
}
int getBaseStatusBarColor(int fallbackStatusBarColor) {
int getBaseStatusBarColor(boolean activityHasTab, int fallbackStatusBarColor) {
if (mIntentDataProvider.isOpenedByChrome()) return fallbackStatusBarColor;
Tab tab = mActivityTabProvider.get();
if (tab == null) {
return mIntentDataProvider.getToolbarColor();
}
if (shouldUseDefaultThemeColorForFullscreen()) {
return TabThemeColorHelper.getDefaultColor(tab);
return DEFAULT_STATUS_BAR_COLOR;
}
return mUseTabThemeColor ? UNDEFINED_STATUS_BAR_COLOR
: mIntentDataProvider.getToolbarColor();
}
boolean isStatusBarDefaultThemeColor(boolean isFallbackColorDefault) {
if (mIntentDataProvider.isOpenedByChrome()) {
return isFallbackColorDefault;
}
if (activityHasTab && mUseTabThemeColor) return UNDEFINED_STATUS_BAR_COLOR;
return shouldUseDefaultThemeColorForFullscreen();
return mIntentDataProvider.hasCustomToolbarColor() ? mIntentDataProvider.getToolbarColor()
: DEFAULT_STATUS_BAR_COLOR;
}
private boolean shouldUseDefaultThemeColorForFullscreen() {
......
......@@ -94,7 +94,7 @@ public class CustomTabTaskDescriptionHelper implements NativeInitObserver, Destr
mDefaultThemeColor = ApiCompatibilityUtils.getColor(
mActivity.getResources(), R.color.default_primary_color);
if (webappExtras != null) {
if (webappExtras.hasCustomToolbarColor) {
if (mIntentDataProvider.hasCustomToolbarColor()) {
mDefaultThemeColor = mIntentDataProvider.getToolbarColor();
}
mForceIcon = webappExtras.icon.bitmap();
......
......@@ -43,6 +43,7 @@ import org.chromium.ui.UiUtils;
public class StatusBarColorController
implements Destroyable, TopToolbarCoordinator.UrlExpansionObserver {
public static @ColorInt int UNDEFINED_STATUS_BAR_COLOR = Color.TRANSPARENT;
public static @ColorInt int DEFAULT_STATUS_BAR_COLOR = Color.argb(0x01, 0, 0, 0);
/**
* Provides the base status bar color.
......@@ -50,22 +51,17 @@ public class StatusBarColorController
public interface StatusBarColorProvider {
/**
* @return The base status bar color to override default colors used in the
* {@link StatusBarColorController}. If this returns a color other than
* {@link #UNDEFINED_STATUS_BAR_COLOR}, the {@link StatusBarColorController} will
* always use the color provided by this method to adjust the status bar color. This
* color may be used as-is or adjusted due to a scrim overlay or Android version.
* {@link StatusBarColorController}. If this returns
* {@link #DEFAULT_STATUS_BAR_COLOR}, {@link StatusBarColorController} will use the
* default status bar color.
* If this returns a color other than {@link #UNDEFINED_STATUS_BAR_COLOR} and
* {@link #DEFAULT_STATUS_BAR_COLOR}, the {@link StatusBarColorController} will
* always use the color provided by this method to adjust the status bar color.
* This color may be used as-is or adjusted due to a scrim overlay or Android
* version.
*/
@ColorInt
int getBaseStatusBarColor();
/**
* @return Whether the color provided at {@link #getBaseStatusBarColor()} is considered a
* default theme color. If false, we use a darkened status bar color based on the
* base status bar color on pre-M instead of the default status bar color. This
* value will be ignored if {@link #getBaseStatusBarColor()} returns
* {@link #UNDEFINED_STATUS_BAR_COLOR}.
*/
boolean isStatusBarDefaultThemeColor();
int getBaseStatusBarColor(boolean activityHasTab);
}
private final Window mWindow;
......@@ -166,7 +162,7 @@ public class StatusBarColorController
// status bar color is updated. However, this update is triggered after the
// animation, so we update here for the duration of the new Tab animation.
// See https://crbug.com/917689.
updateStatusBarColor(false);
updateStatusBarColor();
}
};
......@@ -175,7 +171,7 @@ public class StatusBarColorController
@Override
public void onOverviewModeStartedShowing(boolean showToolbar) {
mIsInOverviewMode = true;
updateStatusBarColor(false);
updateStatusBarColor();
}
@Override
......@@ -227,25 +223,24 @@ public class StatusBarColorController
return mStatusBarScrimDelegate;
}
/**
* @param isDefaultThemeColor Whether default theme color is used for the status bar color.
*/
private void updateStatusBarColor(boolean isDefaultThemeColor) {
setStatusBarColor(calculateBaseStatusBarColor(), isDefaultThemeColor);
}
/**
* @param tab The tab that is currently showing, used to determine whether {@code color} is the
* default theme color.
*/
public void updateStatusBarColor() {
setStatusBarColor(calculateBaseStatusBarColor(), isDefaultThemeColor());
@ColorInt
int statusBarColor = calculateBaseStatusBarColor();
boolean isDefaultThemeColor = (statusBarColor == DEFAULT_STATUS_BAR_COLOR);
if (isDefaultThemeColor) {
statusBarColor =
mIsIncognito ? mIncognitoDefaultThemeColor : mStandardDefaultThemeColor;
}
setStatusBarColor(statusBarColor, isDefaultThemeColor);
}
private @ColorInt int calculateBaseStatusBarColor() {
// Return overridden status bar color from StatusBarColorProvider if specified.
final int baseStatusBarColor = mStatusBarColorProvider.getBaseStatusBarColor();
if (baseStatusBarColor != UNDEFINED_STATUS_BAR_COLOR) return baseStatusBarColor;
final int baseStatusBarColor = mStatusBarColorProvider.getBaseStatusBarColor(
mCurrentTab != null /* activityHasTab */);
if (baseStatusBarColor != UNDEFINED_STATUS_BAR_COLOR) {
return baseStatusBarColor;
}
// We don't adjust status bar color for tablet when status bar color is not overridden by
// StatusBarColorProvider.
......@@ -276,18 +271,11 @@ public class StatusBarColorController
}
// Return status bar color to match the toolbar.
if (mCurrentTab != null) return TabThemeColorHelper.getColor(mCurrentTab);
// This could happen when tab is not initialized (e.g. on startup).
return mIsIncognito ? mIncognitoDefaultThemeColor : mStandardDefaultThemeColor;
}
private boolean isDefaultThemeColor() {
if (mStatusBarColorProvider.getBaseStatusBarColor() != UNDEFINED_STATUS_BAR_COLOR) {
return mStatusBarColorProvider.isStatusBarDefaultThemeColor();
if (mCurrentTab != null && !TabThemeColorHelper.isDefaultColorUsed(mCurrentTab)) {
return TabThemeColorHelper.getColor(mCurrentTab);
}
return mCurrentTab == null || TabThemeColorHelper.isDefaultColorUsed(mCurrentTab);
return DEFAULT_STATUS_BAR_COLOR;
}
/**
......
......@@ -344,17 +344,18 @@ public class WebApkIntentDataProviderFactory {
WebappExtras webappExtras = new WebappExtras(
WebappRegistry.webApkIdForPackage(webApkPackageName), url, scope, primaryIcon, name,
shortName, displayMode, orientation, source,
WebappIntentUtils.isLongColorValid(themeColor),
WebappIntentUtils.colorFromLongColor(backgroundColor), defaultBackgroundColor,
false /* isIconGenerated */, isPrimaryIconMaskable, forceNavigation);
WebApkExtras webApkExtras = new WebApkExtras(webApkPackageName, badgeIcon, splashIcon,
isSplashIconMaskable, shellApkVersion, manifestUrl, manifestStartUrl, distributor,
iconUrlToMurmur2HashMap, shareTarget, isSplashProvidedByWebApk, shareData,
webApkVersionCode);
int toolbarColor = webappExtras.hasCustomToolbarColor
boolean hasCustomToolbarColor = WebappIntentUtils.isLongColorValid(themeColor);
int toolbarColor = hasCustomToolbarColor
? (int) themeColor
: WebappIntentDataProvider.getDefaultToolbarColor();
return new WebappIntentDataProvider(toolbarColor, webappExtras, webApkExtras);
return new WebappIntentDataProvider(
toolbarColor, hasCustomToolbarColor, webappExtras, webApkExtras);
}
private static int computeSource(Intent intent, ShareData shareData) {
......
......@@ -650,16 +650,21 @@ public class WebappActivity extends BaseCustomTabActivity<WebappActivityComponen
}
private void updateToolbarColor() {
if (getToolbarManager() != null && !isStatusBarDefaultThemeColor()) {
int toolbarColor = getBaseStatusBarColor();
if (getToolbarManager() == null) return;
Tab tab = getActivityTab();
int toolbarColor = getBaseStatusBarColor((tab != null) /* activityHasTab */);
if (toolbarColor == StatusBarColorController.DEFAULT_STATUS_BAR_COLOR) return;
// If the color is undefined, we use the color from the tab (if available).
if (toolbarColor == StatusBarColorController.UNDEFINED_STATUS_BAR_COLOR) {
toolbarColor = (getActivityTab() == null)
? mIntentDataProvider.getToolbarColor()
: TabThemeColorHelper.getColor(getActivityTab());
toolbarColor = (tab != null) ? TabThemeColorHelper.getColor(tab)
: mIntentDataProvider.getToolbarColor();
}
getToolbarManager().onThemeColorChanged(toolbarColor, false);
}
}
@Override
public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) {
......
......@@ -54,11 +54,6 @@ public class WebappExtras {
*/
public final @ShortcutSource int source;
/**
* Whether the webapp provides a custom toolbar color.
*/
public final boolean hasCustomToolbarColor;
/**
* Background color for webapp's splash screen.
*/
......@@ -87,16 +82,15 @@ public class WebappExtras {
public static WebappExtras createEmpty() {
return new WebappExtras(null /* id */, null /* url */, null /* scopeUrl */,
new WebappIcon(), null /* name */, null /* shortName */, WebDisplayMode.UNDEFINED,
ScreenOrientationValues.DEFAULT, ShortcutSource.UNKNOWN,
false /* hasCustomToolbarColor */, null /* backgroundColor */,
ScreenOrientationValues.DEFAULT, ShortcutSource.UNKNOWN, null /* backgroundColor */,
Color.WHITE /* defaultBackgroundColor */, false /* isIconGenerated */,
false /* isIconAdaptive */, false /* shouldForceNavigation */);
}
public WebappExtras(String id, String url, String scopeUrl, WebappIcon icon, String name,
String shortName, @WebDisplayMode int displayMode, int orientation, int source,
boolean hasCustomToolbarColor, Integer backgroundColor, int defaultBackgroundColor,
boolean isIconGenerated, boolean isIconAdaptive, boolean shouldForceNavigation) {
Integer backgroundColor, int defaultBackgroundColor, boolean isIconGenerated,
boolean isIconAdaptive, boolean shouldForceNavigation) {
this.id = id;
this.url = url;
this.scopeUrl = scopeUrl;
......@@ -106,7 +100,6 @@ public class WebappExtras {
this.displayMode = displayMode;
this.orientation = orientation;
this.source = source;
this.hasCustomToolbarColor = hasCustomToolbarColor;
this.backgroundColor = backgroundColor;
this.defaultBackgroundColor = defaultBackgroundColor;
this.isIconGenerated = isIconGenerated;
......
......@@ -20,7 +20,8 @@ public class WebappInfo {
protected static BrowserServicesIntentDataProvider createEmptyIntentDataProvider() {
return new WebappIntentDataProvider(WebappIntentDataProvider.getDefaultToolbarColor(),
WebappExtras.createEmpty(), WebApkExtras.createEmpty());
false /* hasCustomToolbarColor */, WebappExtras.createEmpty(),
WebApkExtras.createEmpty());
}
public static WebappInfo createEmpty() {
......@@ -106,7 +107,7 @@ public class WebappInfo {
* Returns whether the toolbar color specified in the Intent is valid.
*/
public boolean hasValidToolbarColor() {
return getWebappExtras().hasCustomToolbarColor;
return mProvider.hasCustomToolbarColor();
}
/**
......
......@@ -16,6 +16,7 @@ import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProv
*/
public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider {
private int mToolbarColor;
private boolean mHasCustomToolbarColor;
private WebappExtras mWebappExtras;
private WebApkExtras mWebApkExtras;
......@@ -26,9 +27,10 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider
return Color.WHITE;
}
WebappIntentDataProvider(
int toolbarColor, WebappExtras webappExtras, WebApkExtras webApkExtras) {
WebappIntentDataProvider(int toolbarColor, boolean hasCustomToolbarColor,
WebappExtras webappExtras, WebApkExtras webApkExtras) {
mToolbarColor = toolbarColor;
mHasCustomToolbarColor = hasCustomToolbarColor;
mWebappExtras = webappExtras;
mWebApkExtras = webApkExtras;
}
......@@ -38,6 +40,11 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider
return mToolbarColor;
}
@Override
public boolean hasCustomToolbarColor() {
return mHasCustomToolbarColor;
}
@Override
public int getTitleVisibilityState() {
return CustomTabsIntent.SHOW_PAGE_TITLE;
......
......@@ -97,8 +97,9 @@ public class WebappIntentDataProviderFactory {
SplashLayout.getDefaultBackgroundColor(ContextUtils.getApplicationContext());
WebappExtras webappExtras = new WebappExtras(id, url, scope, new WebappIcon(icon), name,
shortName, displayMode, orientation, source, hasValidToolbarColor, backgroundColor,
shortName, displayMode, orientation, source, backgroundColor,
defaultBackgroundColor, isIconGenerated, isIconAdaptive, forceNavigation);
return new WebappIntentDataProvider(toolbarColor, webappExtras, null /* webApkExtras */);
return new WebappIntentDataProvider(
toolbarColor, hasValidToolbarColor, webappExtras, null /* webApkExtras */);
}
}
......@@ -8,6 +8,7 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.chromium.chrome.browser.ui.system.StatusBarColorController.DEFAULT_STATUS_BAR_COLOR;
import static org.chromium.chrome.browser.ui.system.StatusBarColorController.UNDEFINED_STATUS_BAR_COLOR;
import org.junit.Assert;
......@@ -19,8 +20,6 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.ui.system.StatusBarColorController;
/**
......@@ -34,10 +33,7 @@ public class CustomTabStatusBarColorProviderTest {
private static final int USER_PROVIDED_COLOR = 0x99aabbcc;
@Mock public CustomTabIntentDataProvider mCustomTabIntentDataProvider;
@Mock
public ActivityTabProvider mActivityTabProvider;
@Mock public StatusBarColorController mStatusBarColorController;
@Mock public Tab mTab;
private CustomTabStatusBarColorProvider mColorProvider;
@Before
......@@ -45,57 +41,67 @@ public class CustomTabStatusBarColorProviderTest {
MockitoAnnotations.initMocks(this);
mColorProvider = new CustomTabStatusBarColorProvider(
mCustomTabIntentDataProvider, mActivityTabProvider, mStatusBarColorController);
mCustomTabIntentDataProvider, mStatusBarColorController);
when(mCustomTabIntentDataProvider.getToolbarColor()).thenReturn(USER_PROVIDED_COLOR);
when(mActivityTabProvider.get()).thenReturn(mTab);
when(mCustomTabIntentDataProvider.hasCustomToolbarColor()).thenReturn(true);
}
@Test
public void fallsBackWhenOpenedByChrome() {
when(mCustomTabIntentDataProvider.isOpenedByChrome()).thenReturn(true);
Assert.assertEquals(FALLBACK_COLOR, getStatusBarColor());
Assert.assertTrue(mColorProvider.isStatusBarDefaultThemeColor(true));
Assert.assertFalse(mColorProvider.isStatusBarDefaultThemeColor(false));
Assert.assertEquals(FALLBACK_COLOR, getStatusBarColor(true /* activityHasTab */));
}
@Test
public void userProvidedColor() {
Assert.assertEquals(USER_PROVIDED_COLOR, getStatusBarColor());
Assert.assertFalse(mColorProvider.isStatusBarDefaultThemeColor(true));
public void useTabThemeColor_enable() {
mColorProvider.setUseTabThemeColor(true);
Assert.assertEquals(
UNDEFINED_STATUS_BAR_COLOR, getStatusBarColor(true /* activityHasTab */));
verify(mStatusBarColorController).updateStatusBarColor();
}
@Test
public void useTabThemeColor_enable() {
public void useTabThemeColor_enable_nullTab() {
mColorProvider.setUseTabThemeColor(true);
Assert.assertEquals(UNDEFINED_STATUS_BAR_COLOR, getStatusBarColor());
verify(mStatusBarColorController).updateStatusBarColor();
Assert.assertEquals(USER_PROVIDED_COLOR, getStatusBarColor(false /* activityHasTab */));
when(mCustomTabIntentDataProvider.hasCustomToolbarColor()).thenReturn(false);
Assert.assertEquals(
DEFAULT_STATUS_BAR_COLOR, getStatusBarColor(false /* activityHasTab */));
}
@Test
public void useTabThemeColor_disable() {
mColorProvider.setUseTabThemeColor(true);
Assert.assertEquals(UNDEFINED_STATUS_BAR_COLOR, getStatusBarColor());
Assert.assertEquals(
UNDEFINED_STATUS_BAR_COLOR, getStatusBarColor(true /* activityHasTab */));
verify(mStatusBarColorController).updateStatusBarColor();
mColorProvider.setUseTabThemeColor(false);
Assert.assertEquals(USER_PROVIDED_COLOR, getStatusBarColor());
Assert.assertEquals(USER_PROVIDED_COLOR, getStatusBarColor(true /* activityHasTab */));
verify(mStatusBarColorController, times(2)).updateStatusBarColor();
}
@Test
public void useTabThemeColor_disable_noCustomColor() {
when(mCustomTabIntentDataProvider.hasCustomToolbarColor()).thenReturn(false);
mColorProvider.setUseTabThemeColor(false);
Assert.assertEquals(DEFAULT_STATUS_BAR_COLOR, getStatusBarColor(true /* activityHasTab */));
}
@Test
public void useTabThemeColor_idempotent() {
mColorProvider.setUseTabThemeColor(true);
mColorProvider.setUseTabThemeColor(true);
Assert.assertEquals(UNDEFINED_STATUS_BAR_COLOR, getStatusBarColor());
Assert.assertEquals(
UNDEFINED_STATUS_BAR_COLOR, getStatusBarColor(true /* activityHasTab */));
verify(mStatusBarColorController).updateStatusBarColor();
}
private int getStatusBarColor() {
return mColorProvider.getBaseStatusBarColor(FALLBACK_COLOR);
private int getStatusBarColor(boolean activityHasTab) {
return mColorProvider.getBaseStatusBarColor(activityHasTab, FALLBACK_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