| Index: chrome/android/junit/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorTest.java
|
| diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorTest.java
|
| index 2fc7f262040cb41383a0d5ac3c2bbf5a809f7e21..a580c4726a507879aef469b891f340abd291986c 100644
|
| --- a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorTest.java
|
| +++ b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorTest.java
|
| @@ -5,8 +5,10 @@
|
| package org.chromium.chrome.browser.webapps;
|
|
|
| import android.content.Context;
|
| +import android.content.Intent;
|
| import android.graphics.Bitmap;
|
| import android.graphics.Color;
|
| +import android.os.Bundle;
|
| import android.text.TextUtils;
|
|
|
| import org.junit.Assert;
|
| @@ -24,6 +26,8 @@ import org.chromium.chrome.browser.ShortcutHelper;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| import org.chromium.content_public.common.ScreenOrientationValues;
|
| import org.chromium.testing.local.LocalRobolectricTestRunner;
|
| +import org.chromium.webapk.lib.common.WebApkMetaDataKeys;
|
| +import org.chromium.webapk.test.WebApkTestHelper;
|
|
|
| import java.util.HashMap;
|
| import java.util.Map;
|
| @@ -41,8 +45,8 @@ public class ManifestUpgradeDetectorTest {
|
| private static final String WEBAPK_SHORT_NAME = "Short Name";
|
| private static final String WEBAPK_BEST_ICON_URL = "/icon.png";
|
| private static final String WEBAPK_BEST_ICON_MURMUR2_HASH = "3";
|
| - private static final int WEBAPK_DISPLAY_MODE = WebDisplayMode.Standalone;
|
| - private static final int WEBAPK_ORIENTATION = ScreenOrientationValues.LANDSCAPE;
|
| + private static final int WEBAPK_DISPLAY_MODE = WebDisplayMode.Undefined;
|
| + private static final int WEBAPK_ORIENTATION = ScreenOrientationValues.DEFAULT;
|
| private static final long WEBAPK_THEME_COLOR = 1L;
|
| private static final long WEBAPK_BACKGROUND_COLOR = 2L;
|
| private static final String WEBAPK_MANIFEST_URL = "manifest.json";
|
| @@ -175,43 +179,69 @@ public class ManifestUpgradeDetectorTest {
|
| WEBAPK_MANIFEST_URL, manifestData.startUrl, manifestData.iconUrlToMurmur2HashMap);
|
| }
|
|
|
| - private static TestManifestUpgradeDetector createDetectorWithFetchedData(
|
| - ManifestData fetchedData, TestCallback callback) {
|
| - return createDetector(defaultManifestData(), fetchedData, callback);
|
| + /**
|
| + * Checks whether the WebAPK is updated given data from the WebAPK's Android Manifest and data
|
| + * from the fetched Web Manifest. This function uses the intent version of
|
| + * {@link WebApkInfo#create()} in order to test default values set by the intent version of
|
| + * {@link WebApkInfo#create()} and how the defaults affect whether the WebAPK is updated.
|
| + */
|
| + private boolean checkUpdateNeededForFetchedManifest(
|
| + ManifestData androidManifestData, ManifestData fetchedManifestData) {
|
| + registerWebApk(androidManifestData);
|
| +
|
| + Intent intent = new Intent();
|
| + intent.putExtra(ShortcutHelper.EXTRA_URL, "");
|
| + intent.putExtra(
|
| + ShortcutHelper.EXTRA_WEBAPK_PACKAGE_NAME, WebApkTestHelper.WEBAPK_PACKAGE_NAME);
|
| + WebApkInfo androidManifestInfo = WebApkInfo.create(intent);
|
| +
|
| + TestCallback callback = new TestCallback();
|
| + TestManifestUpgradeDetector detector =
|
| + new TestManifestUpgradeDetector(androidManifestInfo, fetchedManifestData, callback);
|
| + detector.start();
|
| + Assert.assertTrue(callback.mWasCalled);
|
| + return callback.mIsUpgraded;
|
| }
|
|
|
| /**
|
| - * Creates ManifestUpgradeDetector.
|
| - * @param oldData Data used to create WebAPK. Potentially different from Web Manifest data at
|
| - * time that the WebAPK was generated.
|
| - * @param fetchedData Data fetched by ManifestUpgradeDetector.
|
| - * @param callback Callback to call when the upgrade check is complete.
|
| + * Registers WebAPK with default package name. Overwrites previous registrations.
|
| + * @param manifestData <meta-data> values for WebAPK's Android Manifest.
|
| */
|
| - private static TestManifestUpgradeDetector createDetector(
|
| - ManifestData oldData, ManifestData fetchedData, TestCallback callback) {
|
| - return new TestManifestUpgradeDetector(
|
| - infoFromManifestData(oldData), fetchedData, callback);
|
| + private void registerWebApk(ManifestData manifestData) {
|
| + Bundle metaData = new Bundle();
|
| + metaData.putString(WebApkMetaDataKeys.START_URL, manifestData.startUrl);
|
| + metaData.putString(WebApkMetaDataKeys.SCOPE, manifestData.scopeUrl);
|
| + metaData.putString(WebApkMetaDataKeys.NAME, manifestData.name);
|
| + metaData.putString(WebApkMetaDataKeys.SHORT_NAME, manifestData.shortName);
|
| + metaData.putString(WebApkMetaDataKeys.THEME_COLOR, manifestData.themeColor + "L");
|
| + metaData.putString(WebApkMetaDataKeys.BACKGROUND_COLOR, manifestData.backgroundColor + "L");
|
| + metaData.putString(WebApkMetaDataKeys.WEB_MANIFEST_URL, WEBAPK_MANIFEST_URL);
|
| +
|
| + String iconUrlsAndIconMurmur2Hashes = "";
|
| + for (String iconUrl : manifestData.iconUrlToMurmur2HashMap.keySet()) {
|
| + String murmur2Hash = manifestData.iconUrlToMurmur2HashMap.get(iconUrl);
|
| + if (murmur2Hash == null) {
|
| + murmur2Hash = "0";
|
| + }
|
| + iconUrlsAndIconMurmur2Hashes += " " + iconUrl + " " + murmur2Hash;
|
| + }
|
| + iconUrlsAndIconMurmur2Hashes = iconUrlsAndIconMurmur2Hashes.trim();
|
| + metaData.putString(WebApkMetaDataKeys.ICON_URLS_AND_ICON_MURMUR2_HASHES,
|
| + iconUrlsAndIconMurmur2Hashes);
|
| + WebApkTestHelper.registerWebApkWithMetaData(metaData);
|
| }
|
|
|
| @Test
|
| public void testManifestDoesNotUpgrade() {
|
| - TestCallback callback = new TestCallback();
|
| - TestManifestUpgradeDetector detector =
|
| - createDetectorWithFetchedData(defaultManifestData(), callback);
|
| - detector.start();
|
| - Assert.assertTrue(callback.mWasCalled);
|
| - Assert.assertFalse(callback.mIsUpgraded);
|
| + Assert.assertFalse(
|
| + checkUpdateNeededForFetchedManifest(defaultManifestData(), defaultManifestData()));
|
| }
|
|
|
| @Test
|
| public void testStartUrlChangeShouldUpgrade() {
|
| ManifestData fetchedData = defaultManifestData();
|
| fetchedData.startUrl = "/changed.html";
|
| - TestCallback callback = new TestCallback();
|
| - TestManifestUpgradeDetector detector = createDetectorWithFetchedData(fetchedData, callback);
|
| - detector.start();
|
| - Assert.assertTrue(callback.mWasCalled);
|
| - Assert.assertTrue(callback.mIsUpgraded);
|
| + Assert.assertTrue(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
|
| }
|
|
|
| /**
|
| @@ -226,12 +256,7 @@ public class ManifestUpgradeDetectorTest {
|
| ManifestData fetchedData = defaultManifestData();
|
| fetchedData.scopeUrl = "";
|
| Assert.assertTrue(!oldData.scopeUrl.equals(fetchedData.scopeUrl));
|
| -
|
| - TestCallback callback = new TestCallback();
|
| - TestManifestUpgradeDetector detector = createDetector(oldData, fetchedData, callback);
|
| - detector.start();
|
| - Assert.assertTrue(callback.mWasCalled);
|
| - Assert.assertFalse(callback.mIsUpgraded);
|
| + Assert.assertFalse(checkUpdateNeededForFetchedManifest(oldData, fetchedData));
|
| }
|
|
|
| /**
|
| @@ -249,11 +274,7 @@ public class ManifestUpgradeDetectorTest {
|
| fetchedData.startUrl = "/fancy/scope/special/snowflake.html";
|
| fetchedData.scopeUrl = "";
|
|
|
| - TestCallback callback = new TestCallback();
|
| - TestManifestUpgradeDetector detector = createDetector(oldData, fetchedData, callback);
|
| - detector.start();
|
| - Assert.assertTrue(callback.mWasCalled);
|
| - Assert.assertTrue(callback.mIsUpgraded);
|
| + Assert.assertTrue(checkUpdateNeededForFetchedManifest(oldData, fetchedData));
|
| }
|
|
|
| /**
|
| @@ -267,12 +288,7 @@ public class ManifestUpgradeDetectorTest {
|
| fetchedData.iconUrlToMurmur2HashMap.put(fetchedData.bestIconUrl,
|
| WEBAPK_BEST_ICON_MURMUR2_HASH + "1");
|
| fetchedData.bestIcon = createBitmap(Color.BLUE);
|
| - TestCallback callback = new TestCallback();
|
| - TestManifestUpgradeDetector detector = createDetectorWithFetchedData(fetchedData, callback);
|
| -
|
| - detector.start();
|
| - Assert.assertTrue(callback.mWasCalled);
|
| - Assert.assertTrue(callback.mIsUpgraded);
|
| + Assert.assertTrue(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
|
| }
|
|
|
| /**
|
| @@ -286,12 +302,7 @@ public class ManifestUpgradeDetectorTest {
|
| fetchedData.iconUrlToMurmur2HashMap.clear();
|
| fetchedData.iconUrlToMurmur2HashMap.put("/icon2.png", "22");
|
| fetchedData.bestIconUrl = "/icon2.png";
|
| -
|
| - TestCallback callback = new TestCallback();
|
| - TestManifestUpgradeDetector detector = createDetectorWithFetchedData(fetchedData, callback);
|
| - detector.start();
|
| - Assert.assertTrue(callback.mWasCalled);
|
| - Assert.assertTrue(callback.mIsUpgraded);
|
| + Assert.assertTrue(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
|
| }
|
|
|
| /**
|
| @@ -307,12 +318,7 @@ public class ManifestUpgradeDetectorTest {
|
| fetchedData.iconUrlToMurmur2HashMap.put(
|
| WEBAPK_BEST_ICON_URL, WEBAPK_BEST_ICON_MURMUR2_HASH);
|
| fetchedData.iconUrlToMurmur2HashMap.put("/icon2.png", null);
|
| -
|
| - TestCallback callback = new TestCallback();
|
| - TestManifestUpgradeDetector detector = createDetectorWithFetchedData(fetchedData, callback);
|
| - detector.start();
|
| - Assert.assertTrue(callback.mWasCalled);
|
| - Assert.assertFalse(callback.mIsUpgraded);
|
| + Assert.assertFalse(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
|
| }
|
|
|
| /**
|
| @@ -342,10 +348,6 @@ public class ManifestUpgradeDetectorTest {
|
| fetchedData.iconUrlToMurmur2HashMap.put(iconUrl1, null);
|
| fetchedData.iconUrlToMurmur2HashMap.put(iconUrl2, hash2);
|
|
|
| - TestCallback callback = new TestCallback();
|
| - TestManifestUpgradeDetector detector = createDetector(oldData, fetchedData, callback);
|
| - detector.start();
|
| - Assert.assertTrue(callback.mWasCalled);
|
| - Assert.assertFalse(callback.mIsUpgraded);
|
| + Assert.assertFalse(checkUpdateNeededForFetchedManifest(oldData, fetchedData));
|
| }
|
| }
|
|
|