Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java

Issue 1465363002: [Storage] Android - ManageSpace UI, Important Origins, and CBD Dialog (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added row layout Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 1ff626ff83ec5e678d115d95802b26b973f10b2c..ce4828ef36c4bef36bdd015d51e9c66669128d60 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
@@ -4,6 +4,7 @@
package org.chromium.chrome.browser.preferences.privacy;
+import android.os.Environment;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceScreen;
@@ -12,9 +13,12 @@ import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
import android.text.SpannableString;
+import android.widget.ListView;
import org.chromium.base.ThreadUtils;
+import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.chrome.browser.ChromeActivity;
+import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.ShortcutHelper;
import org.chromium.chrome.browser.preferences.ButtonPreference;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
@@ -26,7 +30,10 @@ import org.chromium.chrome.test.ChromeActivityTestCaseBase;
import org.chromium.chrome.test.util.browser.signin.SigninTestUtil;
import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper;
+import org.chromium.net.GURLUtils;
+import org.chromium.net.test.EmbeddedTestServer;
+import java.net.URL;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
@@ -37,7 +44,7 @@ import java.util.Set;
*/
public class ClearBrowsingDataPreferencesTest
extends ChromeActivityTestCaseBase<ChromeActivity> {
-
+ private EmbeddedTestServer mTestServer;
private boolean mCallbackCalled;
private class CallbackCriteria extends Criteria {
@@ -55,6 +62,19 @@ public class ClearBrowsingDataPreferencesTest
}
}
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mTestServer = EmbeddedTestServer.createAndStartFileServer(
+ getInstrumentation().getContext(), Environment.getExternalStorageDirectory());
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ mTestServer.stopAndDestroyServer();
+ super.tearDown();
+ }
+
public ClearBrowsingDataPreferencesTest() {
super(ChromeActivity.class);
}
@@ -65,6 +85,18 @@ public class ClearBrowsingDataPreferencesTest
startMainActivityOnBlankPage();
}
+ /** Waits for the progress dialog to disappear from the given CBD preference. */
+ private Criteria getWaitForProgressCompleteCriteria(final Preferences preferences) {
+ return new Criteria() {
+ @Override
+ public boolean isSatisfied() {
+ ClearBrowsingDataPreferences fragment =
+ (ClearBrowsingDataPreferences) preferences.getFragmentForTest();
+ return fragment.getProgressDialog() == null;
+ }
+ };
+ }
+
/**
* Tests that web apps are cleared when the "cookies and site data" option is selected.
*/
@@ -95,14 +127,7 @@ public class ClearBrowsingDataPreferencesTest
clearButton.getOnPreferenceClickListener().onPreferenceClick(clearButton);
}
});
- CriteriaHelper.pollUiThread(new Criteria() {
- @Override
- public boolean isSatisfied() {
- ClearBrowsingDataPreferences fragment =
- (ClearBrowsingDataPreferences) preferences.getFragmentForTest();
- return fragment.getProgressDialog() == null;
- }
- });
+ CriteriaHelper.pollUiThread(getWaitForProgressCompleteCriteria(preferences));
WebappRegistry.getRegisteredWebappIds(getActivity(), new WebappRegistry.FetchCallback() {
@Override
@@ -157,14 +182,7 @@ public class ClearBrowsingDataPreferencesTest
clearButton.getOnPreferenceClickListener().onPreferenceClick(clearButton);
}
});
- CriteriaHelper.pollUiThread(new Criteria() {
- @Override
- public boolean isSatisfied() {
- ClearBrowsingDataPreferences fragment =
- (ClearBrowsingDataPreferences) preferences.getFragmentForTest();
- return fragment.getProgressDialog() == null;
- }
- });
+ CriteriaHelper.pollUiThread(getWaitForProgressCompleteCriteria(preferences));
// The web app should still exist in the registry.
WebappRegistry.getRegisteredWebappIds(getActivity(), new WebappRegistry.FetchCallback() {
@@ -247,14 +265,7 @@ public class ClearBrowsingDataPreferencesTest
}
});
- CriteriaHelper.pollUiThread(new Criteria() {
- @Override
- public boolean isSatisfied() {
- ClearBrowsingDataPreferences fragment =
- (ClearBrowsingDataPreferences) preferences.getFragmentForTest();
- return fragment.getProgressDialog() == null;
- }
- });
+ CriteriaHelper.pollUiThread(getWaitForProgressCompleteCriteria(preferences));
}
/**
@@ -447,6 +458,164 @@ public class ClearBrowsingDataPreferencesTest
CriteriaHelper.pollUiThread(new PreferenceScreenClosedCriterion(preferences3));
}
+ /** This presses the 'clear' button on the root preference page. */
+ private Runnable getPressClearRunnable(final Preferences preferences) {
+ return new Runnable() {
+ @Override
+ public void run() {
+ ClearBrowsingDataPreferences fragment =
+ (ClearBrowsingDataPreferences) preferences.getFragmentForTest();
+ PreferenceScreen screen = fragment.getPreferenceScreen();
+ ButtonPreference clearButton = (ButtonPreference) screen.findPreference(
+ ClearBrowsingDataPreferences.PREF_CLEAR_BUTTON);
+ assertTrue(clearButton.isEnabled());
+ clearButton.getOnPreferenceClickListener().onPreferenceClick(clearButton);
+ }
+ };
+ }
+
+ /** This presses the clear button in the important sites dialog */
+ private Runnable getPressButtonInImportantDialogRunnable(
+ final Preferences preferences, final int whichButton) {
+ return new Runnable() {
+ @Override
+ public void run() {
+ ClearBrowsingDataPreferences fragment =
+ (ClearBrowsingDataPreferences) preferences.getFragmentForTest();
+ assertNotNull(fragment);
+ ConfirmImportantSitesDialogFragment dialog =
+ fragment.getImportantSitesDialogFragment();
+ ((AlertDialog) dialog.getDialog()).getButton(whichButton).performClick();
+ }
+ };
+ }
+
+ /**
+ * This criteria makes sure the important dialog fragment is shown, and the given number of
+ * important sites are shown.
+ */
+ private Criteria getImportantDialogShownCriteria(
+ final Preferences preferences, final int numImportantSites) {
+ return new Criteria() {
+ @Override
+ public boolean isSatisfied() {
+ ClearBrowsingDataPreferences fragment =
+ (ClearBrowsingDataPreferences) preferences.getFragmentForTest();
+ assertNotNull(fragment);
+ if (fragment.getImportantSitesDialogFragment() == null
+ || !fragment.getImportantSitesDialogFragment().getDialog().isShowing()) {
+ return false;
+ }
+ ListView sitesList = fragment.getImportantSitesDialogFragment().getSitesList();
+ return sitesList.getAdapter().getCount() == numImportantSites;
+ }
+ };
+ }
+
+ /**
+ * Tests that the important sites dialog is shown, and we can successfully uncheck options and
+ * click clear.
+ */
+ @CommandLineFlags.Add({"enable-features=ImportantSitesInCBD", "enable-site-engagement"})
+ @MediumTest
+ public void testImportantSitesDialog() throws Exception {
+ // Sign in.
+ SigninTestUtil.get().addAndSignInTestAccount();
+ assertTrue(ChromeFeatureList.isEnabled(ChromeFeatureList.IMPORTANT_SITES_IN_CBD));
+
+ final String cookies_url = mTestServer.getURL("/chrome/test/data/android/cookie.html");
+ final String server_origin = GURLUtils.getOrigin(cookies_url);
+ final String server_host = new URL(cookies_url).getHost();
+
+ // First mark our origins as important.
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ PrefServiceBridge.markOriginAsImportant("http://www.facebook.com");
+ PrefServiceBridge.markOriginAsImportant(GURLUtils.getOrigin(server_origin));
+ }
+ });
+
+ // Load the page and clear any set cookies.
+ loadUrl(cookies_url + "#clear");
+ assertEquals("\"\"", runJavaScriptCodeInCurrentTab("getCookie()"));
+ runJavaScriptCodeInCurrentTab("setCookie()");
+ assertEquals("\"Foo=Bar\"", runJavaScriptCodeInCurrentTab("getCookie()"));
+
+ // Load the page again and ensure the cookie still is set.
+ loadUrl(cookies_url);
+ assertEquals("\"Foo=Bar\"", runJavaScriptCodeInCurrentTab("getCookie()"));
+
+ Preferences preferences = startPreferences(ClearBrowsingDataPreferences.class.getName());
+
+ // First test that we clear the cookies by default.
+
+ // Clear in root preference.
+ ThreadUtils.runOnUiThreadBlocking(getPressClearRunnable(preferences));
+ // Check that the important sites dialog is shown, and the list is visible.
+ CriteriaHelper.pollUiThread(getImportantDialogShownCriteria(preferences, 2));
+ // Clear in important dialog.
+ ThreadUtils.runOnUiThreadBlocking(
+ getPressButtonInImportantDialogRunnable(preferences, AlertDialog.BUTTON_POSITIVE));
+ CriteriaHelper.pollUiThread(getWaitForProgressCompleteCriteria(preferences));
+ loadUrl(cookies_url);
+ assertEquals("\"\"", runJavaScriptCodeInCurrentTab("getCookie()"));
+
+ // Next, test that we can cancel, then deselect the origin, and the cookie will be there.
+
+ // Re-add the important sites, as our engagement settings have been cleared.
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
Theresa 2016/05/12 20:22:41 nit: extract this into a helper method.
dmurph 2016/05/13 23:46:23 Done.
+ @Override
+ public void run() {
+ PrefServiceBridge.markOriginAsImportant("http://www.facebook.com");
+ PrefServiceBridge.markOriginAsImportant(server_origin);
+ }
+ });
+
+ runJavaScriptCodeInCurrentTab("setCookie()");
+ preferences = startPreferences(ClearBrowsingDataPreferences.class.getName());
+ final Preferences finalPreferences = preferences;
+ ThreadUtils.runOnUiThreadBlocking(getPressClearRunnable(preferences));
+ // Check that the important sites dialog is shown, and the list is visible.
+ CriteriaHelper.pollUiThread(getImportantDialogShownCriteria(preferences, 2));
+ // Press the cancel button first.
+ ThreadUtils.runOnUiThreadBlocking(
+ getPressButtonInImportantDialogRunnable(preferences, AlertDialog.BUTTON_NEGATIVE));
+ // Uncheck the first item (our internal web server).
+ ThreadUtils.runOnUiThreadBlocking(getPressClearRunnable(preferences));
+ CriteriaHelper.pollUiThread(getImportantDialogShownCriteria(preferences, 2));
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ ClearBrowsingDataPreferences fragment =
+ (ClearBrowsingDataPreferences) finalPreferences.getFragmentForTest();
+ assertNotNull(fragment);
+ ListView sitesList = fragment.getImportantSitesDialogFragment().getSitesList();
+ sitesList.performItemClick(
+ sitesList.getChildAt(0), 0, sitesList.getAdapter().getItemId(0));
+ }
+ });
+ // Check that our server origin is in the set of deselected domains.
+ CriteriaHelper.pollUiThread(new Criteria() {
+ @Override
+ public boolean isSatisfied() {
+ ClearBrowsingDataPreferences fragment =
+ (ClearBrowsingDataPreferences) finalPreferences.getFragmentForTest();
+ assertNotNull(fragment);
+ ConfirmImportantSitesDialogFragment dialog =
+ fragment.getImportantSitesDialogFragment();
+ return dialog.getDeselectedDomains().contains(server_host);
+ }
+ });
+ // Click the clear button.
+ ThreadUtils.runOnUiThreadBlocking(
+ getPressButtonInImportantDialogRunnable(preferences, AlertDialog.BUTTON_POSITIVE));
+
+ CriteriaHelper.pollUiThread(getWaitForProgressCompleteCriteria(preferences));
+ // And check we didn't clear our cookies.
+ assertEquals("\"Foo=Bar\"", runJavaScriptCodeInCurrentTab("getCookie()"));
+ }
+
private void setDataTypesToClear(final List<DialogOption> typesToClear) {
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override

Powered by Google App Engine
This is Rietveld 408576698