Chromium Code Reviews| 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; |
| 11 import android.content.SharedPreferences; | 11 import android.content.SharedPreferences; |
| 12 import android.os.SystemClock; | |
| 12 | 13 |
| 13 import org.chromium.base.test.util.Feature; | 14 import org.chromium.base.test.util.Feature; |
| 14 import org.chromium.testing.local.BackgroundShadowAsyncTask; | 15 import org.chromium.testing.local.BackgroundShadowAsyncTask; |
| 15 import org.chromium.testing.local.LocalRobolectricTestRunner; | 16 import org.chromium.testing.local.LocalRobolectricTestRunner; |
| 16 import org.junit.Before; | 17 import org.junit.Before; |
| 17 import org.junit.Test; | 18 import org.junit.Test; |
| 18 import org.junit.runner.RunWith; | 19 import org.junit.runner.RunWith; |
| 19 import org.robolectric.Robolectric; | 20 import org.robolectric.Robolectric; |
| 20 import org.robolectric.annotation.Config; | 21 import org.robolectric.annotation.Config; |
| 21 | 22 |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 177 .putLong(WebappDataStorage.KEY_LAST_USED, 100L) | 178 .putLong(WebappDataStorage.KEY_LAST_USED, 100L) |
| 178 .commit(); | 179 .commit(); |
| 179 | 180 |
| 180 WebappRegistry.unregisterAllWebapps(Robolectric.application, null); | 181 WebappRegistry.unregisterAllWebapps(Robolectric.application, null); |
| 181 BackgroundShadowAsyncTask.runBackgroundTasks(); | 182 BackgroundShadowAsyncTask.runBackgroundTasks(); |
| 182 | 183 |
| 183 Map<String, ?> actual = webAppPrefs.getAll(); | 184 Map<String, ?> actual = webAppPrefs.getAll(); |
| 184 assertTrue(actual.isEmpty()); | 185 assertTrue(actual.isEmpty()); |
| 185 } | 186 } |
| 186 | 187 |
| 188 @Test | |
| 189 @Feature({"Webapp"}) | |
| 190 public void testCleanupDoesNotRunTooOften() throws Exception { | |
| 191 // Set the system clock to just before the task should run. | |
| 192 SystemClock.setCurrentTimeMillis(WebappRegistry.FULL_CLEANUP_DURATION - 1); | |
|
gone
2015/09/24 10:27:12
instead of mucking about with the clock, add some
Lalit Maganti
2015/09/24 12:35:44
Done.
| |
| 193 | |
| 194 addWebappsToRegistry("test"); | |
|
gone
2015/09/24 10:27:12
nit: can you use something other than "test"? it'
Lalit Maganti
2015/09/24 12:35:44
Done.
| |
| 195 SharedPreferences webAppPrefs = Robolectric.application.getSharedPrefere nces( | |
| 196 WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "test", Context.MOD E_PRIVATE); | |
| 197 webAppPrefs.edit() | |
| 198 .putLong(WebappDataStorage.KEY_LAST_USED, Long.MIN_VALUE) | |
| 199 .commit(); | |
| 200 | |
| 201 WebappRegistry.unregisterOldWebapps(Robolectric.application); | |
| 202 BackgroundShadowAsyncTask.runBackgroundTasks(); | |
| 203 | |
| 204 Set<String> actual = mSharedPreferences.getStringSet( | |
| 205 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); | |
| 206 assertEquals(new HashSet<String>(Arrays.asList("test")), actual); | |
| 207 | |
| 208 long actualLastUsed = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USE D, | |
| 209 WebappDataStorage.INVALID_LAST_USED); | |
| 210 assertEquals(Long.MIN_VALUE, actualLastUsed); | |
| 211 } | |
| 212 | |
| 213 @Test | |
| 214 @Feature({"Webapp"}) | |
| 215 public void testCleanupDoesNotRemoveRecentApps() throws Exception { | |
| 216 // Set the system clock to just before the task should run. | |
| 217 SystemClock.setCurrentTimeMillis(WebappRegistry.FULL_CLEANUP_DURATION); | |
| 218 | |
| 219 addWebappsToRegistry("test"); | |
| 220 SharedPreferences webAppPrefs = Robolectric.application.getSharedPrefere nces( | |
| 221 WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "test", Context.MOD E_PRIVATE); | |
| 222 | |
| 223 // Put the last used time just inside the no-cleanup window. | |
| 224 long lastUsed = | |
| 225 System.currentTimeMillis() - WebappRegistry.WEBAPP_NON_OPEN_CLEA NUP_DURATION + 1; | |
| 226 webAppPrefs.edit() | |
| 227 .putLong(WebappDataStorage.KEY_LAST_USED, lastUsed) | |
| 228 .commit(); | |
| 229 | |
| 230 WebappRegistry.unregisterOldWebapps(Robolectric.application); | |
| 231 BackgroundShadowAsyncTask.runBackgroundTasks(); | |
| 232 | |
| 233 Set<String> actual = mSharedPreferences.getStringSet( | |
| 234 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); | |
| 235 assertEquals(new HashSet<String>(Arrays.asList("test")), actual); | |
| 236 | |
| 237 long actualLastUsed = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USE D, | |
| 238 WebappDataStorage.INVALID_LAST_USED); | |
| 239 assertEquals(lastUsed, actualLastUsed); | |
| 240 } | |
| 241 | |
| 242 @Test | |
| 243 @Feature({"Webapp"}) | |
| 244 public void testCleanupRemovesOldApps() throws Exception { | |
| 245 // Set the system clock to just before the task should run. | |
| 246 SystemClock.setCurrentTimeMillis(WebappRegistry.FULL_CLEANUP_DURATION); | |
| 247 | |
| 248 addWebappsToRegistry("test"); | |
| 249 SharedPreferences webAppPrefs = Robolectric.application.getSharedPrefere nces( | |
| 250 WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "test", Context.MOD E_PRIVATE); | |
| 251 | |
| 252 // Put the last used time just outside the no-cleanup window. | |
| 253 long lastUsed = System.currentTimeMillis() | |
| 254 - WebappRegistry.WEBAPP_NON_OPEN_CLEANUP_DURATION; | |
| 255 webAppPrefs.edit() | |
| 256 .putLong(WebappDataStorage.KEY_LAST_USED, lastUsed) | |
| 257 .commit(); | |
| 258 | |
| 259 WebappRegistry.unregisterOldWebapps(Robolectric.application); | |
| 260 BackgroundShadowAsyncTask.runBackgroundTasks(); | |
| 261 | |
| 262 Set<String> actual = mSharedPreferences.getStringSet( | |
| 263 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); | |
| 264 assertTrue(actual.isEmpty()); | |
| 265 | |
| 266 long actualLastUsed = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USE D, | |
| 267 WebappDataStorage.INVALID_LAST_USED); | |
| 268 assertEquals(WebappDataStorage.INVALID_LAST_USED, actualLastUsed); | |
| 269 } | |
| 270 | |
| 187 private Set<String> addWebappsToRegistry(String... webapps) { | 271 private Set<String> addWebappsToRegistry(String... webapps) { |
| 188 final Set<String> expected = new HashSet<String>(Arrays.asList(webapps)) ; | 272 final Set<String> expected = new HashSet<String>(Arrays.asList(webapps)) ; |
| 189 mSharedPreferences.edit() | 273 mSharedPreferences.edit() |
| 190 .putStringSet(WebappRegistry.KEY_WEBAPP_SET, expected) | 274 .putStringSet(WebappRegistry.KEY_WEBAPP_SET, expected) |
| 191 .commit(); | 275 .commit(); |
| 192 return expected; | 276 return expected; |
| 193 } | 277 } |
| 194 | 278 |
| 195 private Set<String> getRegisteredWebapps() { | 279 private Set<String> getRegisteredWebapps() { |
| 196 return mSharedPreferences.getStringSet( | 280 return mSharedPreferences.getStringSet( |
| 197 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); | 281 WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet()); |
| 198 } | 282 } |
| 199 } | 283 } |
| OLD | NEW |