| 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
|
|
|