Index: chrome/android/javatests/src/org/chromium/chrome/browser/preferences/website/ManageSpaceActivityTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/website/ManageSpaceActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/website/ManageSpaceActivityTest.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a0e7e606378fe8930a58f96ac28b48652de98621 |
--- /dev/null |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/website/ManageSpaceActivityTest.java |
@@ -0,0 +1,142 @@ |
+// Copyright 2016 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.website; |
+ |
+import android.annotation.TargetApi; |
+import android.content.Intent; |
+import android.os.Build; |
+import android.os.Environment; |
+import android.support.v7.app.AlertDialog; |
+import android.test.suitebuilder.annotation.MediumTest; |
+import android.test.suitebuilder.annotation.SmallTest; |
+ |
+import org.chromium.base.ThreadUtils; |
+import org.chromium.base.test.util.CommandLineFlags; |
+import org.chromium.chrome.browser.ChromeActivity; |
+import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
+import org.chromium.chrome.test.ChromeActivityTestCaseBase; |
+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; |
+ |
+/** |
+ * Tests for ManageSpaceActivity. |
+ */ |
+@TargetApi(Build.VERSION_CODES.KITKAT) |
+@CommandLineFlags.Add({"enable-site-engagement"}) |
+public class ManageSpaceActivityTest extends ChromeActivityTestCaseBase<ChromeActivity> { |
+ private EmbeddedTestServer mTestServer; |
+ |
+ public ManageSpaceActivityTest() { |
+ super(ChromeActivity.class); |
+ } |
+ |
+ @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(); |
+ } |
+ |
+ @Override |
+ public void startMainActivity() throws InterruptedException { |
+ startMainActivityOnBlankPage(); |
+ } |
+ |
+ private ManageSpaceActivity startManageSpaceActivity() { |
+ Intent intent = |
+ new Intent(getInstrumentation().getTargetContext(), ManageSpaceActivity.class); |
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); |
+ return (ManageSpaceActivity) getInstrumentation().startActivitySync(intent); |
+ } |
+ |
+ public Criteria getIsClearButtonEnabledCriteria(final ManageSpaceActivity activity) { |
+ return new Criteria() { |
+ @Override |
+ public boolean isSatisfied() { |
+ return activity.getClearUnimportantButton().isEnabled(); |
+ } |
+ }; |
+ } |
+ |
+ public Runnable getClickClearRunnable(final ManageSpaceActivity activity) { |
+ return new Runnable() { |
+ @Override |
+ public void run() { |
+ activity.onClick(activity.getClearUnimportantButton()); |
+ } |
+ }; |
+ } |
+ |
+ public Criteria getIsDialogShownCriteria(final ManageSpaceActivity activity) { |
+ return new Criteria() { |
+ @Override |
+ public boolean isSatisfied() { |
+ return activity.getUnimportantConfirmDialog().isShowing(); |
+ } |
+ }; |
+ } |
+ |
+ public Runnable getPressClearRunnable(final AlertDialog dialog) { |
+ return new Runnable() { |
+ @Override |
+ public void run() { |
+ dialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick(); |
+ } |
+ }; |
+ } |
+ |
+ @SmallTest |
+ public void testLaunchActivity() { |
+ startManageSpaceActivity(); |
+ } |
+ |
+ @MediumTest |
+ public void testClearUnimportantOnly() throws Exception { |
+ final String cookies_url = |
+ mTestServer.getURL("/chrome/test/data/android/storage_persistance.html"); |
+ final String server_origin = GURLUtils.getOrigin(cookies_url); |
+ |
+ loadUrl(cookies_url + "#clear"); |
+ assertEquals("false", runJavaScriptCodeInCurrentTab("hasAllStorage()")); |
+ runJavaScriptCodeInCurrentTab("setStorage()"); |
+ assertEquals("true", runJavaScriptCodeInCurrentTab("hasAllStorage()")); |
+ loadUrl("about:blank"); |
+ |
+ // Now we set the origin as important, and check that we don't clear it. |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ PrefServiceBridge.markOriginAsImportantForTesting(server_origin); |
+ } |
+ }); |
+ |
+ ManageSpaceActivity manageSpaceActivity = startManageSpaceActivity(); |
+ // Click 'clear' in the CBD screen. |
+ CriteriaHelper.pollUiThread(getIsClearButtonEnabledCriteria(manageSpaceActivity)); |
+ ThreadUtils.runOnUiThreadBlocking(getClickClearRunnable(manageSpaceActivity)); |
+ // Press 'clear' in our dialog. |
+ CriteriaHelper.pollUiThread(getIsDialogShownCriteria(manageSpaceActivity)); |
+ ThreadUtils.runOnUiThreadBlocking( |
+ getPressClearRunnable(manageSpaceActivity.getUnimportantConfirmDialog())); |
+ CriteriaHelper.pollUiThread( |
+ getIsClearButtonEnabledCriteria(manageSpaceActivity), 5000, 500); |
+ manageSpaceActivity.finish(); |
+ |
+ loadUrl(cookies_url); |
+ assertEquals("true", runJavaScriptCodeInCurrentTab("hasAllStorage()")); |
+ } |
+ |
+ // TODO(dmurph): Test the other buttons. One should go to the site storage list, and the other |
+ // should reset all app data. |
+} |