Chromium Code Reviews| 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 d57dbae637fbe4e18cbc2222ad1b76d54fe6cbe1..0148c8b8b5b17ab42c302c05b9e541360fe9d808 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 |
| @@ -49,6 +49,7 @@ public class WebappRegistryTest { |
| Set<String> mExpected; |
| FetchCallback(Set<String> expected) { |
| + mCallbackCalled = false; |
| mExpected = expected; |
| } |
| @@ -61,16 +62,39 @@ public class WebappRegistryTest { |
| private class FetchStorageCallback implements WebappRegistry.FetchWebappDataStorageCallback { |
| Intent mShortcutIntent; |
| + boolean mMarkLaunched; |
| - FetchStorageCallback(Intent shortcutIntent) { |
| + FetchStorageCallback(Intent shortcutIntent, boolean markLaunched) { |
| mCallbackCalled = false; |
| mShortcutIntent = shortcutIntent; |
| + mMarkLaunched = markLaunched; |
| } |
| @Override |
| public void onWebappDataStorageRetrieved(WebappDataStorage storage) { |
| mCallbackCalled = true; |
| storage.updateFromShortcutIntent(mShortcutIntent); |
| + storage.updateLastUsedTime(); |
| + if (mMarkLaunched) storage.setLaunched(); |
| + } |
| + } |
| + |
| + private class FetchStorageByUrlCallback |
| + implements WebappRegistry.FetchWebappDataStorageCallback { |
| + String mUrl; |
| + String mScope; |
| + |
| + FetchStorageByUrlCallback(String url, String scope) { |
| + mCallbackCalled = false; |
| + mUrl = url; |
| + mScope = scope; |
| + } |
| + |
| + @Override |
| + public void onWebappDataStorageRetrieved(WebappDataStorage storage) { |
| + mCallbackCalled = true; |
|
gone
2016/04/07 19:10:44
This really should be a member variable of this ca
dominickn
2016/04/08 01:10:46
Done.
|
| + assertEquals(mUrl, storage.getUrl()); |
| + assertEquals(mScope, storage.getScope()); |
| } |
| } |
| @@ -116,9 +140,7 @@ public class WebappRegistryTest { |
| @Test |
| @Feature({"Webapp"}) |
| - public void testWebappRegistrationUpdatesLastUsed() throws Exception { |
| - long before = System.currentTimeMillis(); |
|
dominickn
2016/04/06 13:07:01
The before check started being flaky for me, so I
|
| - |
| + public void testWebappRegistrationUpdatesLastUsedAndDoesNotMarkLaunched() throws Exception { |
| WebappRegistry.registerWebapp(Robolectric.application, "test", null); |
| BackgroundShadowAsyncTask.runBackgroundTasks(); |
| long after = System.currentTimeMillis(); |
| @@ -127,7 +149,10 @@ public class WebappRegistryTest { |
| WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "test", Context.MODE_PRIVATE); |
| long actual = webAppPrefs.getLong(WebappDataStorage.KEY_LAST_USED, |
| WebappDataStorage.LAST_USED_INVALID); |
| - assertTrue("Timestamp is out of range", before <= actual && actual <= after); |
| + assertTrue("Timestamp is out of range", actual <= after); |
| + |
| + boolean launched = webAppPrefs.getBoolean(WebappDataStorage.KEY_LAUNCHED, false); |
| + assertTrue(!launched); |
|
gone
2016/04/07 19:10:45
can't just assertTrue(!webAppPref....) here?
dominickn
2016/04/08 01:10:46
Done.
|
| } |
| @Test |
| @@ -323,13 +348,13 @@ public class WebappRegistryTest { |
| Intent shortcutIntent2 = createShortcutIntent(webapp2Url); |
| WebappRegistry.registerWebapp(Robolectric.application, "webapp1", |
| - new FetchStorageCallback(shortcutIntent1)); |
| + new FetchStorageCallback(shortcutIntent1, true)); |
| BackgroundShadowAsyncTask.runBackgroundTasks(); |
| Robolectric.runUiThreadTasks(); |
| assertTrue(mCallbackCalled); |
| WebappRegistry.registerWebapp(Robolectric.application, "webapp2", |
| - new FetchStorageCallback(shortcutIntent2)); |
| + new FetchStorageCallback(shortcutIntent2, false)); |
| BackgroundShadowAsyncTask.runBackgroundTasks(); |
| Robolectric.runUiThreadTasks(); |
| assertTrue(mCallbackCalled); |
| @@ -358,6 +383,12 @@ public class WebappRegistryTest { |
| WebappDataStorage.KEY_LAST_USED, WebappDataStorage.LAST_USED_UNSET); |
| assertEquals(WebappDataStorage.LAST_USED_UNSET, actualLastUsed); |
| + // Verify that neither web app is marked as launched. |
| + boolean actualLaunched = webapp1Prefs.getBoolean(WebappDataStorage.KEY_LAUNCHED, false); |
| + assertTrue(!actualLaunched); |
| + actualLaunched = webapp2Prefs.getBoolean(WebappDataStorage.KEY_LAUNCHED, false); |
| + assertTrue(!actualLaunched); |
| + |
| // Verify that the URL and scope for both web apps is WebappDataStorage.URL_INVALID. |
| String actualScope = webapp1Prefs.getString( |
| WebappDataStorage.KEY_SCOPE, WebappDataStorage.URL_INVALID); |
| @@ -386,9 +417,9 @@ public class WebappRegistryTest { |
| Robolectric.runUiThreadTasks(); |
| assertTrue(mCallbackCalled); |
| - // Open the webapp up to set the last used time. |
| + // Open the webapp up to set the last used time and launched. |
| WebappRegistry.getWebappDataStorage(Robolectric.application, "webapp", |
| - new FetchStorageCallback(null)); |
| + new FetchStorageCallback(null, true)); |
| BackgroundShadowAsyncTask.runBackgroundTasks(); |
| Robolectric.runUiThreadTasks(); |
| assertTrue(mCallbackCalled); |
| @@ -398,15 +429,20 @@ public class WebappRegistryTest { |
| WebappDataStorage.KEY_LAST_USED, WebappDataStorage.LAST_USED_INVALID); |
| assertTrue(WebappDataStorage.LAST_USED_INVALID != actualLastUsed); |
| assertTrue(WebappDataStorage.LAST_USED_UNSET != actualLastUsed); |
| + |
| + // Verify that the app is marked as launched. |
| + boolean actualLaunched = webappPrefs.getBoolean(WebappDataStorage.KEY_LAUNCHED, false); |
| + assertTrue(actualLaunched); |
| } |
| @Test |
| @Feature({"Webapp"}) |
| public void testUpdateAfterClearWebappHistory() throws Exception { |
| - final String webappUrl = "http://www.google.com"; |
| + final String webappUrl = "http://www.google.com"; |
| + final String webappScope = "http://www.google.com/"; |
| final Intent shortcutIntent = createShortcutIntent(webappUrl); |
| WebappRegistry.registerWebapp(Robolectric.application, "webapp", |
| - new FetchStorageCallback(shortcutIntent)); |
| + new FetchStorageCallback(shortcutIntent, false)); |
| BackgroundShadowAsyncTask.runBackgroundTasks(); |
| Robolectric.runUiThreadTasks(); |
| assertTrue(mCallbackCalled); |
| @@ -414,13 +450,17 @@ public class WebappRegistryTest { |
| SharedPreferences webappPrefs = Robolectric.application.getSharedPreferences( |
| WebappDataStorage.SHARED_PREFS_FILE_PREFIX + "webapp", Context.MODE_PRIVATE); |
| + // Verify that the app is not marked as launched. |
| + boolean actualLaunched = webappPrefs.getBoolean(WebappDataStorage.KEY_LAUNCHED, true); |
| + assertTrue(actualLaunched); |
| + |
| // Verify that the URL and scope match the original in the intent. |
| - String actualURL = webappPrefs.getString( |
| + String actualUrl = webappPrefs.getString( |
| WebappDataStorage.KEY_URL, WebappDataStorage.URL_INVALID); |
| - assertEquals(webappUrl, actualURL); |
| + assertEquals(webappUrl, actualUrl); |
| String actualScope = webappPrefs.getString( |
| WebappDataStorage.KEY_SCOPE, WebappDataStorage.URL_INVALID); |
| - assertEquals(webappUrl, actualScope); |
| + assertEquals(webappScope, actualScope); |
| WebappRegistry.clearWebappHistory(Robolectric.application, new CallbackRunner()); |
| BackgroundShadowAsyncTask.runBackgroundTasks(); |
| @@ -429,18 +469,107 @@ public class WebappRegistryTest { |
| // Update the webapp from the intent again. |
| WebappRegistry.getWebappDataStorage(Robolectric.application, "webapp", |
| - new FetchStorageCallback(shortcutIntent)); |
| + new FetchStorageCallback(shortcutIntent, true)); |
| BackgroundShadowAsyncTask.runBackgroundTasks(); |
| Robolectric.runUiThreadTasks(); |
| assertTrue(mCallbackCalled); |
| + // Verify that the app is marked as launched. |
| + actualLaunched = webappPrefs.getBoolean(WebappDataStorage.KEY_LAUNCHED, true); |
| + assertTrue(actualLaunched); |
| + |
| // Verify that the URL and scope match the original in the intent. |
| - actualURL = webappPrefs.getString( |
| + actualUrl = webappPrefs.getString( |
| WebappDataStorage.KEY_URL, WebappDataStorage.URL_INVALID); |
| - assertEquals(webappUrl, actualURL); |
| + assertEquals(webappUrl, actualUrl); |
| actualScope = webappPrefs.getString( |
| WebappDataStorage.KEY_SCOPE, WebappDataStorage.URL_INVALID); |
| - assertEquals(webappUrl, actualScope); |
| + assertEquals(webappScope, actualScope); |
| + } |
| + |
| + @Test |
| + @Feature({"Webapp"}) |
| + public void testGetWebappDataStorageForUrl() throws Exception { |
|
gone
2016/04/07 19:10:45
Can you add comments here? I'm not sure what I'm
dominickn
2016/04/08 01:10:46
Done.
|
| + final String webapp1Url = "https://www.google.com/"; |
| + final String webapp2Url = "https://drive.google.com/"; |
| + final String webapp3Url = "https://www.google.com/drive/index.html"; |
| + final String webapp4Url = "https://www.google.com/drive/docs/index.html"; |
| + |
| + final String webapp3Scope = "https://www.google.com/drive/"; |
| + final String webapp4Scope = "https://www.google.com/drive/docs/"; |
| + |
| + final String test1Url = "https://www.google.com/index.html"; |
| + final String test2Url = "https://www.google.com/drive/recent.html"; |
| + final String test3Url = "https://www.google.com/drive/docs/recent.html"; |
| + final String test4Url = "https://www.google.com/drive/docs/recent/index.html"; |
| + final String test5Url = "https://maps.google.com/"; |
| + |
| + Intent shortcutIntent1 = createShortcutIntent(webapp1Url); |
| + Intent shortcutIntent2 = createShortcutIntent(webapp2Url); |
| + Intent shortcutIntent3 = createShortcutIntent(webapp3Url); |
| + Intent shortcutIntent4 = createShortcutIntent(webapp4Url); |
| + |
| + WebappRegistry.registerWebapp(Robolectric.application, "webapp1", |
| + new FetchStorageCallback(shortcutIntent1, true)); |
| + BackgroundShadowAsyncTask.runBackgroundTasks(); |
| + Robolectric.runUiThreadTasks(); |
| + assertTrue(mCallbackCalled); |
| + |
| + WebappRegistry.registerWebapp(Robolectric.application, "webapp2", |
| + new FetchStorageCallback(shortcutIntent2, false)); |
| + BackgroundShadowAsyncTask.runBackgroundTasks(); |
| + Robolectric.runUiThreadTasks(); |
| + assertTrue(mCallbackCalled); |
| + |
| + WebappRegistry.registerWebapp(Robolectric.application, "webapp3", |
| + new FetchStorageCallback(shortcutIntent3, true)); |
| + BackgroundShadowAsyncTask.runBackgroundTasks(); |
| + Robolectric.runUiThreadTasks(); |
| + assertTrue(mCallbackCalled); |
| + |
| + WebappRegistry.registerWebapp(Robolectric.application, "webapp4", |
| + new FetchStorageCallback(shortcutIntent4, false)); |
| + BackgroundShadowAsyncTask.runBackgroundTasks(); |
| + Robolectric.runUiThreadTasks(); |
| + assertTrue(mCallbackCalled); |
| + |
| + WebappRegistry.getWebappDataStorageForUrl(Robolectric.application, test1Url, |
| + new FetchStorageByUrlCallback(webapp1Url, webapp1Url)); |
| + BackgroundShadowAsyncTask.runBackgroundTasks(); |
| + Robolectric.runUiThreadTasks(); |
| + assertTrue(mCallbackCalled); |
| + |
| + WebappRegistry.getWebappDataStorageForUrl(Robolectric.application, test2Url, |
| + new FetchStorageByUrlCallback(webapp3Url, webapp3Scope)); |
| + BackgroundShadowAsyncTask.runBackgroundTasks(); |
| + Robolectric.runUiThreadTasks(); |
| + assertTrue(mCallbackCalled); |
| + |
| + WebappRegistry.getWebappDataStorageForUrl(Robolectric.application, test3Url, |
| + new FetchStorageByUrlCallback(webapp4Url, webapp4Scope)); |
| + BackgroundShadowAsyncTask.runBackgroundTasks(); |
| + Robolectric.runUiThreadTasks(); |
| + assertTrue(mCallbackCalled); |
| + |
| + WebappRegistry.getWebappDataStorageForUrl(Robolectric.application, test4Url, |
| + new FetchStorageByUrlCallback(webapp4Url, webapp4Scope)); |
| + BackgroundShadowAsyncTask.runBackgroundTasks(); |
| + Robolectric.runUiThreadTasks(); |
| + assertTrue(mCallbackCalled); |
| + |
| + mCallbackCalled = false; |
| + WebappRegistry.getWebappDataStorageForUrl(Robolectric.application, test5Url, |
| + new WebappRegistry.FetchWebappDataStorageCallback() { |
| + @Override |
| + public void onWebappDataStorageRetrieved(WebappDataStorage storage) { |
| + assertEquals(null, storage); |
| + mCallbackCalled = true; |
| + } |
| + } |
| + ); |
| + BackgroundShadowAsyncTask.runBackgroundTasks(); |
| + Robolectric.runUiThreadTasks(); |
| + assertTrue(mCallbackCalled); |
| } |
| private Set<String> addWebappsToRegistry(String... webapps) { |
| @@ -457,7 +586,8 @@ public class WebappRegistryTest { |
| } |
| private Intent createShortcutIntent(String url) { |
| - return ShortcutHelper.createWebappShortcutIntent("id", "action", url, url, "name", |
| - "shortName", null, ShortcutHelper.WEBAPP_SHORTCUT_VERSION, 0, 0, 0, false); |
| + return ShortcutHelper.createWebappShortcutIntent("id", "action", url, |
| + ShortcutHelper.getScopeFromUrl(url), "name", "shortName", null, |
| + ShortcutHelper.WEBAPP_SHORTCUT_VERSION, 0, 0, 0, false); |
| } |
| } |