Commit 78660e87 authored by pkotwicz's avatar pkotwicz Committed by Commit bot

Make ManifestUpgradeDetectorTest use the intent version of WebApkInfo#create()

- This makes the tests more integration-test-like.
- This is a step towards merging ManifestUpgradeDetectorTest and
  WebApkUpdateManagerTest (See https://codereview.chromium.org/2460253002/)

BUG=639536

Review-Url: https://codereview.chromium.org/2543073005
Cr-Commit-Position: refs/heads/master@{#436326}
parent 7ef8ba12
...@@ -5,8 +5,10 @@ ...@@ -5,8 +5,10 @@
package org.chromium.chrome.browser.webapps; package org.chromium.chrome.browser.webapps;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import org.junit.Assert; import org.junit.Assert;
...@@ -24,6 +26,8 @@ import org.chromium.chrome.browser.ShortcutHelper; ...@@ -24,6 +26,8 @@ import org.chromium.chrome.browser.ShortcutHelper;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.content_public.common.ScreenOrientationValues; import org.chromium.content_public.common.ScreenOrientationValues;
import org.chromium.testing.local.LocalRobolectricTestRunner; 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.HashMap;
import java.util.Map; import java.util.Map;
...@@ -41,8 +45,8 @@ public class ManifestUpgradeDetectorTest { ...@@ -41,8 +45,8 @@ public class ManifestUpgradeDetectorTest {
private static final String WEBAPK_SHORT_NAME = "Short Name"; 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_URL = "/icon.png";
private static final String WEBAPK_BEST_ICON_MURMUR2_HASH = "3"; private static final String WEBAPK_BEST_ICON_MURMUR2_HASH = "3";
private static final int WEBAPK_DISPLAY_MODE = WebDisplayMode.Standalone; private static final int WEBAPK_DISPLAY_MODE = WebDisplayMode.Undefined;
private static final int WEBAPK_ORIENTATION = ScreenOrientationValues.LANDSCAPE; private static final int WEBAPK_ORIENTATION = ScreenOrientationValues.DEFAULT;
private static final long WEBAPK_THEME_COLOR = 1L; private static final long WEBAPK_THEME_COLOR = 1L;
private static final long WEBAPK_BACKGROUND_COLOR = 2L; private static final long WEBAPK_BACKGROUND_COLOR = 2L;
private static final String WEBAPK_MANIFEST_URL = "manifest.json"; private static final String WEBAPK_MANIFEST_URL = "manifest.json";
...@@ -175,43 +179,69 @@ public class ManifestUpgradeDetectorTest { ...@@ -175,43 +179,69 @@ public class ManifestUpgradeDetectorTest {
WEBAPK_MANIFEST_URL, manifestData.startUrl, manifestData.iconUrlToMurmur2HashMap); WEBAPK_MANIFEST_URL, manifestData.startUrl, manifestData.iconUrlToMurmur2HashMap);
} }
private static TestManifestUpgradeDetector createDetectorWithFetchedData( /**
ManifestData fetchedData, TestCallback callback) { * Checks whether the WebAPK is updated given data from the WebAPK's Android Manifest and data
return createDetector(defaultManifestData(), fetchedData, callback); * 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. * Registers WebAPK with default package name. Overwrites previous registrations.
* @param oldData Data used to create WebAPK. Potentially different from Web Manifest data at * @param manifestData <meta-data> values for WebAPK's Android Manifest.
* time that the WebAPK was generated.
* @param fetchedData Data fetched by ManifestUpgradeDetector.
* @param callback Callback to call when the upgrade check is complete.
*/ */
private static TestManifestUpgradeDetector createDetector( private void registerWebApk(ManifestData manifestData) {
ManifestData oldData, ManifestData fetchedData, TestCallback callback) { Bundle metaData = new Bundle();
return new TestManifestUpgradeDetector( metaData.putString(WebApkMetaDataKeys.START_URL, manifestData.startUrl);
infoFromManifestData(oldData), fetchedData, callback); 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 @Test
public void testManifestDoesNotUpgrade() { public void testManifestDoesNotUpgrade() {
TestCallback callback = new TestCallback(); Assert.assertFalse(
TestManifestUpgradeDetector detector = checkUpdateNeededForFetchedManifest(defaultManifestData(), defaultManifestData()));
createDetectorWithFetchedData(defaultManifestData(), callback);
detector.start();
Assert.assertTrue(callback.mWasCalled);
Assert.assertFalse(callback.mIsUpgraded);
} }
@Test @Test
public void testStartUrlChangeShouldUpgrade() { public void testStartUrlChangeShouldUpgrade() {
ManifestData fetchedData = defaultManifestData(); ManifestData fetchedData = defaultManifestData();
fetchedData.startUrl = "/changed.html"; fetchedData.startUrl = "/changed.html";
TestCallback callback = new TestCallback(); Assert.assertTrue(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
TestManifestUpgradeDetector detector = createDetectorWithFetchedData(fetchedData, callback);
detector.start();
Assert.assertTrue(callback.mWasCalled);
Assert.assertTrue(callback.mIsUpgraded);
} }
/** /**
...@@ -226,12 +256,7 @@ public class ManifestUpgradeDetectorTest { ...@@ -226,12 +256,7 @@ public class ManifestUpgradeDetectorTest {
ManifestData fetchedData = defaultManifestData(); ManifestData fetchedData = defaultManifestData();
fetchedData.scopeUrl = ""; fetchedData.scopeUrl = "";
Assert.assertTrue(!oldData.scopeUrl.equals(fetchedData.scopeUrl)); Assert.assertTrue(!oldData.scopeUrl.equals(fetchedData.scopeUrl));
Assert.assertFalse(checkUpdateNeededForFetchedManifest(oldData, fetchedData));
TestCallback callback = new TestCallback();
TestManifestUpgradeDetector detector = createDetector(oldData, fetchedData, callback);
detector.start();
Assert.assertTrue(callback.mWasCalled);
Assert.assertFalse(callback.mIsUpgraded);
} }
/** /**
...@@ -249,11 +274,7 @@ public class ManifestUpgradeDetectorTest { ...@@ -249,11 +274,7 @@ public class ManifestUpgradeDetectorTest {
fetchedData.startUrl = "/fancy/scope/special/snowflake.html"; fetchedData.startUrl = "/fancy/scope/special/snowflake.html";
fetchedData.scopeUrl = ""; fetchedData.scopeUrl = "";
TestCallback callback = new TestCallback(); Assert.assertTrue(checkUpdateNeededForFetchedManifest(oldData, fetchedData));
TestManifestUpgradeDetector detector = createDetector(oldData, fetchedData, callback);
detector.start();
Assert.assertTrue(callback.mWasCalled);
Assert.assertTrue(callback.mIsUpgraded);
} }
/** /**
...@@ -267,12 +288,7 @@ public class ManifestUpgradeDetectorTest { ...@@ -267,12 +288,7 @@ public class ManifestUpgradeDetectorTest {
fetchedData.iconUrlToMurmur2HashMap.put(fetchedData.bestIconUrl, fetchedData.iconUrlToMurmur2HashMap.put(fetchedData.bestIconUrl,
WEBAPK_BEST_ICON_MURMUR2_HASH + "1"); WEBAPK_BEST_ICON_MURMUR2_HASH + "1");
fetchedData.bestIcon = createBitmap(Color.BLUE); fetchedData.bestIcon = createBitmap(Color.BLUE);
TestCallback callback = new TestCallback(); Assert.assertTrue(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
TestManifestUpgradeDetector detector = createDetectorWithFetchedData(fetchedData, callback);
detector.start();
Assert.assertTrue(callback.mWasCalled);
Assert.assertTrue(callback.mIsUpgraded);
} }
/** /**
...@@ -286,12 +302,7 @@ public class ManifestUpgradeDetectorTest { ...@@ -286,12 +302,7 @@ public class ManifestUpgradeDetectorTest {
fetchedData.iconUrlToMurmur2HashMap.clear(); fetchedData.iconUrlToMurmur2HashMap.clear();
fetchedData.iconUrlToMurmur2HashMap.put("/icon2.png", "22"); fetchedData.iconUrlToMurmur2HashMap.put("/icon2.png", "22");
fetchedData.bestIconUrl = "/icon2.png"; fetchedData.bestIconUrl = "/icon2.png";
Assert.assertTrue(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
TestCallback callback = new TestCallback();
TestManifestUpgradeDetector detector = createDetectorWithFetchedData(fetchedData, callback);
detector.start();
Assert.assertTrue(callback.mWasCalled);
Assert.assertTrue(callback.mIsUpgraded);
} }
/** /**
...@@ -307,12 +318,7 @@ public class ManifestUpgradeDetectorTest { ...@@ -307,12 +318,7 @@ public class ManifestUpgradeDetectorTest {
fetchedData.iconUrlToMurmur2HashMap.put( fetchedData.iconUrlToMurmur2HashMap.put(
WEBAPK_BEST_ICON_URL, WEBAPK_BEST_ICON_MURMUR2_HASH); WEBAPK_BEST_ICON_URL, WEBAPK_BEST_ICON_MURMUR2_HASH);
fetchedData.iconUrlToMurmur2HashMap.put("/icon2.png", null); fetchedData.iconUrlToMurmur2HashMap.put("/icon2.png", null);
Assert.assertFalse(checkUpdateNeededForFetchedManifest(defaultManifestData(), fetchedData));
TestCallback callback = new TestCallback();
TestManifestUpgradeDetector detector = createDetectorWithFetchedData(fetchedData, callback);
detector.start();
Assert.assertTrue(callback.mWasCalled);
Assert.assertFalse(callback.mIsUpgraded);
} }
/** /**
...@@ -342,10 +348,6 @@ public class ManifestUpgradeDetectorTest { ...@@ -342,10 +348,6 @@ public class ManifestUpgradeDetectorTest {
fetchedData.iconUrlToMurmur2HashMap.put(iconUrl1, null); fetchedData.iconUrlToMurmur2HashMap.put(iconUrl1, null);
fetchedData.iconUrlToMurmur2HashMap.put(iconUrl2, hash2); fetchedData.iconUrlToMurmur2HashMap.put(iconUrl2, hash2);
TestCallback callback = new TestCallback(); Assert.assertFalse(checkUpdateNeededForFetchedManifest(oldData, fetchedData));
TestManifestUpgradeDetector detector = createDetector(oldData, fetchedData, callback);
detector.start();
Assert.assertTrue(callback.mWasCalled);
Assert.assertFalse(callback.mIsUpgraded);
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment