Chromium Code Reviews| 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..827c6b1d2b6d367812de9c64777a8b6426eede43 |
| --- /dev/null |
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/website/ManageSpaceActivityTest.java |
| @@ -0,0 +1,140 @@ |
| +// 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 that we only clear unimporant sites. |
|
Theresa
2016/05/16 23:45:09
nit: "Tests for ManageSpaceActivity" or something
dmurph
2016/05/18 23:28:00
Done.
|
| + */ |
| +@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(); |
| + CriteriaHelper.pollUiThread(getIsClearButtonEnabledCriteria(manageSpaceActivity)); |
|
Theresa
2016/05/16 23:45:09
nit: split up this big code block with some blank
dmurph
2016/05/18 23:28:00
Done.
|
| + ThreadUtils.runOnUiThreadBlocking(getClickClearRunnable(manageSpaceActivity)); |
| + 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. |
| +} |