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.webapps; | 5 package org.chromium.chrome.browser.webapps; |
6 | 6 |
7 import static org.junit.Assert.assertEquals; | 7 import static org.junit.Assert.assertEquals; |
8 import static org.junit.Assert.assertTrue; | 8 import static org.junit.Assert.assertTrue; |
9 | 9 |
10 import android.content.Context; | 10 import android.content.Context; |
(...skipping 25 matching lines...) Expand all Loading... | |
36 // These were copied from WebappRegistry for backward compatibility checking . | 36 // These were copied from WebappRegistry for backward compatibility checking . |
37 private static final String REGISTRY_FILE_NAME = "webapp_registry"; | 37 private static final String REGISTRY_FILE_NAME = "webapp_registry"; |
38 private static final String KEY_WEBAPP_SET = "webapp_set"; | 38 private static final String KEY_WEBAPP_SET = "webapp_set"; |
39 private static final String KEY_LAST_CLEANUP = "last_cleanup"; | 39 private static final String KEY_LAST_CLEANUP = "last_cleanup"; |
40 | 40 |
41 private static final int INITIAL_TIME = 0; | 41 private static final int INITIAL_TIME = 0; |
42 | 42 |
43 private SharedPreferences mSharedPreferences; | 43 private SharedPreferences mSharedPreferences; |
44 private boolean mCallbackCalled; | 44 private boolean mCallbackCalled; |
45 | 45 |
46 private class FetchCallback implements WebappRegistry.FetchCallback { | |
47 FetchCallback(Set<String> expected) { | |
48 mExpected = expected; | |
49 } | |
50 | |
51 @Override | |
52 public void onWebappIdsRetrieved(Set<String> actual) { | |
53 mCallbackCalled = true; | |
54 assertEquals(mExpected, actual); | |
55 } | |
56 | |
57 Set<String> mExpected; | |
gone
2016/03/10 23:27:22
members go at the top
dominickn
2016/03/11 05:14:43
Done.
| |
58 } | |
59 | |
46 @Before | 60 @Before |
47 public void setUp() throws Exception { | 61 public void setUp() throws Exception { |
48 mSharedPreferences = Robolectric.application | 62 mSharedPreferences = Robolectric.application |
49 .getSharedPreferences(REGISTRY_FILE_NAME, Context.MODE_PRIVATE); | 63 .getSharedPreferences(REGISTRY_FILE_NAME, Context.MODE_PRIVATE); |
50 mSharedPreferences.edit().putLong(KEY_LAST_CLEANUP, INITIAL_TIME).commit (); | 64 mSharedPreferences.edit().putLong(KEY_LAST_CLEANUP, INITIAL_TIME).commit (); |
51 | 65 |
52 mCallbackCalled = false; | 66 mCallbackCalled = false; |
53 } | 67 } |
54 | 68 |
55 @Test | 69 @Test |
56 @Feature({"Webapp"}) | 70 @Feature({"Webapp"}) |
57 public void testBackwardCompatibility() { | 71 public void testBackwardCompatibility() { |
58 assertEquals(REGISTRY_FILE_NAME, WebappRegistry.REGISTRY_FILE_NAME); | 72 assertEquals(REGISTRY_FILE_NAME, WebappRegistry.REGISTRY_FILE_NAME); |
59 assertEquals(KEY_WEBAPP_SET, WebappRegistry.KEY_WEBAPP_SET); | 73 assertEquals(KEY_WEBAPP_SET, WebappRegistry.KEY_WEBAPP_SET); |
60 assertEquals(KEY_LAST_CLEANUP, WebappRegistry.KEY_LAST_CLEANUP); | 74 assertEquals(KEY_LAST_CLEANUP, WebappRegistry.KEY_LAST_CLEANUP); |
61 } | 75 } |
62 | 76 |
63 @Test | 77 @Test |
64 @Feature({"Webapp"}) | 78 @Feature({"Webapp"}) |
65 public void testWebappRegistrationAddsToSharedPrefs() throws Exception { | 79 public void testWebappRegistrationAddsToSharedPrefs() throws Exception { |
66 WebappRegistry.registerWebapp(Robolectric.application, "test"); | 80 WebappRegistry.registerWebapp(Robolectric.application, "test", "https:// www.google.com"); |
67 BackgroundShadowAsyncTask.runBackgroundTasks(); | 81 BackgroundShadowAsyncTask.runBackgroundTasks(); |
68 | 82 |
69 Set<String> actual = mSharedPreferences.getStringSet( | 83 Set<String> actual = mSharedPreferences.getStringSet( |
70 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); | 84 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); |
71 assertEquals(1, actual.size()); | 85 assertEquals(1, actual.size()); |
72 assertTrue(actual.contains("test")); | 86 assertTrue(actual.contains("test")); |
73 } | 87 } |
74 | 88 |
75 @Test | 89 @Test |
76 @Feature({"Webapp"}) | 90 @Feature({"Webapp"}) |
77 public void testWebappRegistrationUpdatesLastUsed() throws Exception { | 91 public void testWebappRegistrationUpdatesLastUsedAndOrigin() throws Exceptio n { |
78 long before = System.currentTimeMillis(); | 92 long before = System.currentTimeMillis(); |
79 WebappRegistry.registerWebapp(Robolectric.application, "test"); | 93 final String origin = "http://drive.google.com"; |
94 | |
95 WebappRegistry.registerWebapp(Robolectric.application, "test", origin); | |
80 BackgroundShadowAsyncTask.runBackgroundTasks(); | 96 BackgroundShadowAsyncTask.runBackgroundTasks(); |
81 long after = System.currentTimeMillis(); | 97 long after = System.currentTimeMillis(); |
82 | 98 |
83 SharedPreferences webAppPrefs = Robolectric.application.getSharedPrefere nces( | 99 SharedPreferences webAppPrefs = Robolectric.application.getSharedPrefere nces( |
84 WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "test", Context.MOD E_PRIVATE); | 100 WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "test", Context.MOD E_PRIVATE); |
85 long actual = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USED, | 101 long actual = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USED, |
86 WebappDataStorage.INVALID_LAST_USED); | 102 WebappDataStorage.LAST_USED_INVALID); |
103 String webAppOrigin = webAppPrefs.getString(WebappDataStorage.KEY_ORIGIN _URL, | |
104 WebappDataStorage.ORIGIN_URL_INVALID); | |
87 assertTrue("Timestamp is out of range", before <= actual && actual <= af ter); | 105 assertTrue("Timestamp is out of range", before <= actual && actual <= af ter); |
106 assertEquals(origin, webAppOrigin); | |
88 } | 107 } |
89 | 108 |
90 @Test | 109 @Test |
91 @Feature({"Webapp"}) | 110 @Feature({"Webapp"}) |
92 public void testWebappIdsRetrieval() throws Exception { | 111 public void testWebappIdsRetrieval() throws Exception { |
93 final Set<String> expected = addWebappsToRegistry("first", "second"); | 112 final Set<String> expected = addWebappsToRegistry("first", "second"); |
94 | 113 |
95 WebappRegistry.getRegisteredWebappIds(Robolectric.application, | 114 WebappRegistry.getRegisteredWebappIds(Robolectric.application, new Fetch Callback(expected)); |
96 new WebappRegistry.FetchCallback() { | |
97 @Override | |
98 public void onWebappIdsRetrieved(Set<String> actual) { | |
99 mCallbackCalled = true; | |
100 assertEquals(expected, actual); | |
101 } | |
102 }); | |
103 BackgroundShadowAsyncTask.runBackgroundTasks(); | 115 BackgroundShadowAsyncTask.runBackgroundTasks(); |
104 Robolectric.runUiThreadTasks(); | 116 Robolectric.runUiThreadTasks(); |
105 | 117 |
106 assertTrue(mCallbackCalled); | 118 assertTrue(mCallbackCalled); |
107 } | 119 } |
108 | 120 |
109 @Test | 121 @Test |
110 @Feature({"Webapp"}) | 122 @Feature({"Webapp"}) |
111 public void testWebappIdsRetrievalRegisterRetrival() throws Exception { | 123 public void testWebappIdsRetrievalRegisterRetrival() throws Exception { |
112 final Set<String> expected = addWebappsToRegistry("first"); | 124 final Set<String> expected = addWebappsToRegistry("first"); |
113 | 125 |
114 WebappRegistry.getRegisteredWebappIds(Robolectric.application, | 126 WebappRegistry.getRegisteredWebappIds(Robolectric.application, new Fetch Callback(expected)); |
115 new WebappRegistry.FetchCallback() { | |
116 @Override | |
117 public void onWebappIdsRetrieved(Set<String> actual) { | |
118 mCallbackCalled = true; | |
119 assertEquals(expected, actual); | |
120 } | |
121 }); | |
122 BackgroundShadowAsyncTask.runBackgroundTasks(); | 127 BackgroundShadowAsyncTask.runBackgroundTasks(); |
123 Robolectric.runUiThreadTasks(); | 128 Robolectric.runUiThreadTasks(); |
124 | 129 |
125 assertTrue(mCallbackCalled); | 130 assertTrue(mCallbackCalled); |
126 mCallbackCalled = false; | 131 mCallbackCalled = false; |
127 | 132 |
128 WebappRegistry.registerWebapp(Robolectric.application, "second"); | 133 WebappRegistry.registerWebapp(Robolectric.application, "second", "https: //www.google.com"); |
129 BackgroundShadowAsyncTask.runBackgroundTasks(); | 134 BackgroundShadowAsyncTask.runBackgroundTasks(); |
130 | 135 |
131 // A copy of the expected set needs to be made as the SharedPreferences is using the copy | 136 // A copy of the expected set needs to be made as the SharedPreferences is using the copy |
132 // that was paassed to it. | 137 // that was paassed to it. |
133 final Set<String> secondExpected = new HashSet<String>(expected); | 138 final Set<String> secondExpected = new HashSet<String>(expected); |
134 secondExpected.add("second"); | 139 secondExpected.add("second"); |
135 | 140 |
136 WebappRegistry.getRegisteredWebappIds(Robolectric.application, | 141 WebappRegistry.getRegisteredWebappIds(Robolectric.application, |
137 new WebappRegistry.FetchCallback() { | 142 new FetchCallback(secondExpected)); |
138 @Override | |
139 public void onWebappIdsRetrieved(Set<String> actual) { | |
140 mCallbackCalled = true; | |
141 assertEquals(secondExpected, actual); | |
142 } | |
143 }); | |
144 BackgroundShadowAsyncTask.runBackgroundTasks(); | 143 BackgroundShadowAsyncTask.runBackgroundTasks(); |
145 Robolectric.runUiThreadTasks(); | 144 Robolectric.runUiThreadTasks(); |
146 | 145 |
147 assertTrue(mCallbackCalled); | 146 assertTrue(mCallbackCalled); |
148 } | 147 } |
149 | 148 |
150 @Test | 149 @Test |
151 @Feature({"Webapp"}) | 150 @Feature({"Webapp"}) |
152 public void testUnregisterRunsCallback() throws Exception { | 151 public void testUnregisterRunsCallback() throws Exception { |
153 WebappRegistry.unregisterAllWebapps(Robolectric.application, new Runnabl e() { | 152 WebappRegistry.unregisterAllWebapps(Robolectric.application, new Runnabl e() { |
154 @Override | 153 @Override |
155 public void run() { | 154 public void run() { |
156 mCallbackCalled = true; | 155 mCallbackCalled = true; |
157 } | 156 } |
158 }); | 157 }); |
159 BackgroundShadowAsyncTask.runBackgroundTasks(); | 158 BackgroundShadowAsyncTask.runBackgroundTasks(); |
160 Robolectric.runUiThreadTasks(); | 159 Robolectric.runUiThreadTasks(); |
161 | 160 |
162 assertTrue(mCallbackCalled); | 161 assertTrue(mCallbackCalled); |
163 } | 162 } |
164 | 163 |
165 @Test | 164 @Test |
166 @Feature({"Webapp"}) | 165 @Feature({"Webapp"}) |
167 public void testUnregisterClearsRegistry() throws Exception { | 166 public void testUnregisterClearsRegistry() throws Exception { |
168 addWebappsToRegistry("test"); | 167 addWebappsToRegistry("test"); |
169 | 168 |
170 WebappRegistry.unregisterAllWebapps(Robolectric.application, null); | 169 WebappRegistry.unregisterAllWebapps(Robolectric.application, new Runnabl e() { |
170 @Override | |
171 public void run() { | |
172 mCallbackCalled = true; | |
173 } | |
174 }); | |
171 BackgroundShadowAsyncTask.runBackgroundTasks(); | 175 BackgroundShadowAsyncTask.runBackgroundTasks(); |
176 Robolectric.runUiThreadTasks(); | |
172 | 177 |
178 assertTrue(mCallbackCalled); | |
173 assertTrue(getRegisteredWebapps().isEmpty()); | 179 assertTrue(getRegisteredWebapps().isEmpty()); |
174 } | 180 } |
175 | 181 |
176 @Test | 182 @Test |
177 @Feature({"Webapp"}) | 183 @Feature({"Webapp"}) |
178 public void testUnregisterClearsWebappDataStorage() throws Exception { | 184 public void testUnregisterClearsWebappDataStorage() throws Exception { |
179 addWebappsToRegistry("test"); | 185 addWebappsToRegistry("test"); |
180 SharedPreferences webAppPrefs = Robolectric.application.getSharedPrefere nces( | 186 SharedPreferences webAppPrefs = Robolectric.application.getSharedPrefere nces( |
181 WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "test", Context.MOD E_PRIVATE); | 187 WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "test", Context.MOD E_PRIVATE); |
182 webAppPrefs.edit() | 188 webAppPrefs.edit() |
(...skipping 21 matching lines...) Expand all Loading... | |
204 .commit(); | 210 .commit(); |
205 | 211 |
206 WebappRegistry.unregisterOldWebapps(Robolectric.application, currentTime ); | 212 WebappRegistry.unregisterOldWebapps(Robolectric.application, currentTime ); |
207 BackgroundShadowAsyncTask.runBackgroundTasks(); | 213 BackgroundShadowAsyncTask.runBackgroundTasks(); |
208 | 214 |
209 Set<String> actual = mSharedPreferences.getStringSet( | 215 Set<String> actual = mSharedPreferences.getStringSet( |
210 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); | 216 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); |
211 assertEquals(new HashSet<String>(Arrays.asList("oldWebapp")), actual); | 217 assertEquals(new HashSet<String>(Arrays.asList("oldWebapp")), actual); |
212 | 218 |
213 long actualLastUsed = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USE D, | 219 long actualLastUsed = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USE D, |
214 WebappDataStorage.INVALID_LAST_USED); | 220 WebappDataStorage.LAST_USED_INVALID); |
215 assertEquals(Long.MIN_VALUE, actualLastUsed); | 221 assertEquals(Long.MIN_VALUE, actualLastUsed); |
216 | 222 |
217 // The last cleanup time was set to 0 in setUp() so check that this hasn 't changed. | 223 // The last cleanup time was set to 0 in setUp() so check that this hasn 't changed. |
218 long lastCleanup = mSharedPreferences.getLong(WebappRegistry.KEY_LAST_CL EANUP, -1); | 224 long lastCleanup = mSharedPreferences.getLong(WebappRegistry.KEY_LAST_CL EANUP, -1); |
219 assertEquals(INITIAL_TIME, lastCleanup); | 225 assertEquals(INITIAL_TIME, lastCleanup); |
220 } | 226 } |
221 | 227 |
222 @Test | 228 @Test |
223 @Feature({"Webapp"}) | 229 @Feature({"Webapp"}) |
224 public void testCleanupDoesNotRemoveRecentApps() throws Exception { | 230 public void testCleanupDoesNotRemoveRecentApps() throws Exception { |
(...skipping 13 matching lines...) Expand all Loading... | |
238 // should not be deleted as it was used recently. The last cleanup time should also be | 244 // should not be deleted as it was used recently. The last cleanup time should also be |
239 // set to the current time. | 245 // set to the current time. |
240 WebappRegistry.unregisterOldWebapps(Robolectric.application, currentTime ); | 246 WebappRegistry.unregisterOldWebapps(Robolectric.application, currentTime ); |
241 BackgroundShadowAsyncTask.runBackgroundTasks(); | 247 BackgroundShadowAsyncTask.runBackgroundTasks(); |
242 | 248 |
243 Set<String> actual = mSharedPreferences.getStringSet( | 249 Set<String> actual = mSharedPreferences.getStringSet( |
244 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); | 250 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); |
245 assertEquals(new HashSet<String>(Arrays.asList("recentWebapp")), actual) ; | 251 assertEquals(new HashSet<String>(Arrays.asList("recentWebapp")), actual) ; |
246 | 252 |
247 long actualLastUsed = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USE D, | 253 long actualLastUsed = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USE D, |
248 WebappDataStorage.INVALID_LAST_USED); | 254 WebappDataStorage.LAST_USED_INVALID); |
249 assertEquals(lastUsed, actualLastUsed); | 255 assertEquals(lastUsed, actualLastUsed); |
250 | 256 |
251 long lastCleanup = mSharedPreferences.getLong(WebappRegistry.KEY_LAST_CL EANUP, -1); | 257 long lastCleanup = mSharedPreferences.getLong(WebappRegistry.KEY_LAST_CL EANUP, -1); |
252 assertEquals(currentTime, lastCleanup); | 258 assertEquals(currentTime, lastCleanup); |
253 } | 259 } |
254 | 260 |
255 @Test | 261 @Test |
256 @Feature({"Webapp"}) | 262 @Feature({"Webapp"}) |
257 public void testCleanupRemovesOldApps() throws Exception { | 263 public void testCleanupRemovesOldApps() throws Exception { |
258 // Put the current time such that the task runs. | 264 // Put the current time such that the task runs. |
(...skipping 11 matching lines...) Expand all Loading... | |
270 // Because the time is just inside the window, there should be a cleanup of old web apps and | 276 // Because the time is just inside the window, there should be a cleanup of old web apps and |
271 // the last cleaned up time should be set to the current time. | 277 // the last cleaned up time should be set to the current time. |
272 WebappRegistry.unregisterOldWebapps(Robolectric.application, currentTime ); | 278 WebappRegistry.unregisterOldWebapps(Robolectric.application, currentTime ); |
273 BackgroundShadowAsyncTask.runBackgroundTasks(); | 279 BackgroundShadowAsyncTask.runBackgroundTasks(); |
274 | 280 |
275 Set<String> actual = mSharedPreferences.getStringSet( | 281 Set<String> actual = mSharedPreferences.getStringSet( |
276 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); | 282 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); |
277 assertTrue(actual.isEmpty()); | 283 assertTrue(actual.isEmpty()); |
278 | 284 |
279 long actualLastUsed = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USE D, | 285 long actualLastUsed = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USE D, |
280 WebappDataStorage.INVALID_LAST_USED); | 286 WebappDataStorage.LAST_USED_INVALID); |
281 assertEquals(WebappDataStorage.INVALID_LAST_USED, actualLastUsed); | 287 assertEquals(WebappDataStorage.LAST_USED_INVALID, actualLastUsed); |
282 | 288 |
283 long lastCleanup = mSharedPreferences.getLong(WebappRegistry.KEY_LAST_CL EANUP, -1); | 289 long lastCleanup = mSharedPreferences.getLong(WebappRegistry.KEY_LAST_CL EANUP, -1); |
284 assertEquals(currentTime, lastCleanup); | 290 assertEquals(currentTime, lastCleanup); |
285 } | 291 } |
286 | 292 |
293 @Test | |
294 @Feature({"Webapp"}) | |
295 public void testClearWebappHistoryRunsCallback() throws Exception { | |
296 WebappRegistry.clearWebappHistory(Robolectric.application, new Runnable( ) { | |
297 @Override | |
298 public void run() { | |
299 mCallbackCalled = true; | |
300 } | |
301 }); | |
302 BackgroundShadowAsyncTask.runBackgroundTasks(); | |
303 Robolectric.runUiThreadTasks(); | |
304 | |
305 assertTrue(mCallbackCalled); | |
306 } | |
307 | |
308 @Test | |
309 @Feature({"Webapp"}) | |
310 public void testClearWebappHistory() throws Exception { | |
311 final String webappOrigin1 = "https://www.google.com"; | |
312 final String webappOrigin2 = "https://drive.google.com"; | |
313 WebappRegistry.registerWebapp(Robolectric.application, "webapp1", webapp Origin1); | |
314 WebappRegistry.registerWebapp(Robolectric.application, "webapp2", webapp Origin2); | |
315 BackgroundShadowAsyncTask.runBackgroundTasks(); | |
316 | |
317 SharedPreferences webapp1Prefs = Robolectric.application.getSharedPrefer ences( | |
318 WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "webapp1", Context. MODE_PRIVATE); | |
319 SharedPreferences webapp2Prefs = Robolectric.application.getSharedPrefer ences( | |
320 WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "webapp2", Context. MODE_PRIVATE); | |
321 | |
322 WebappRegistry.clearWebappHistory(Robolectric.application, new Runnable( ) { | |
323 @Override | |
324 public void run() { | |
325 mCallbackCalled = true; | |
326 } | |
327 }); | |
328 BackgroundShadowAsyncTask.runBackgroundTasks(); | |
329 Robolectric.runUiThreadTasks(); | |
330 | |
331 assertTrue(mCallbackCalled); | |
332 | |
333 Set<String> actual = mSharedPreferences.getStringSet( | |
334 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); | |
335 assertEquals(2, actual.size()); | |
336 assertTrue(actual.contains("webapp1")); | |
337 assertTrue(actual.contains("webapp2")); | |
338 | |
339 // Verify that the last used time for both web apps is WebappDataStorage .LAST_USED_UNSET. | |
340 long actualLastUsed = webapp1Prefs.getLong( | |
341 WebappDataStorage.KEY_LAST_USED, WebappDataStorage.LAST_USED_UNS ET); | |
342 assertEquals(WebappDataStorage.LAST_USED_UNSET, actualLastUsed); | |
343 actualLastUsed = webapp2Prefs.getLong( | |
344 WebappDataStorage.KEY_LAST_USED, WebappDataStorage.LAST_USED_UNS ET); | |
345 assertEquals(WebappDataStorage.LAST_USED_UNSET, actualLastUsed); | |
346 | |
347 // Verify that the origin URL for both web apps is WebappDataStorage.ORI GIN_URL_INVALID. | |
348 String actualOriginUrl = webapp1Prefs.getString( | |
349 WebappDataStorage.KEY_ORIGIN_URL, WebappDataStorage.ORIGIN_URL_I NVALID); | |
350 assertEquals(WebappDataStorage.ORIGIN_URL_INVALID, actualOriginUrl); | |
351 actualOriginUrl = webapp2Prefs.getString( | |
352 WebappDataStorage.KEY_ORIGIN_URL, WebappDataStorage.ORIGIN_URL_I NVALID); | |
353 assertEquals(WebappDataStorage.ORIGIN_URL_INVALID, actualOriginUrl); | |
354 } | |
355 | |
356 @Test | |
357 @Feature({"Webapp"}) | |
358 public void testOpenAfterClearWebappHistory() throws Exception { | |
359 final String webappOrigin = "https://www.google.com"; | |
360 WebappRegistry.registerWebapp(Robolectric.application, "webapp", webappO rigin); | |
361 BackgroundShadowAsyncTask.runBackgroundTasks(); | |
362 | |
363 SharedPreferences webappPrefs = Robolectric.application.getSharedPrefere nces( | |
364 WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "webapp", Context.M ODE_PRIVATE); | |
365 | |
366 WebappRegistry.clearWebappHistory(Robolectric.application, new Runnable( ) { | |
367 @Override | |
368 public void run() { | |
369 mCallbackCalled = true; | |
370 } | |
371 }); | |
372 BackgroundShadowAsyncTask.runBackgroundTasks(); | |
373 | |
374 // Open the webapp up and set the origin. | |
375 WebappDataStorage.open(Robolectric.application, "webapp"); | |
376 WebappDataStorage.updateOriginUrl(Robolectric.application, "webapp", web appOrigin); | |
377 BackgroundShadowAsyncTask.runBackgroundTasks(); | |
378 Robolectric.runUiThreadTasks(); | |
379 assertTrue(mCallbackCalled); | |
380 | |
381 // Verify that the last used time is valid and the origin URL is updated . | |
382 long actualLastUsed = webappPrefs.getLong( | |
383 WebappDataStorage.KEY_LAST_USED, WebappDataStorage.LAST_USED_INV ALID); | |
384 assertTrue(WebappDataStorage.LAST_USED_INVALID != actualLastUsed); | |
385 assertTrue(WebappDataStorage.LAST_USED_UNSET != actualLastUsed); | |
386 String actualOriginUrl = webappPrefs.getString( | |
387 WebappDataStorage.KEY_ORIGIN_URL, WebappDataStorage.ORIGIN_URL_I NVALID); | |
388 assertEquals(webappOrigin, actualOriginUrl); | |
389 } | |
390 | |
391 | |
287 private Set<String> addWebappsToRegistry(String... webapps) { | 392 private Set<String> addWebappsToRegistry(String... webapps) { |
288 final Set<String> expected = new HashSet<String>(Arrays.asList(webapps)) ; | 393 final Set<String> expected = new HashSet<String>(Arrays.asList(webapps)) ; |
289 mSharedPreferences.edit() | 394 mSharedPreferences.edit() |
290 .putStringSet(WebappRegistry.KEY_WEBAPP_SET, expected) | 395 .putStringSet(WebappRegistry.KEY_WEBAPP_SET, expected) |
291 .commit(); | 396 .commit(); |
292 return expected; | 397 return expected; |
293 } | 398 } |
294 | 399 |
295 private Set<String> getRegisteredWebapps() { | 400 private Set<String> getRegisteredWebapps() { |
296 return mSharedPreferences.getStringSet( | 401 return mSharedPreferences.getStringSet( |
297 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); | 402 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); |
298 } | 403 } |
299 } | 404 } |
OLD | NEW |