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 |