OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.preferences.privacy; | 5 package org.chromium.chrome.browser.preferences.privacy; |
6 | 6 |
7 import android.preference.CheckBoxPreference; | 7 import android.preference.CheckBoxPreference; |
8 import android.preference.Preference; | 8 import android.preference.Preference; |
9 import android.preference.PreferenceScreen; | 9 import android.preference.PreferenceScreen; |
10 import android.test.suitebuilder.annotation.MediumTest; | 10 import android.test.suitebuilder.annotation.MediumTest; |
11 | 11 |
12 import org.chromium.base.ThreadUtils; | 12 import org.chromium.base.ThreadUtils; |
13 import org.chromium.chrome.browser.ChromeActivity; | 13 import org.chromium.chrome.browser.ChromeActivity; |
14 import org.chromium.chrome.browser.preferences.ButtonPreference; | 14 import org.chromium.chrome.browser.preferences.ButtonPreference; |
15 import org.chromium.chrome.browser.preferences.PrefServiceBridge; | 15 import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
16 import org.chromium.chrome.browser.preferences.Preferences; | 16 import org.chromium.chrome.browser.preferences.Preferences; |
17 import org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataPreferen
ces.DialogOption; | 17 import org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataPreferen
ces.DialogOption; |
| 18 import org.chromium.chrome.browser.webapps.WebappDataStorage; |
18 import org.chromium.chrome.browser.webapps.WebappRegistry; | 19 import org.chromium.chrome.browser.webapps.WebappRegistry; |
19 import org.chromium.chrome.test.ChromeActivityTestCaseBase; | 20 import org.chromium.chrome.test.ChromeActivityTestCaseBase; |
20 import org.chromium.content.browser.test.util.Criteria; | 21 import org.chromium.content.browser.test.util.Criteria; |
21 import org.chromium.content.browser.test.util.CriteriaHelper; | 22 import org.chromium.content.browser.test.util.CriteriaHelper; |
22 | 23 |
23 import java.util.Arrays; | 24 import java.util.Arrays; |
24 import java.util.HashSet; | 25 import java.util.HashSet; |
25 import java.util.List; | 26 import java.util.List; |
26 import java.util.Set; | 27 import java.util.Set; |
27 | 28 |
(...skipping 12 matching lines...) Expand all Loading... |
40 @Override | 41 @Override |
41 public void startMainActivity() throws InterruptedException { | 42 public void startMainActivity() throws InterruptedException { |
42 startMainActivityOnBlankPage(); | 43 startMainActivityOnBlankPage(); |
43 } | 44 } |
44 | 45 |
45 /** | 46 /** |
46 * Tests that web apps are cleared when the "cookies and site data" option i
s selected. | 47 * Tests that web apps are cleared when the "cookies and site data" option i
s selected. |
47 */ | 48 */ |
48 @MediumTest | 49 @MediumTest |
49 public void testClearingSiteDataClearsWebapps() throws Exception { | 50 public void testClearingSiteDataClearsWebapps() throws Exception { |
50 WebappRegistry.registerWebapp(getActivity(), "first"); | 51 WebappRegistry.registerWebapp(getActivity(), "first", "https://www.googl
e.com"); |
51 WebappRegistry.getRegisteredWebappIds(getActivity(), new WebappRegistry.
FetchCallback() { | 52 WebappRegistry.getRegisteredWebappIds(getActivity(), new WebappRegistry.
FetchCallback() { |
52 @Override | 53 @Override |
53 public void onWebappIdsRetrieved(Set<String> ids) { | 54 public void onWebappIdsRetrieved(Set<String> ids) { |
54 assertEquals(new HashSet<String>(Arrays.asList("first")), ids); | 55 assertEquals(new HashSet<String>(Arrays.asList("first")), ids); |
55 mCallbackCalled = true; | 56 mCallbackCalled = true; |
56 } | 57 } |
57 }); | 58 }); |
58 CriteriaHelper.pollUiThread(new Criteria() { | 59 CriteriaHelper.pollUiThread(new Criteria() { |
59 @Override | 60 @Override |
60 public boolean isSatisfied() { | 61 public boolean isSatisfied() { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 }); | 97 }); |
97 CriteriaHelper.pollUiThread(new Criteria() { | 98 CriteriaHelper.pollUiThread(new Criteria() { |
98 @Override | 99 @Override |
99 public boolean isSatisfied() { | 100 public boolean isSatisfied() { |
100 return mCallbackCalled; | 101 return mCallbackCalled; |
101 } | 102 } |
102 }); | 103 }); |
103 } | 104 } |
104 | 105 |
105 /** | 106 /** |
| 107 * Tests that web app scopes and last launch times are cleared when the "his
tory" option is |
| 108 * selected. However, the web app is not removed from the registry. |
| 109 */ |
| 110 @MediumTest |
| 111 public void testClearingHistoryClearsWebappScopesAndLaunchTimes() throws Exc
eption { |
| 112 WebappRegistry.registerWebapp(getActivity(), "first", "https://www.googl
e.com"); |
| 113 WebappRegistry.getRegisteredWebappIds(getActivity(), new WebappRegistry.
FetchCallback() { |
| 114 @Override |
| 115 public void onWebappIdsRetrieved(Set<String> ids) { |
| 116 assertEquals(new HashSet<String>(Arrays.asList("first")), ids); |
| 117 mCallbackCalled = true; |
| 118 } |
| 119 }); |
| 120 CriteriaHelper.pollUiThread(new Criteria() { |
| 121 @Override |
| 122 public boolean isSatisfied() { |
| 123 return mCallbackCalled; |
| 124 } |
| 125 }); |
| 126 mCallbackCalled = false; |
| 127 |
| 128 setDataTypesToClear(Arrays.asList(DialogOption.CLEAR_HISTORY)); |
| 129 final Preferences preferences = |
| 130 startPreferences(ClearBrowsingDataPreferences.class.getName()); |
| 131 |
| 132 ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| 133 @Override |
| 134 public void run() { |
| 135 ClearBrowsingDataPreferences fragment = |
| 136 (ClearBrowsingDataPreferences) preferences.getFragmentFo
rTest(); |
| 137 PreferenceScreen screen = fragment.getPreferenceScreen(); |
| 138 ButtonPreference clearButton = (ButtonPreference) screen.findPre
ference( |
| 139 ClearBrowsingDataPreferences.PREF_CLEAR_BUTTON); |
| 140 clearButton.getOnPreferenceClickListener().onPreferenceClick(cle
arButton); |
| 141 } |
| 142 }); |
| 143 CriteriaHelper.pollUiThread(new Criteria() { |
| 144 @Override |
| 145 public boolean isSatisfied() { |
| 146 ClearBrowsingDataPreferences fragment = |
| 147 (ClearBrowsingDataPreferences) preferences.getFragmentFo
rTest(); |
| 148 return fragment.getProgressDialog() == null; |
| 149 } |
| 150 }); |
| 151 |
| 152 // The web app should still exist in the registry. |
| 153 WebappRegistry.getRegisteredWebappIds(getActivity(), new WebappRegistry.
FetchCallback() { |
| 154 @Override |
| 155 public void onWebappIdsRetrieved(Set<String> ids) { |
| 156 assertEquals(new HashSet<String>(Arrays.asList("first")), ids); |
| 157 mCallbackCalled = true; |
| 158 } |
| 159 }); |
| 160 CriteriaHelper.pollUiThread(new Criteria() { |
| 161 @Override |
| 162 public boolean isSatisfied() { |
| 163 return mCallbackCalled; |
| 164 } |
| 165 }); |
| 166 mCallbackCalled = false; |
| 167 |
| 168 // Scope should be empty. |
| 169 WebappDataStorage.getScope(getActivity(), "first", |
| 170 new WebappDataStorage.FetchCallback<String>() { |
| 171 @Override |
| 172 public void onDataRetrieved(String readObject) { |
| 173 assertEquals(readObject, ""); |
| 174 mCallbackCalled = true; |
| 175 } |
| 176 } |
| 177 ); |
| 178 CriteriaHelper.pollUiThread(new Criteria() { |
| 179 @Override |
| 180 public boolean isSatisfied() { |
| 181 return mCallbackCalled; |
| 182 } |
| 183 }); |
| 184 mCallbackCalled = false; |
| 185 |
| 186 // The last used time should be 0. |
| 187 WebappDataStorage.getLastUsedTime(getActivity(), "first", |
| 188 new WebappDataStorage.FetchCallback<Long>() { |
| 189 @Override |
| 190 public void onDataRetrieved(Long readObject) { |
| 191 long lastUsed = readObject; |
| 192 assertEquals(lastUsed, 0); |
| 193 mCallbackCalled = true; |
| 194 } |
| 195 } |
| 196 ); |
| 197 CriteriaHelper.pollUiThread(new Criteria() { |
| 198 @Override |
| 199 public boolean isSatisfied() { |
| 200 return mCallbackCalled; |
| 201 } |
| 202 }); |
| 203 } |
| 204 |
| 205 /** |
106 * Tests that a fragment with all options preselected indeed has all checkbo
xes checked | 206 * Tests that a fragment with all options preselected indeed has all checkbo
xes checked |
107 * on startup, and that deletion with all checkboxes checked completes succe
ssfully. | 207 * on startup, and that deletion with all checkboxes checked completes succe
ssfully. |
108 */ | 208 */ |
109 @MediumTest | 209 @MediumTest |
110 public void testClearingEverything() throws Exception { | 210 public void testClearingEverything() throws Exception { |
111 setDataTypesToClear(Arrays.asList(DialogOption.values())); | 211 setDataTypesToClear(Arrays.asList(DialogOption.values())); |
112 | 212 |
113 final Preferences preferences = | 213 final Preferences preferences = |
114 startPreferences(ClearBrowsingDataPreferences.class.getName()); | 214 startPreferences(ClearBrowsingDataPreferences.class.getName()); |
115 | 215 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 public void run() { | 252 public void run() { |
153 for (DialogOption option : DialogOption.values()) { | 253 for (DialogOption option : DialogOption.values()) { |
154 boolean enabled = typesToClear.contains(option); | 254 boolean enabled = typesToClear.contains(option); |
155 PrefServiceBridge.getInstance().setBrowsingDataDeletionPrefe
rence( | 255 PrefServiceBridge.getInstance().setBrowsingDataDeletionPrefe
rence( |
156 option.getDataType(), enabled); | 256 option.getDataType(), enabled); |
157 } | 257 } |
158 } | 258 } |
159 }); | 259 }); |
160 } | 260 } |
161 } | 261 } |
OLD | NEW |