Revert "Revert "Add tests for LocationBarLayout.shouldEmphasizeHttpsScheme""
This reverts commit 3c56f8b6ddb3a642b541671a22465d7c29d15ff1.
Original test fails because for Tablet, ToolbarManager.
mShouldUpdateToolbarPrimaryColor is false which prevents
ToolbarManager to update the primary color. So for tablet, https scheme
should be always emphasized if it is not in incognito mode.
Bug: 771559,774979
Change-Id: I69bc09e0d933b0fd46760990030dccb5e7e7de76
Reviewed-on: https://chromium-review.googlesource.com/722129
Commit-Queue: Lei Tian <[email protected]>
Reviewed-by: Ted Choc <[email protected]>
Cr-Commit-Position: refs/heads/master@{#509484}
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
index 6088b30..191ce8d 100644
--- a/chrome/android/java_sources.gni
+++ b/chrome/android/java_sources.gni
@@ -1576,6 +1576,7 @@
"javatests/src/org/chromium/chrome/browser/omaha/RequestGeneratorTest.java",
"javatests/src/org/chromium/chrome/browser/omaha/StringSanitizerTest.java",
"javatests/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelperTest.java",
+ "javatests/src/org/chromium/chrome/browser/omnibox/BottomSheetLocationBarTest.java",
"javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java",
"javatests/src/org/chromium/chrome/browser/omnibox/OmniboxUrlEmphasizerTest.java",
"javatests/src/org/chromium/chrome/browser/omnibox/SuggestionAnswerTest.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/BottomSheetLocationBarTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/BottomSheetLocationBarTest.java
new file mode 100644
index 0000000..c0facdf
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/BottomSheetLocationBarTest.java
@@ -0,0 +1,106 @@
+// Copyright 2017 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.omnibox;
+
+import android.annotation.SuppressLint;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.widget.ImageButton;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.test.util.CallbackHelper;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.Restriction;
+import org.chromium.base.test.util.parameter.CommandLineParameter;
+import org.chromium.base.test.util.parameter.SkipCommandLineParameterization;
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeFeatureList;
+import org.chromium.chrome.browser.ChromeSwitches;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver;
+import org.chromium.chrome.test.BottomSheetTestRule;
+import org.chromium.chrome.test.ChromeActivityTestRule;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.net.test.EmbeddedTestServer;
+import org.chromium.net.test.ServerCertificate;
+import org.chromium.ui.test.util.UiRestriction;
+
+/**
+ * Tests for {@link LocationBarLayout} UI component in the home sheet.
+ */
+@RunWith(ChromeJUnit4ClassRunner.class)
[email protected]({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
+ ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG})
+@CommandLineParameter({"", "disable-features=" + ChromeFeatureList.SPANNABLE_INLINE_AUTOCOMPLETE})
+@Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) // ChromeHome is only enabled on phones
+@SuppressLint("SetTextI18n")
+public class BottomSheetLocationBarTest {
+ @Rule
+ public BottomSheetTestRule mBottomSheetTestRule = new BottomSheetTestRule();
+
+ private EmbeddedTestServer mTestServer;
+
+ private static final String THEME_COLOR_TEST_PAGE =
+ "/chrome/test/data/android/theme_color_test.html";
+
+ private final CallbackHelper mDidThemeColorChangedCallbackHelper = new CallbackHelper();
+ private final CallbackHelper mOnSSLStateUpdatedCallbackHelper = new CallbackHelper();
+
+ @Before
+ public void setUp() throws Exception {
+ mBottomSheetTestRule.startMainActivityOnBlankPage();
+ new TabModelSelectorTabObserver(mBottomSheetTestRule.getActivity().getTabModelSelector()) {
+ @Override
+ public void onDidChangeThemeColor(Tab tab, int color) {
+ mDidThemeColorChangedCallbackHelper.notifyCalled();
+ }
+ @Override
+ public void onSSLStateUpdated(Tab tab) {
+ mOnSSLStateUpdatedCallbackHelper.notifyCalled();
+ }
+ };
+ mTestServer = EmbeddedTestServer.createAndStartHTTPSServer(
+ InstrumentationRegistry.getInstrumentation().getContext(),
+ ServerCertificate.CERT_OK);
+ }
+
+ @After
+ public void tearDown() {
+ mTestServer.stopAndDestroyServer();
+ }
+
+ /**
+ * Test whether the color of the Location bar is correct for HTTPS scheme.
+ */
+ @Test
+ @SmallTest
+ @SkipCommandLineParameterization
+ public void testHttpsLocationBarColor() throws Exception {
+ final String testHttpsUrl = mTestServer.getURL(THEME_COLOR_TEST_PAGE);
+
+ mBottomSheetTestRule.loadUrl(testHttpsUrl);
+ mDidThemeColorChangedCallbackHelper.waitForCallback(0);
+ mOnSSLStateUpdatedCallbackHelper.waitForCallback(0);
+
+ LocationBarLayout locationBarLayout =
+ (LocationBarLayout) mBottomSheetTestRule.getActivity().findViewById(
+ R.id.location_bar);
+ ImageButton securityButton =
+ (ImageButton) mBottomSheetTestRule.getActivity().findViewById(R.id.security_button);
+
+ boolean securityIcon = locationBarLayout.isSecurityButtonShown();
+ Assert.assertTrue("Omnibox should have a Security icon", securityIcon);
+ Assert.assertEquals("security_button with wrong resource-id", R.id.security_button,
+ securityButton.getId());
+
+ Assert.assertTrue(locationBarLayout.shouldEmphasizeHttpsScheme());
+ }
+}
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java
index 9ffbbef..8b67f49b 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java
@@ -28,6 +28,7 @@
import org.junit.runner.RunWith;
import org.chromium.base.ThreadUtils;
+import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.EnormousTest;
import org.chromium.base.test.util.Feature;
@@ -42,6 +43,10 @@
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.omnibox.AutocompleteController.OnSuggestionsReceivedListener;
import org.chromium.chrome.browser.omnibox.LocationBarLayout.OmniboxSuggestionsList;
+import org.chromium.chrome.browser.tab.EmptyTabObserver;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tab.TabObserver;
+import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver;
import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.ChromeTabUtils;
@@ -688,10 +693,19 @@
@Test
@MediumTest
@SkipCommandLineParameterization
- public void testSecurityIconOnHTTPS() throws InterruptedException {
+ public void testSecurityIconOnHTTPS() throws Exception {
EmbeddedTestServer httpsTestServer = EmbeddedTestServer.createAndStartHTTPSServer(
InstrumentationRegistry.getInstrumentation().getContext(),
ServerCertificate.CERT_OK);
+ CallbackHelper onSSLStateUpdatedCallbackHelper = new CallbackHelper();
+ TabObserver observer = new EmptyTabObserver() {
+ @Override
+ public void onSSLStateUpdated(Tab tab) {
+ onSSLStateUpdatedCallbackHelper.notifyCalled();
+ }
+ };
+ mActivityTestRule.getActivity().getActivityTab().addObserver(observer);
+
try {
final String testHttpsUrl =
httpsTestServer.getURL("/chrome/test/data/android/omnibox/one.html");
@@ -700,6 +714,8 @@
R.id.security_button);
mActivityTestRule.loadUrl(testHttpsUrl);
+ onSSLStateUpdatedCallbackHelper.waitForCallback(0);
+
final LocationBarLayout locationBar =
(LocationBarLayout) mActivityTestRule.getActivity().findViewById(
R.id.location_bar);
@@ -715,6 +731,58 @@
}
}
+ /**
+ * Test whether the color of the Location bar is correct for HTTPS scheme.
+ */
+ @Test
+ @SmallTest
+ @SkipCommandLineParameterization
+ public void testHttpsLocationBarColor() throws Exception {
+ EmbeddedTestServer testServer = EmbeddedTestServer.createAndStartHTTPSServer(
+ InstrumentationRegistry.getInstrumentation().getContext(),
+ ServerCertificate.CERT_OK);
+ CallbackHelper didThemeColorChangedCallbackHelper = new CallbackHelper();
+ CallbackHelper onSSLStateUpdatedCallbackHelper = new CallbackHelper();
+ new TabModelSelectorTabObserver(mActivityTestRule.getActivity().getTabModelSelector()) {
+ @Override
+ public void onDidChangeThemeColor(Tab tab, int color) {
+ didThemeColorChangedCallbackHelper.notifyCalled();
+ }
+ @Override
+ public void onSSLStateUpdated(Tab tab) {
+ onSSLStateUpdatedCallbackHelper.notifyCalled();
+ }
+ };
+
+ try {
+ final String testHttpsUrl =
+ testServer.getURL("/chrome/test/data/android/theme_color_test.html");
+
+ mActivityTestRule.loadUrl(testHttpsUrl);
+ didThemeColorChangedCallbackHelper.waitForCallback(0);
+ onSSLStateUpdatedCallbackHelper.waitForCallback(0);
+
+ LocationBarLayout locationBarLayout =
+ (LocationBarLayout) mActivityTestRule.getActivity().findViewById(
+ R.id.location_bar);
+ ImageButton securityButton = (ImageButton) mActivityTestRule.getActivity().findViewById(
+ R.id.security_button);
+
+ boolean securityIcon = locationBarLayout.isSecurityButtonShown();
+ Assert.assertTrue("Omnibox should have a Security icon", securityIcon);
+ Assert.assertEquals("security_button with wrong resource-id", R.id.security_button,
+ securityButton.getId());
+
+ if (DeviceFormFactor.isTablet()) {
+ Assert.assertTrue(locationBarLayout.shouldEmphasizeHttpsScheme());
+ } else {
+ Assert.assertFalse(locationBarLayout.shouldEmphasizeHttpsScheme());
+ }
+ } finally {
+ testServer.stopAndDestroyServer();
+ }
+ }
+
@Test
@SmallTest
@RetryOnFailure