Chromium Code Reviews| Index: chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesBasicTest.java |
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesBasicTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesBasicTest.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d3e793b1055a16e1b51be9a9128d5a98bb97b286 |
| --- /dev/null |
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesBasicTest.java |
| @@ -0,0 +1,181 @@ |
| +// 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.preferences.privacy; |
| + |
| +import static org.hamcrest.Matchers.containsString; |
| +import static org.hamcrest.Matchers.not; |
| +import static org.junit.Assert.assertThat; |
| + |
| +import android.content.Context; |
| +import android.preference.CheckBoxPreference; |
| +import android.preference.PreferenceScreen; |
| +import android.support.test.filters.SmallTest; |
| + |
| +import org.chromium.base.ThreadUtils; |
| +import org.chromium.base.test.util.RetryOnFailure; |
| +import org.chromium.chrome.browser.ChromeActivity; |
| +import org.chromium.chrome.browser.preferences.Preferences; |
| +import org.chromium.chrome.browser.sync.ProfileSyncService; |
| +import org.chromium.chrome.test.ChromeActivityTestCaseBase; |
| +import org.chromium.chrome.test.util.browser.signin.SigninTestUtil; |
| +import org.chromium.components.sync.AndroidSyncSettings; |
| +import org.chromium.components.sync.test.util.MockSyncContentResolverDelegate; |
| +import org.chromium.net.test.EmbeddedTestServer; |
| + |
| +/** |
| + * Integration tests for ClearBrowsingDataPreferencesBasic. |
| + */ |
| +@RetryOnFailure |
| +public class ClearBrowsingDataPreferencesBasicTest |
| + extends ChromeActivityTestCaseBase<ChromeActivity> { |
| + private static final String GOOGLE_ACCOUNT = "Google Account"; |
| + private static final String OTHER_ACTIVITY = "other activity"; |
| + private static final String SIGNED_IN_DEVICES = "signed-in devices"; |
| + |
| + private EmbeddedTestServer mTestServer; |
| + |
| + public ClearBrowsingDataPreferencesBasicTest() { |
| + super(ChromeActivity.class); |
| + } |
| + |
| + @Override |
| + protected void setUp() throws Exception { |
| + super.setUp(); |
| + mTestServer = EmbeddedTestServer.createAndStartServer(getInstrumentation().getContext()); |
| + } |
| + |
| + @Override |
| + protected void tearDown() throws Exception { |
| + mTestServer.stopAndDestroyServer(); |
| + super.tearDown(); |
| + } |
| + |
| + @Override |
| + public void startMainActivity() throws InterruptedException { |
| + SigninTestUtil.setUpAuthForTest(getInstrumentation()); |
| + startMainActivityOnBlankPage(); |
| + } |
| + |
| + private static class StubProfileSyncService extends ProfileSyncService { |
| + StubProfileSyncService() { |
| + super(); |
| + } |
| + } |
| + |
| + private void setSyncable(boolean syncable) { |
| + Context context = getInstrumentation().getTargetContext(); |
| + MockSyncContentResolverDelegate delegate = new MockSyncContentResolverDelegate(); |
| + delegate.setMasterSyncAutomatically(syncable); |
| + AndroidSyncSettings.overrideForTests(context, delegate); |
| + if (syncable) { |
| + AndroidSyncSettings.enableChromeSync(context); |
| + } else { |
| + AndroidSyncSettings.disableChromeSync(context); |
| + } |
| + |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + ProfileSyncService.overrideForTests(new StubProfileSyncService()); |
| + } |
| + }); |
| + } |
| + |
| + private String getCheckboxSummary(PreferenceScreen screen, String preference) { |
| + CheckBoxPreference checkbox = (CheckBoxPreference) screen.findPreference(preference); |
| + return new StringBuilder(checkbox.getSummary()).toString(); |
| + } |
| + |
| + /** |
| + * Tests that for users who are not signed in, only the general footnote is shown. |
| + */ |
| + @SmallTest |
| + public void testCheckBoxTextNonsigned() throws Exception { |
| + SigninTestUtil.resetSigninState(); |
| + |
| + final Preferences preferences = |
| + startPreferences(ClearBrowsingDataPreferencesBasic.class.getName()); |
| + |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + ClearBrowsingDataPreferencesBasic fragment = |
| + (ClearBrowsingDataPreferencesBasic) preferences.getFragmentForTest(); |
| + PreferenceScreen screen = fragment.getPreferenceScreen(); |
| + |
| + String cookiesSummary = getCheckboxSummary( |
| + screen, ClearBrowsingDataPreferencesBasic.COOKIES_CHECKBOX); |
| + String historySummary = getCheckboxSummary( |
| + screen, ClearBrowsingDataPreferencesBasic.HISTORY_CHECKBOX); |
| + |
| + assertThat(cookiesSummary, not(containsString(GOOGLE_ACCOUNT))); |
| + assertThat(historySummary, not(containsString(OTHER_ACTIVITY))); |
| + assertThat(historySummary, not(containsString(SIGNED_IN_DEVICES))); |
| + } |
| + }); |
| + } |
| + |
| + /** |
| + * Tests that for users who are signed in but don't have sync activated, only the message about |
|
msramek
2017/03/22 14:40:21
This doesn't seem right. The message about other f
dullweber
2017/03/23 10:22:34
As just discussed: I will show the "Other Activity
|
| + * "other activity" is shown. |
| + */ |
| + @SmallTest |
| + public void testCheckBoxTextSigned() throws Exception { |
| + SigninTestUtil.addAndSignInTestAccount(); |
| + setSyncable(false); |
| + |
| + final Preferences preferences = |
| + startPreferences(ClearBrowsingDataPreferencesBasic.class.getName()); |
| + |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + ClearBrowsingDataPreferencesBasic fragment = |
| + (ClearBrowsingDataPreferencesBasic) preferences.getFragmentForTest(); |
| + PreferenceScreen screen = fragment.getPreferenceScreen(); |
| + |
| + String cookiesSummary = getCheckboxSummary( |
| + screen, ClearBrowsingDataPreferencesBasic.COOKIES_CHECKBOX); |
| + String historySummary = getCheckboxSummary( |
| + screen, ClearBrowsingDataPreferencesBasic.HISTORY_CHECKBOX); |
| + |
| + assertThat(cookiesSummary, containsString(GOOGLE_ACCOUNT)); |
| + assertThat(historySummary, containsString(OTHER_ACTIVITY)); |
| + assertThat(historySummary, not(containsString(SIGNED_IN_DEVICES))); |
| + } |
| + }); |
| + } |
| + |
| + /** |
| + * Tests that users who are signed in, and have sync enabled see a message about "other |
| + * activity" and history on "signed in devices". |
| + */ |
| + @SmallTest |
| + public void testCheckBoxTextSignedAndSynced() throws Exception { |
| + SigninTestUtil.addAndSignInTestAccount(); |
| + setSyncable(true); |
| + |
| + final Preferences preferences = |
| + startPreferences(ClearBrowsingDataPreferencesBasic.class.getName()); |
| + |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + ClearBrowsingDataPreferencesBasic fragment = |
| + (ClearBrowsingDataPreferencesBasic) preferences.getFragmentForTest(); |
| + PreferenceScreen screen = fragment.getPreferenceScreen(); |
| + |
| + String cookiesSummary = getCheckboxSummary( |
| + screen, ClearBrowsingDataPreferencesBasic.COOKIES_CHECKBOX); |
| + String historySummary = getCheckboxSummary( |
| + screen, ClearBrowsingDataPreferencesBasic.HISTORY_CHECKBOX); |
| + |
| + assertThat(cookiesSummary, containsString(GOOGLE_ACCOUNT)); |
| + assertThat(historySummary, containsString(OTHER_ACTIVITY)); |
| + assertThat(historySummary, containsString(SIGNED_IN_DEVICES)); |
| + } |
| + }); |
| + } |
| +} |