Chromium Code Reviews| Index: chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java |
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java |
| index c470899f85290f4680087178f32a672406bfef37..bc20b20ec72ea5c8eb22367489f423642f2630ab 100644 |
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java |
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java |
| @@ -7,6 +7,8 @@ package org.chromium.chrome.browser.preferences.privacy; |
| import android.preference.CheckBoxPreference; |
| import android.preference.Preference; |
| import android.preference.PreferenceScreen; |
| +import android.support.v7.app.AlertDialog; |
| +import android.test.suitebuilder.annotation.LargeTest; |
| import android.test.suitebuilder.annotation.MediumTest; |
| import android.test.suitebuilder.annotation.SmallTest; |
| import android.text.SpannableString; |
| @@ -316,6 +318,116 @@ public class ClearBrowsingDataPreferencesTest |
| }); |
| } |
| + static class OpenPreferencesEnableDialogAndClickClearRunnable implements Runnable { |
|
gone
2016/04/07 21:05:27
Javadocs for classes and non-@Overriden public fun
msramek
2016/04/08 11:20:43
Done.
|
| + final Preferences mPreferences; |
| + |
| + public OpenPreferencesEnableDialogAndClickClearRunnable(Preferences preferences) { |
| + super(); |
| + mPreferences = preferences; |
| + } |
| + |
| + @Override |
| + public void run() { |
| + ClearBrowsingDataPreferences fragment = |
| + (ClearBrowsingDataPreferences) mPreferences.getFragmentForTest(); |
| + PreferenceScreen screen = fragment.getPreferenceScreen(); |
| + |
| + // Enable the dialog and click the "Clear" button. |
| + fragment.enableDialogAboutOtherFormsOfBrowsingHistory(); |
| + ButtonPreference clearButton = (ButtonPreference) screen.findPreference( |
| + ClearBrowsingDataPreferences.PREF_CLEAR_BUTTON); |
| + assertTrue(clearButton.isEnabled()); |
| + clearButton.getOnPreferenceClickListener().onPreferenceClick(clearButton); |
| + } |
| + } |
| + |
| + static class PreferenceScreenClosedCriterion extends Criteria { |
| + final Preferences mPreferences; |
| + |
| + public PreferenceScreenClosedCriterion(Preferences preferences) { |
| + super(); |
|
gone
2016/04/07 21:05:27
Shouldn't need to call super() in these these two
msramek
2016/04/08 11:20:43
Done.
|
| + mPreferences = preferences; |
| + } |
| + |
| + @Override |
| + public boolean isSatisfied() { |
| + ClearBrowsingDataPreferences fragment = |
| + (ClearBrowsingDataPreferences) mPreferences.getFragmentForTest(); |
| + return fragment == null || !fragment.isVisible(); |
| + } |
| + } |
| + |
| + /** |
| + * Tests that if the dialog about other forms of browsing history is enabled, it will be shown |
| + * after the deletion completes, if and only if browsing history was checked for deletion |
| + * and it has not been shown before. |
| + */ |
| + @LargeTest |
| + public void testDialogAboutOtherFormsOfBrowsingHistory() throws Exception { |
| + // Sign in. |
| + SigninTestUtil.get().addAndSignInTestAccount(); |
| + OtherFormsOfHistoryDialogFragment.clearShownPreferenceForTesting(getActivity()); |
| + |
| + // History is not selected. We still need to select some other datatype, otherwise the |
| + // "Clear" button won't be enabled. |
| + setDataTypesToClear(Arrays.asList(DialogOption.CLEAR_CACHE)); |
| + final Preferences preferences1 = |
| + startPreferences(ClearBrowsingDataPreferences.class.getName()); |
| + |
|
gone
2016/04/07 21:05:27
nit: remove newline to be consistent with preferen
msramek
2016/04/08 11:20:43
Done.
|
| + ThreadUtils.runOnUiThreadBlocking( |
| + new OpenPreferencesEnableDialogAndClickClearRunnable(preferences1)); |
| + |
| + // The dialog about other forms of history is not shown. The Clear Browsing Data preferences |
| + // is closed as usual. |
| + CriteriaHelper.pollUiThread(new PreferenceScreenClosedCriterion(preferences1)); |
| + |
| + // Reopen Clear Browsing Data preferences, this time with history selected for clearing. |
| + setDataTypesToClear(Arrays.asList(DialogOption.CLEAR_HISTORY)); |
| + final Preferences preferences2 = |
| + startPreferences(ClearBrowsingDataPreferences.class.getName()); |
| + |
|
gone
2016/04/07 21:05:27
nit: ditto
msramek
2016/04/08 11:20:43
Done.
|
| + ThreadUtils.runOnUiThreadBlocking( |
| + new OpenPreferencesEnableDialogAndClickClearRunnable(preferences2)); |
| + |
| + // The dialog about other forms of history should now be shown. |
| + CriteriaHelper.pollUiThread(new Criteria() { |
| + @Override |
| + public boolean isSatisfied() { |
| + ClearBrowsingDataPreferences fragment = |
| + (ClearBrowsingDataPreferences) preferences2.getFragmentForTest(); |
| + OtherFormsOfHistoryDialogFragment dialog = |
| + fragment.getDialogAboutOtherFormsOfBrowsingHistory(); |
| + return dialog != null; |
| + } |
| + }); |
| + |
| + // Close that dialog. |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + ClearBrowsingDataPreferences fragment = |
| + (ClearBrowsingDataPreferences) preferences2.getFragmentForTest(); |
| + fragment.getDialogAboutOtherFormsOfBrowsingHistory().onClick( |
| + null, AlertDialog.BUTTON_POSITIVE); |
| + } |
| + }); |
| + |
| + // That should the preference screen as well. |
|
gone
2016/04/07 21:05:27
should close?
msramek
2016/04/08 11:20:43
Done.
|
| + CriteriaHelper.pollUiThread(new PreferenceScreenClosedCriterion(preferences2)); |
| + |
| + // Reopen Clear Browsing Data preferences and clear history once again. |
| + setDataTypesToClear(Arrays.asList(DialogOption.CLEAR_HISTORY)); |
| + final Preferences preferences3 = |
| + startPreferences(ClearBrowsingDataPreferences.class.getName()); |
| + ThreadUtils.runOnUiThreadBlocking( |
| + new OpenPreferencesEnableDialogAndClickClearRunnable(preferences3)); |
| + |
| + // The dialog about other forms of browsing history is still enabled, and history has been |
| + // selected for deletion. However, the dialog has already been shown before, and therefore |
| + // we won't show it again. Expect that the preference screen closes. |
| + CriteriaHelper.pollUiThread(new PreferenceScreenClosedCriterion(preferences3)); |
| + } |
| + |
| private void setDataTypesToClear(final List<DialogOption> typesToClear) { |
| ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| @Override |