| Index: chrome/android/javatests/src/org/chromium/chrome/browser/toolbar/BrandColorTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/toolbar/BrandColorTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/toolbar/BrandColorTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f7894b068577301ff4c2e53316f4fe834a222c96
|
| --- /dev/null
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/toolbar/BrandColorTest.java
|
| @@ -0,0 +1,175 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.browser.toolbar;
|
| +
|
| +import android.graphics.Color;
|
| +import android.test.FlakyTest;
|
| +import android.test.suitebuilder.annotation.SmallTest;
|
| +import android.text.TextUtils;
|
| +
|
| +import com.google.android.apps.chrome.R;
|
| +
|
| +import org.chromium.base.ThreadUtils;
|
| +import org.chromium.base.test.util.Feature;
|
| +import org.chromium.base.test.util.UrlUtils;
|
| +import org.chromium.chrome.test.DocumentActivityTestBase;
|
| +import org.chromium.chrome.test.util.DisableInTabbedMode;
|
| +import org.chromium.content.browser.InterstitialPageDelegateAndroid;
|
| +import org.chromium.content.browser.test.util.Criteria;
|
| +import org.chromium.content.browser.test.util.CriteriaHelper;
|
| +
|
| +import java.util.concurrent.Callable;
|
| +
|
| +/**
|
| + * Contains tests for the brand color feature.
|
| + */
|
| +@DisableInTabbedMode
|
| +public class BrandColorTest extends DocumentActivityTestBase {
|
| + private static final String BRAND_COLOR_1 = "#482329";
|
| + private static final String BRAND_COLOR_2 = "#505050";
|
| + private static final String INTERSTITIAL_HTML = "<html><head></head><body>test</body></html>";
|
| +
|
| + private ToolbarPhone mToolbar;
|
| + private ToolbarDataProvider mToolbarDataProvider;
|
| +
|
| + private static String getUrlWithBrandColor(String brandColor) {
|
| + String brandColorMetaTag = TextUtils.isEmpty(brandColor)
|
| + ? "" : "<meta name='theme-color' content='" + brandColor + "'>";
|
| + return UrlUtils.encodeHtmlDataUri(
|
| + "<html>"
|
| + + " <head>"
|
| + + " " + brandColorMetaTag
|
| + + " </head>"
|
| + + " <body>"
|
| + + " Theme color set to " + brandColor
|
| + + " </body>"
|
| + + "</html>");
|
| + }
|
| +
|
| + @Override
|
| + public void startMainActivity() {
|
| + // Don't launch activity automatically.
|
| + }
|
| +
|
| + private void checkForBrandColor(final int brandColor) {
|
| + checkNoColorTransition();
|
| + ThreadUtils.postOnUiThread(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + assertEquals("The data provider doesn't contain the right color",
|
| + brandColor, mToolbarDataProvider.getPrimaryColor());
|
| + assertEquals("The toolbar view doesn't contain the right color",
|
| + brandColor, mToolbar.getBackgroundDrawable().getColor());
|
| + assertEquals("The overlay drawable doesn't contain the right color",
|
| + brandColor, mToolbar.getOverlayDrawable().getColor());
|
| + }
|
| + });
|
| + }
|
| +
|
| + private void checkNoColorTransition() {
|
| + try {
|
| + CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
|
| + @Override
|
| + public boolean isSatisfied() {
|
| + return mToolbarDataProvider.getPrimaryColor()
|
| + == mToolbar.getBackgroundDrawable().getColor();
|
| + }
|
| + });
|
| + } catch (InterruptedException e) {
|
| + fail();
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + protected void startMainActivityWithURL(String url) throws InterruptedException {
|
| + super.startMainActivityWithURL(url);
|
| + mToolbar = (ToolbarPhone) getActivity().findViewById(R.id.toolbar);
|
| + mToolbarDataProvider = mToolbar.getToolbarDataProvider();
|
| + }
|
| +
|
| + /**
|
| + * Test for having default primary color working correctly.
|
| + */
|
| + @SmallTest
|
| + @Feature({"Omnibox"})
|
| + public void testNoBrandColor() throws InterruptedException {
|
| + startMainActivityWithURL(getUrlWithBrandColor(""));
|
| + checkForBrandColor(getActivity().getResources().getColor(R.color.default_primary_color));
|
| + }
|
| +
|
| + /**
|
| + * Test for adding a brand color for a url.
|
| + */
|
| + @SmallTest
|
| + @Feature({"Omnibox"})
|
| + public void testBrandColorNoAlpha() throws InterruptedException {
|
| + startMainActivityWithURL(getUrlWithBrandColor(BRAND_COLOR_1));
|
| + checkForBrandColor(Color.parseColor(BRAND_COLOR_1));
|
| + }
|
| +
|
| + /**
|
| + * Test to make sure onLoadStarted doesn't reset the brand color.
|
| + */
|
| + @SmallTest
|
| + @Feature({"Omnibox"})
|
| + public void testBrandColorWithLoadStarted() throws InterruptedException {
|
| + startMainActivityWithURL(getUrlWithBrandColor(BRAND_COLOR_1));
|
| + ThreadUtils.postOnUiThread(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + getActivity().getActivityTab()
|
| + .getChromeWebContentsDelegateAndroid().onLoadStarted();
|
| + }
|
| + });
|
| + checkForBrandColor(Color.parseColor(BRAND_COLOR_1));
|
| + }
|
| +
|
| + /**
|
| + * Test for checking navigating to new brand color updates correctly.
|
| + *
|
| + * Bug: http://crbug.com/474414
|
| + * @SmallTest
|
| + * @Feature({"Omnibox"})
|
| + */
|
| + @FlakyTest
|
| + public void testNavigatingToNewBrandColor() throws InterruptedException {
|
| + startMainActivityWithURL(getUrlWithBrandColor(BRAND_COLOR_1));
|
| + checkForBrandColor(Color.parseColor(BRAND_COLOR_1));
|
| + loadUrl(getUrlWithBrandColor(BRAND_COLOR_2));
|
| + checkForBrandColor(Color.parseColor(BRAND_COLOR_2));
|
| + }
|
| +
|
| + /**
|
| + * Test for interstitial page loads resetting brand color.
|
| + */
|
| + @SmallTest
|
| + @Feature({"Omnibox"})
|
| + public void testBrandColorInterstitial() throws InterruptedException {
|
| + final String brandColorUrl = getUrlWithBrandColor(BRAND_COLOR_1);
|
| + startMainActivityWithURL(brandColorUrl);
|
| + checkForBrandColor(Color.parseColor(BRAND_COLOR_1));
|
| + final InterstitialPageDelegateAndroid delegate =
|
| + new InterstitialPageDelegateAndroid(INTERSTITIAL_HTML);
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + getActivity().getActivityTab().getWebContents().showInterstitialPage(
|
| + brandColorUrl, delegate.getNative());
|
| + }
|
| + });
|
| + assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
|
| + @Override
|
| + public boolean isSatisfied() {
|
| + return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Boolean>() {
|
| + @Override
|
| + public Boolean call() throws Exception {
|
| + return getActivity().getActivityTab().isShowingInterstitialPage();
|
| + }
|
| + });
|
| + }
|
| + }));
|
| + checkForBrandColor(getActivity().getResources().getColor(R.color.default_primary_color));
|
| + }
|
| +}
|
|
|