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

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

Issue 1845233002: Store standalone web app data in WebappDataStorage as well as the homescreen intent. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@notification-deep-linking
Patch Set: Final nit Created 4 years, 8 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
Index: chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDataStorageTest.java
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDataStorageTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDataStorageTest.java
index 5ff97d69a6e9b10db149b5510472399790faf711..2582b402c2045082f77127616de3cee2b3ac21f4 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDataStorageTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDataStorageTest.java
@@ -8,6 +8,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import android.content.Context;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
@@ -63,7 +64,18 @@ public class WebappDataStorageTest {
assertEquals("webapp_", WebappDataStorage.SHARED_PREFS_FILE_PREFIX);
assertEquals("splash_icon", WebappDataStorage.KEY_SPLASH_ICON);
assertEquals("last_used", WebappDataStorage.KEY_LAST_USED);
+ assertEquals("url", WebappDataStorage.KEY_URL);
assertEquals("scope", WebappDataStorage.KEY_SCOPE);
+ assertEquals("icon", WebappDataStorage.KEY_ICON);
+ assertEquals("name", WebappDataStorage.KEY_NAME);
+ assertEquals("short_name", WebappDataStorage.KEY_SHORT_NAME);
+ assertEquals("orientation", WebappDataStorage.KEY_ORIENTATION);
+ assertEquals("theme_color", WebappDataStorage.KEY_THEME_COLOR);
+ assertEquals("background_color", WebappDataStorage.KEY_BACKGROUND_COLOR);
+ assertEquals("source", WebappDataStorage.KEY_SOURCE);
+ assertEquals("action", WebappDataStorage.KEY_ACTION);
+ assertEquals("is_icon_generated", WebappDataStorage.KEY_IS_ICON_GENERATED);
+ assertEquals("version", WebappDataStorage.KEY_VERSION);
}
@Test
@@ -83,19 +95,6 @@ public class WebappDataStorageTest {
@Test
@Feature({"Webapp"})
- public void testOpenUpdatesLastUsed() throws Exception {
- long before = System.currentTimeMillis();
-
- WebappDataStorage.open(Robolectric.application, "test");
- BackgroundShadowAsyncTask.runBackgroundTasks();
-
- long after = System.currentTimeMillis();
- long value = mSharedPreferences.getLong(WebappDataStorage.KEY_LAST_USED, -1L);
- assertTrue("Timestamp is out of range", before <= value && value <= after);
- }
-
- @Test
- @Feature({"Webapp"})
public void testSplashImageRetrieval() throws Exception {
final Bitmap expected = createBitmap();
mSharedPreferences.edit()
@@ -132,27 +131,6 @@ public class WebappDataStorageTest {
mSharedPreferences.getString(WebappDataStorage.KEY_SPLASH_ICON, null));
}
- // TODO(lalitm) - There seems to be a bug in Robolectric where a Bitmap
- // produced from a byte stream is hardcoded to be a 100x100 bitmap with
- // ARGB_8888 pixel format. Because of this, we need to work around the
- // equality check of bitmaps. Remove this once the bug is fixed.
- private static boolean bitmapEquals(Bitmap expected, Bitmap actual) {
- if (actual.getWidth() != 100) return false;
- if (actual.getHeight() != 100) return false;
- if (!actual.getConfig().equals(Bitmap.Config.ARGB_8888)) return false;
-
- for (int i = 0; i < actual.getWidth(); i++) {
- for (int j = 0; j < actual.getHeight(); j++) {
- if (actual.getPixel(i, j) != 0) return false;
- }
- }
- return true;
- }
-
- private static Bitmap createBitmap() {
- return Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_4444);
- }
-
@Test
@Feature({"Webapp"})
public void testScopeRetrieval() throws Exception {
@@ -171,22 +149,128 @@ public class WebappDataStorageTest {
@Test
@Feature({"Webapp"})
- public void testScopeUpdate() throws Exception {
- final String scope1 = "http://maps.google.com";
- final String scope2 = "http://drive.google.com";
+ public void testURLRetrieval() throws Exception {
+ final String url = "https://www.google.com";
+ mSharedPreferences.edit()
+ .putString(WebappDataStorage.KEY_URL, url)
+ .commit();
- WebappDataStorage.setScope(Robolectric.application, "test", scope1);
+ WebappDataStorage.getURL(Robolectric.application, "test",
+ new FetchCallback<String>(url));
BackgroundShadowAsyncTask.runBackgroundTasks();
Robolectric.runUiThreadTasks();
- assertEquals(scope1, mSharedPreferences.getString(WebappDataStorage.KEY_SCOPE, null));
+ assertTrue(mCallbackCalled);
+ }
- // Ensure that calling setScope with a different URL after it has been set
- // doesn't change the scope stored.
- WebappDataStorage.setScope(Robolectric.application, "test", scope2);
+ @Test
+ @Feature({"Webapp"})
+ public void testIntentUpdate() throws Exception {
+ final String id = "id";
+ final String action = "action";
+ final String url = "url";
+ final String scope = "scope";
+ final String name = "name";
+ final String shortName = "shortName";
+ final Bitmap icon = createBitmap();
+ final int orientation = 1;
+ final long themeColor = 2;
+ final long backgroundColor = 3;
+ final boolean isIconGenerated = false;
+ Intent shortcutIntent = ShortcutHelper.createWebappShortcutIntent(id, action, url, scope,
+ name, shortName, icon, ShortcutHelper.WEBAPP_SHORTCUT_VERSION, orientation,
+ themeColor, backgroundColor, isIconGenerated);
+
+ WebappDataStorage storage = WebappDataStorage.open(Robolectric.application, "test");
+ storage.updateFromShortcutIntent(shortcutIntent);
BackgroundShadowAsyncTask.runBackgroundTasks();
Robolectric.runUiThreadTasks();
- assertEquals(scope1, mSharedPreferences.getString(WebappDataStorage.KEY_SCOPE, null));
+ assertEquals(action, mSharedPreferences.getString(WebappDataStorage.KEY_ACTION, null));
+ assertEquals(url, mSharedPreferences.getString(WebappDataStorage.KEY_URL, null));
+ assertEquals(scope, mSharedPreferences.getString(WebappDataStorage.KEY_SCOPE, null));
+ assertEquals(name, mSharedPreferences.getString(WebappDataStorage.KEY_NAME, null));
+ assertEquals(shortName,
+ mSharedPreferences.getString(WebappDataStorage.KEY_SHORT_NAME, null));
+ assertEquals(ShortcutHelper.encodeBitmapAsString(icon),
+ mSharedPreferences.getString(WebappDataStorage.KEY_ICON, null));
+ assertEquals(ShortcutHelper.WEBAPP_SHORTCUT_VERSION,
+ mSharedPreferences.getInt(WebappDataStorage.KEY_VERSION, 0));
+ assertEquals(orientation, mSharedPreferences.getInt(WebappDataStorage.KEY_ORIENTATION, 0));
+ assertEquals(themeColor, mSharedPreferences.getLong(WebappDataStorage.KEY_THEME_COLOR, 0));
+ assertEquals(backgroundColor,
+ mSharedPreferences.getLong(WebappDataStorage.KEY_BACKGROUND_COLOR, 0));
+ assertEquals(isIconGenerated,
+ mSharedPreferences.getBoolean(WebappDataStorage.KEY_IS_ICON_GENERATED, true));
+
+ // Wipe out the data and ensure that it is all gone.
+ mSharedPreferences.edit().remove(WebappDataStorage.KEY_ACTION)
+ .remove(WebappDataStorage.KEY_URL)
+ .remove(WebappDataStorage.KEY_SCOPE)
+ .remove(WebappDataStorage.KEY_NAME)
+ .remove(WebappDataStorage.KEY_SHORT_NAME)
+ .remove(WebappDataStorage.KEY_ICON)
+ .remove(WebappDataStorage.KEY_VERSION)
+ .remove(WebappDataStorage.KEY_ORIENTATION)
+ .remove(WebappDataStorage.KEY_THEME_COLOR)
+ .remove(WebappDataStorage.KEY_BACKGROUND_COLOR)
+ .remove(WebappDataStorage.KEY_IS_ICON_GENERATED)
+ .commit();
+
+ assertEquals(null, mSharedPreferences.getString(WebappDataStorage.KEY_ACTION, null));
+ assertEquals(null, mSharedPreferences.getString(WebappDataStorage.KEY_URL, null));
+ assertEquals(null, mSharedPreferences.getString(WebappDataStorage.KEY_SCOPE, null));
+ assertEquals(null, mSharedPreferences.getString(WebappDataStorage.KEY_NAME, null));
+ assertEquals(null, mSharedPreferences.getString(WebappDataStorage.KEY_SHORT_NAME, null));
+ assertEquals(null, mSharedPreferences.getString(WebappDataStorage.KEY_ICON, null));
+ assertEquals(0, mSharedPreferences.getInt(WebappDataStorage.KEY_VERSION, 0));
+ assertEquals(0, mSharedPreferences.getInt(WebappDataStorage.KEY_ORIENTATION, 0));
+ assertEquals(0, mSharedPreferences.getLong(WebappDataStorage.KEY_THEME_COLOR, 0));
+ assertEquals(0, mSharedPreferences.getLong(WebappDataStorage.KEY_BACKGROUND_COLOR, 0));
+ assertEquals(true,
+ mSharedPreferences.getBoolean(WebappDataStorage.KEY_IS_ICON_GENERATED, true));
+
+ // Update again from the intent and ensure that the data is restored.
+ storage.updateFromShortcutIntent(shortcutIntent);
+ BackgroundShadowAsyncTask.runBackgroundTasks();
+ Robolectric.runUiThreadTasks();
+
+ assertEquals(action, mSharedPreferences.getString(WebappDataStorage.KEY_ACTION, null));
+ assertEquals(url, mSharedPreferences.getString(WebappDataStorage.KEY_URL, null));
+ assertEquals(scope, mSharedPreferences.getString(WebappDataStorage.KEY_SCOPE, null));
+ assertEquals(name, mSharedPreferences.getString(WebappDataStorage.KEY_NAME, null));
+ assertEquals(shortName,
+ mSharedPreferences.getString(WebappDataStorage.KEY_SHORT_NAME, null));
+ assertEquals(ShortcutHelper.encodeBitmapAsString(icon),
+ mSharedPreferences.getString(WebappDataStorage.KEY_ICON, null));
+ assertEquals(ShortcutHelper.WEBAPP_SHORTCUT_VERSION,
+ mSharedPreferences.getInt(WebappDataStorage.KEY_VERSION, 0));
+ assertEquals(orientation, mSharedPreferences.getInt(WebappDataStorage.KEY_ORIENTATION, 0));
+ assertEquals(themeColor, mSharedPreferences.getLong(WebappDataStorage.KEY_THEME_COLOR, 0));
+ assertEquals(backgroundColor,
+ mSharedPreferences.getLong(WebappDataStorage.KEY_BACKGROUND_COLOR, 0));
+ assertEquals(isIconGenerated,
+ mSharedPreferences.getBoolean(WebappDataStorage.KEY_IS_ICON_GENERATED, true));
+ }
+
+ // TODO(lalitm) - There seems to be a bug in Robolectric where a Bitmap
+ // produced from a byte stream is hardcoded to be a 100x100 bitmap with
+ // ARGB_8888 pixel format. Because of this, we need to work around the
+ // equality check of bitmaps. Remove this once the bug is fixed.
+ private static boolean bitmapEquals(Bitmap expected, Bitmap actual) {
+ if (actual.getWidth() != 100) return false;
+ if (actual.getHeight() != 100) return false;
+ if (!actual.getConfig().equals(Bitmap.Config.ARGB_8888)) return false;
+
+ for (int i = 0; i < actual.getWidth(); i++) {
+ for (int j = 0; j < actual.getHeight(); j++) {
+ if (actual.getPixel(i, j) != 0) return false;
+ }
+ }
+ return true;
+ }
+
+ private static Bitmap createBitmap() {
+ return Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_4444);
}
}

Powered by Google App Engine
This is Rietveld 408576698