| 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
|
| + * "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));
|
| + }
|
| + });
|
| + }
|
| +}
|
|
|