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

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

Issue 2921623004: Support badge icon in WebAPK update components (Closed)
Patch Set: rebase Created 3 years, 6 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/WebApkUpdateManagerTest.java
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
index 6b36fd83fce5d8b78f65321468e78618e4baef90..fa5d51806c87bb574b068fdfdec4cf654e13f634 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
@@ -59,8 +59,10 @@ public class WebApkUpdateManagerTest {
private static final String SCOPE_URL = "/";
private static final String NAME = "Long Name";
private static final String SHORT_NAME = "Short Name";
- private static final String ICON_URL = "/icon.png";
- private static final String ICON_MURMUR2_HASH = "3";
+ private static final String PRIMARY_ICON_URL = "/icon.png";
+ private static final String PRIMARY_ICON_MURMUR2_HASH = "3";
+ private static final String BADGE_ICON_URL = "/badge.png";
+ private static final String BADGE_ICON_MURMUR2_HASH = "4";
private static final int DISPLAY_MODE = WebDisplayMode.UNDEFINED;
private static final int ORIENTATION = ScreenOrientationValues.DEFAULT;
private static final long THEME_COLOR = 1L;
@@ -142,14 +144,14 @@ public class WebApkUpdateManagerTest {
}
@Override
- protected void scheduleUpdate(WebApkInfo info, String bestIconUrl,
+ protected void scheduleUpdate(WebApkInfo info, String primaryIconUrl, String badgeIconUrl,
boolean isManifestStale) {
mUpdateName = info.name();
- super.scheduleUpdate(info, bestIconUrl, isManifestStale);
+ super.scheduleUpdate(info, primaryIconUrl, badgeIconUrl, isManifestStale);
}
@Override
- protected void updateAsyncImpl(WebApkInfo info, String bestIconUrl,
+ protected void updateAsyncImpl(WebApkInfo info, String primaryIconUrl, String badgeIconUrl,
boolean isManifestStale) {
mUpdateRequested = true;
}
@@ -182,8 +184,9 @@ public class WebApkUpdateManagerTest {
public String name;
public String shortName;
public Map<String, String> iconUrlToMurmur2HashMap;
- public String bestIconUrl;
- public Bitmap bestIcon;
+ public String primaryIconUrl;
+ public Bitmap primaryIcon;
+ public String badgeIconUrl;
public Bitmap badgeIcon;
public int displayMode;
public int orientation;
@@ -243,11 +246,13 @@ public class WebApkUpdateManagerTest {
manifestData.shortName = SHORT_NAME;
manifestData.iconUrlToMurmur2HashMap = new HashMap<>();
- manifestData.iconUrlToMurmur2HashMap.put(ICON_URL, ICON_MURMUR2_HASH);
+ manifestData.iconUrlToMurmur2HashMap.put(PRIMARY_ICON_URL, PRIMARY_ICON_MURMUR2_HASH);
+ manifestData.iconUrlToMurmur2HashMap.put(BADGE_ICON_URL, BADGE_ICON_MURMUR2_HASH);
- manifestData.bestIconUrl = ICON_URL;
- manifestData.bestIcon = createBitmap(Color.GREEN);
- manifestData.badgeIcon = null;
+ manifestData.primaryIconUrl = PRIMARY_ICON_URL;
+ manifestData.primaryIcon = createBitmap(Color.GREEN);
+ manifestData.badgeIconUrl = BADGE_ICON_URL;
+ manifestData.badgeIcon = createBitmap(Color.BLUE);
manifestData.displayMode = DISPLAY_MODE;
manifestData.orientation = ORIENTATION;
manifestData.themeColor = THEME_COLOR;
@@ -260,7 +265,7 @@ public class WebApkUpdateManagerTest {
final String kPackageName = "org.random.webapk";
return WebApkInfo.create(getWebApkId(kPackageName), "", false /* forceNavigation */,
- manifestData.scopeUrl, new WebApkInfo.Icon(manifestData.bestIcon),
+ manifestData.scopeUrl, new WebApkInfo.Icon(manifestData.primaryIcon),
new WebApkInfo.Icon(manifestData.badgeIcon), manifestData.name,
manifestData.shortName, manifestData.displayMode, manifestData.orientation, -1,
manifestData.themeColor, manifestData.backgroundColor, kPackageName, -1,
@@ -297,8 +302,10 @@ public class WebApkUpdateManagerTest {
private static void onGotManifestData(WebApkUpdateManager updateManager,
ManifestData fetchedManifestData) {
- String bestIconUrl = randomIconUrl(fetchedManifestData);
- updateManager.onGotManifestData(infoFromManifestData(fetchedManifestData), bestIconUrl);
+ String primaryIconUrl = randomIconUrl(fetchedManifestData);
+ String badgeIconUrl = randomIconUrl(fetchedManifestData);
+ updateManager.onGotManifestData(
+ infoFromManifestData(fetchedManifestData), primaryIconUrl, badgeIconUrl);
}
private static String randomIconUrl(ManifestData fetchedManifestData) {
@@ -321,8 +328,8 @@ public class WebApkUpdateManagerTest {
new TestWebApkUpdateManager(getStorage(WEBAPK_PACKAGE_NAME));
updateIfNeeded(updateManager);
assertTrue(updateManager.updateCheckStarted());
- updateManager.onGotManifestData(
- infoFromManifestData(fetchedManifestData), fetchedManifestData.bestIconUrl);
+ updateManager.onGotManifestData(infoFromManifestData(fetchedManifestData),
+ fetchedManifestData.primaryIconUrl, fetchedManifestData.badgeIconUrl);
return updateManager.updateRequested();
}
@@ -627,28 +634,57 @@ public class WebApkUpdateManagerTest {
/**
* Test that an upgrade is requested when:
- * - WebAPK was generated using icon at {@link ICON_URL} from Web Manifest.
- * - Bitmap at {@link ICON_URL} has changed.
+ * - WebAPK was generated using icon at {@link PRIMARY_ICON_URL} from Web Manifest.
+ * - Bitmap at {@link PRIMARY_ICON_URL} has changed.
*/
@Test
- public void testHomescreenIconChangeShouldUpgrade() {
+ public void testPrimaryIconChangeShouldUpgrade() {
ManifestData fetchedData = defaultManifestData();
- fetchedData.iconUrlToMurmur2HashMap.put(fetchedData.bestIconUrl, ICON_MURMUR2_HASH + "1");
- fetchedData.bestIcon = createBitmap(Color.BLUE);
+ fetchedData.iconUrlToMurmur2HashMap.put(
+ fetchedData.primaryIconUrl, PRIMARY_ICON_MURMUR2_HASH + "1");
+ fetchedData.primaryIcon = createBitmap(Color.BLUE);
assertTrue(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
}
/**
* Test that an upgrade is requested when:
- * - WebAPK is generated using icon at {@link ICON_URL} from Web Manifest.
- * - Web Manifest is updated to refer to different icon.
+ * - WebAPK was generated using icon at {@link BADGE_ICON_URL} from Web Manifest.
+ * - Bitmap at {@link BADGE_ICON_URL} has changed.
*/
@Test
- public void testHomescreenBestIconUrlChangeShouldUpgrade() {
+ public void testBadgeIconChangeShouldUpgrade() {
+ ManifestData fetchedData = defaultManifestData();
+ fetchedData.iconUrlToMurmur2HashMap.put(
+ fetchedData.badgeIconUrl, BADGE_ICON_MURMUR2_HASH + "1");
+ fetchedData.badgeIcon = createBitmap(Color.GREEN);
+ assertTrue(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
+ }
+
+ /**
+ * Test that an upgrade is requested when:
+ * - WebAPK is generated using icon at {@link PRIMARY_ICON_URL} from Web Manifest.
+ * - A new icon URL is added to the Web Manifest. And InstallableManager selects the new icon as
+ * the primary icon.
+ */
+ @Test
+ public void testPrimaryIconUrlChangeShouldUpgrade() {
ManifestData fetchedData = defaultManifestData();
- fetchedData.iconUrlToMurmur2HashMap.clear();
fetchedData.iconUrlToMurmur2HashMap.put("/icon2.png", "22");
- fetchedData.bestIconUrl = "/icon2.png";
+ fetchedData.primaryIconUrl = "/icon2.png";
+ assertTrue(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
+ }
+
+ /**
+ * Test that an upgrade is requested when:
+ * - WebAPK is generated using icon at {@link BADGE_ICON_URL} from Web Manifest.
+ * - A new icon URL is added to the Web Manifest. And InstallableManager selects the new icon as
+ * the badge icon.
+ */
+ @Test
+ public void testBadgeIconUrlChangeShouldUpgrade() {
+ ManifestData fetchedData = defaultManifestData();
+ fetchedData.iconUrlToMurmur2HashMap.put("/badge2.png", "44");
+ fetchedData.badgeIconUrl = "/badge2.png";
assertTrue(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
}
@@ -656,45 +692,55 @@ public class WebApkUpdateManagerTest {
* Test that an upgrade is not requested if:
* - icon URL is added to the Web Manifest
* AND
- * - "best" icon URL for the launcher icon did not change.
+ * - "best" icon URL for the primary icon did not change.
+ * AND
+ * - "best" icon URL for the badge icon did not change.
*/
@Test
- public void testIconUrlsChangeShouldNotUpgradeIfTheBestIconUrlDoesNotChange() {
+ public void testIconUrlsChangeShouldNotUpgradeIfPrimaryIconUrlAndBadgeIconUrlDoNotChange() {
ManifestData fetchedData = defaultManifestData();
- fetchedData.iconUrlToMurmur2HashMap.clear();
- fetchedData.iconUrlToMurmur2HashMap.put(ICON_URL, ICON_MURMUR2_HASH);
fetchedData.iconUrlToMurmur2HashMap.put("/icon2.png", null);
assertFalse(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
}
/**
- * Test than upgrade is requested if:
+ * Test that an upgrade is not requested if:
* - the WebAPK's meta data has murmur2 hashes for all of the icons.
* AND
* - the Web Manifest has not changed
* AND
- * - the computed best icon URL is different from the one stored in the WebAPK's meta data.
+ * - the computed best icon URLs are different from the one stored in the WebAPK's meta data.
*/
@Test
public void testWebManifestSameButBestIconUrlChangedShouldNotUpgrade() {
String iconUrl1 = "/icon1.png";
String iconUrl2 = "/icon2.png";
+ String badgeUrl1 = "/badge1.png";
+ String badgeUrl2 = "/badge2.pgn";
String hash1 = "11";
String hash2 = "22";
+ String hash3 = "33";
+ String hash4 = "44";
- ManifestData oldData = defaultManifestData();
- oldData.bestIconUrl = iconUrl1;
- oldData.iconUrlToMurmur2HashMap.clear();
- oldData.iconUrlToMurmur2HashMap.put(iconUrl1, hash1);
- oldData.iconUrlToMurmur2HashMap.put(iconUrl2, hash2);
-
- ManifestData fetchedData = defaultManifestData();
- fetchedData.bestIconUrl = iconUrl2;
- fetchedData.iconUrlToMurmur2HashMap.clear();
- fetchedData.iconUrlToMurmur2HashMap.put(iconUrl1, null);
- fetchedData.iconUrlToMurmur2HashMap.put(iconUrl2, hash2);
-
- assertFalse(checkUpdateNeededForFetchedManifest(oldData, fetchedData));
+ ManifestData androidManifestData = defaultManifestData();
+ androidManifestData.primaryIconUrl = iconUrl1;
+ androidManifestData.badgeIconUrl = badgeUrl1;
+ androidManifestData.iconUrlToMurmur2HashMap.clear();
+ androidManifestData.iconUrlToMurmur2HashMap.put(iconUrl1, hash1);
+ androidManifestData.iconUrlToMurmur2HashMap.put(iconUrl2, hash2);
+ androidManifestData.iconUrlToMurmur2HashMap.put(badgeUrl1, hash3);
+ androidManifestData.iconUrlToMurmur2HashMap.put(badgeUrl2, hash4);
+
+ ManifestData fetchedManifestData = defaultManifestData();
+ fetchedManifestData.primaryIconUrl = iconUrl2;
+ fetchedManifestData.badgeIconUrl = badgeUrl2;
+ fetchedManifestData.iconUrlToMurmur2HashMap.clear();
+ fetchedManifestData.iconUrlToMurmur2HashMap.put(iconUrl1, null);
+ fetchedManifestData.iconUrlToMurmur2HashMap.put(iconUrl2, hash2);
+ fetchedManifestData.iconUrlToMurmur2HashMap.put(badgeUrl1, null);
+ fetchedManifestData.iconUrlToMurmur2HashMap.put(badgeUrl2, hash4);
+
+ assertFalse(checkUpdateNeededForFetchedManifest(androidManifestData, fetchedManifestData));
}
@Test

Powered by Google App Engine
This is Rietveld 408576698