Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2930)

Unified Diff: chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappRegistryTest.java

Issue 1359383002: webapps: Add cleanup task when opening up WebappActivity to clean old web apps (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@webapp-cleanup
Patch Set: Address Mounir's comments Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappRegistryTest.java
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappRegistryTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappRegistryTest.java
index 073e24bcb7e0eacededf84b348b0c6670987dd01..2d07c7afc6018b61bf11668a17315ad1f00fa8a9 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappRegistryTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappRegistryTest.java
@@ -36,6 +36,9 @@ public class WebappRegistryTest {
// These were copied from WebappRegistry for backward compatibility checking.
private static final String REGISTRY_FILE_NAME = "webapp_registry";
private static final String KEY_WEBAPP_SET = "webapp_set";
+ private static final String KEY_LAST_CLEANUP = "last_cleanup";
+
+ private static final int INITIAL_TIME = 0;
private SharedPreferences mSharedPreferences;
private boolean mCallbackCalled;
@@ -44,6 +47,8 @@ public class WebappRegistryTest {
public void setUp() throws Exception {
mSharedPreferences = Robolectric.application
.getSharedPreferences(REGISTRY_FILE_NAME, Context.MODE_PRIVATE);
+ mSharedPreferences.edit().putLong(KEY_LAST_CLEANUP, INITIAL_TIME).commit();
+
mCallbackCalled = false;
}
@@ -52,6 +57,7 @@ public class WebappRegistryTest {
public void testBackwardCompatibility() {
assertEquals(REGISTRY_FILE_NAME, WebappRegistry.REGISTRY_FILE_NAME);
assertEquals(KEY_WEBAPP_SET, WebappRegistry.KEY_WEBAPP_SET);
+ assertEquals(KEY_LAST_CLEANUP, WebappRegistry.KEY_LAST_CLEANUP);
}
@Test
@@ -184,6 +190,100 @@ public class WebappRegistryTest {
assertTrue(actual.isEmpty());
}
+ @Test
+ @Feature({"Webapp"})
+ public void testCleanupDoesNotRunTooOften() throws Exception {
+ // Put the current time to just before the task should run.
+ long currentTime = INITIAL_TIME + WebappRegistry.FULL_CLEANUP_DURATION - 1;
+
+ addWebappsToRegistry("oldWebapp");
+ SharedPreferences webAppPrefs = Robolectric.application.getSharedPreferences(
+ WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "oldWebapp", Context.MODE_PRIVATE);
+ webAppPrefs.edit()
+ .putLong(WebappDataStorage.KEY_LAST_USED, Long.MIN_VALUE)
+ .commit();
+
+ WebappRegistry.unregisterOldWebapps(Robolectric.application, currentTime);
+ BackgroundShadowAsyncTask.runBackgroundTasks();
+
+ Set<String> actual = mSharedPreferences.getStringSet(
+ WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet());
+ assertEquals(new HashSet<String>(Arrays.asList("oldWebapp")), actual);
+
+ long actualLastUsed = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USED,
+ WebappDataStorage.INVALID_LAST_USED);
+ assertEquals(Long.MIN_VALUE, actualLastUsed);
+
+ // The last cleanup time was set to 0 in setUp() so check that this hasn't changed.
+ long lastCleanup = mSharedPreferences.getLong(WebappRegistry.KEY_LAST_CLEANUP, -1);
+ assertEquals(INITIAL_TIME, lastCleanup);
+ }
+
+ @Test
+ @Feature({"Webapp"})
+ public void testCleanupDoesNotRemoveRecentApps() throws Exception {
+ // Put the current time such that the task runs.
+ long currentTime = INITIAL_TIME + WebappRegistry.FULL_CLEANUP_DURATION;
+
+ // Put the last used time just inside the no-cleanup window.
+ addWebappsToRegistry("recentWebapp");
+ SharedPreferences webAppPrefs = Robolectric.application.getSharedPreferences(
+ WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "recentWebapp", Context.MODE_PRIVATE);
+ long lastUsed = currentTime - WebappRegistry.WEBAPP_UNOPENED_CLEANUP_DURATION + 1;
+ webAppPrefs.edit()
+ .putLong(WebappDataStorage.KEY_LAST_USED, lastUsed)
+ .commit();
+
+ // Because the time is just inside the window, there should be a cleanup but the web app
+ // should not be deleted as it was used recently. The last cleanup time should also be
+ // set to the current time.
+ WebappRegistry.unregisterOldWebapps(Robolectric.application, currentTime);
+ BackgroundShadowAsyncTask.runBackgroundTasks();
+
+ Set<String> actual = mSharedPreferences.getStringSet(
+ WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet());
+ assertEquals(new HashSet<String>(Arrays.asList("recentWebapp")), actual);
+
+ long actualLastUsed = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USED,
+ WebappDataStorage.INVALID_LAST_USED);
+ assertEquals(lastUsed, actualLastUsed);
+
+ long lastCleanup = mSharedPreferences.getLong(WebappRegistry.KEY_LAST_CLEANUP, -1);
+ assertEquals(currentTime, lastCleanup);
+ }
+
+ @Test
+ @Feature({"Webapp"})
+ public void testCleanupRemovesOldApps() throws Exception {
+ // Put the current time such that the task runs.
+ long currentTime = INITIAL_TIME + WebappRegistry.FULL_CLEANUP_DURATION;
+
+ // Put the last used time just outside the no-cleanup window.
+ addWebappsToRegistry("oldWebapp");
+ SharedPreferences webAppPrefs = Robolectric.application.getSharedPreferences(
+ WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "oldWebapp", Context.MODE_PRIVATE);
+ long lastUsed = currentTime - WebappRegistry.WEBAPP_UNOPENED_CLEANUP_DURATION;
+ webAppPrefs.edit()
+ .putLong(WebappDataStorage.KEY_LAST_USED, lastUsed)
+ .commit();
+
+ // Because the time is just inside the window, there should be a cleanup of old web apps and
+ // the last cleaned up time should be set to the current time.
+ WebappRegistry.unregisterOldWebapps(Robolectric.application, currentTime);
+ BackgroundShadowAsyncTask.runBackgroundTasks();
+
+ Set<String> actual = mSharedPreferences.getStringSet(
+ WebappRegistry.KEY_WEBAPP_SET, Collections.<String>emptySet());
+ assertTrue(actual.isEmpty());
+
+ long actualLastUsed = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USED,
+ WebappDataStorage.INVALID_LAST_USED);
+ assertEquals(WebappDataStorage.INVALID_LAST_USED, actualLastUsed);
+
+ long lastCleanup = mSharedPreferences.getLong(WebappRegistry.KEY_LAST_CLEANUP, -1);
+ assertEquals(currentTime, lastCleanup);
+ }
+
private Set<String> addWebappsToRegistry(String... webapps) {
final Set<String> expected = new HashSet<String>(Arrays.asList(webapps));
mSharedPreferences.edit()
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698