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

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

Issue 2459023002: Merge WebappInfo and WebApkMetaData part 2/2 (Closed)
Patch Set: Merge branch 'update_fail_refactor003' into update_fail_refactor01 Created 4 years, 1 month 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/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 a72829dd749724c881d97e83eee90809408b6aeb..2fc7f262040cb41383a0d5ac3c2bbf5a809f7e21 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
@@ -22,11 +22,11 @@ import org.chromium.base.ContextUtils;
import org.chromium.blink_public.platform.WebDisplayMode;
import org.chromium.chrome.browser.ShortcutHelper;
import org.chromium.chrome.browser.tab.Tab;
-import org.chromium.chrome.browser.webapps.ManifestUpgradeDetectorFetcher.FetchedManifestData;
import org.chromium.content_public.common.ScreenOrientationValues;
import org.chromium.testing.local.LocalRobolectricTestRunner;
import java.util.HashMap;
+import java.util.Map;
/**
* Tests the ManifestUpgradeDetector.
@@ -39,8 +39,8 @@ public class ManifestUpgradeDetectorTest {
private static final String WEBAPK_SCOPE_URL = "/";
private static final String WEBAPK_NAME = "Long Name";
private static final String WEBAPK_SHORT_NAME = "Short Name";
- private static final String WEBAPK_ICON_URL = "/icon.png";
- private static final String WEBAPK_ICON_MURMUR2_HASH = "3";
+ 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 long WEBAPK_THEME_COLOR = 1L;
@@ -55,14 +55,28 @@ public class ManifestUpgradeDetectorTest {
public boolean mWasCalled;
@Override
public void onFinishedFetchingWebManifestForInitialUrl(
- boolean needsUpgrade, FetchedManifestData data) {}
+ boolean needsUpgrade, WebApkInfo info, String bestIconUrl) {}
@Override
- public void onGotManifestData(boolean isUpgraded, FetchedManifestData data) {
+ public void onGotManifestData(boolean isUpgraded, WebApkInfo info, String bestIconUrl) {
mIsUpgraded = isUpgraded;
mWasCalled = true;
}
}
+ private static class ManifestData {
+ public String startUrl;
+ public String scopeUrl;
+ public String name;
+ public String shortName;
+ public Map<String, String> iconUrlToMurmur2HashMap;
+ public String bestIconUrl;
+ public Bitmap bestIcon;
+ public int displayMode;
+ public int orientation;
+ public long themeColor;
+ public long backgroundColor;
+ }
+
/**
* ManifestUpgradeDetectorFetcher subclass which:
* - Does not use native.
@@ -70,24 +84,16 @@ public class ManifestUpgradeDetectorTest {
* {@link #start()} is called.
*/
private static class TestManifestUpgradeDetectorFetcher extends ManifestUpgradeDetectorFetcher {
- FetchedManifestData mFetchedManifestData;
+ ManifestData mFetchedManifestData;
- public TestManifestUpgradeDetectorFetcher(FetchedManifestData fetchedManifestData) {
+ public TestManifestUpgradeDetectorFetcher(ManifestData fetchedManifestData) {
mFetchedManifestData = fetchedManifestData;
}
@Override
- public boolean start(Tab tab, String scopeUrl, String manifestUrl, Callback callback) {
- mCallback = callback;
-
- // Call {@link #onDataAvailable()} instead of the callback because
- // {@link #onDataAvailable()} sets defaults which we want to test.
- onDataAvailable(mFetchedManifestData.startUrl, mFetchedManifestData.scopeUrl,
- mFetchedManifestData.name, mFetchedManifestData.shortName,
- mFetchedManifestData.bestIconUrl, mFetchedManifestData.bestIconMurmur2Hash,
- mFetchedManifestData.bestIcon, mFetchedManifestData.iconUrls,
- mFetchedManifestData.displayMode, mFetchedManifestData.orientation,
- mFetchedManifestData.themeColor, mFetchedManifestData.backgroundColor);
+ public boolean start(Tab tab, WebApkInfo oldInfo, Callback callback) {
+ callback.onGotManifestData(
+ infoFromManifestData(mFetchedManifestData), mFetchedManifestData.bestIconUrl);
return true;
}
@@ -105,11 +111,11 @@ public class ManifestUpgradeDetectorTest {
* - Tracks whether "upgrade needed checking logic" has terminated.
*/
private static class TestManifestUpgradeDetector extends ManifestUpgradeDetector {
- private FetchedManifestData mFetchedData;
+ private ManifestData mFetchedData;
- public TestManifestUpgradeDetector(Tab tab, WebApkMetaData metaData,
- FetchedManifestData fetchedData, ManifestUpgradeDetector.Callback callback) {
- super(tab, metaData, callback);
+ public TestManifestUpgradeDetector(WebApkInfo info, ManifestData fetchedData,
+ ManifestUpgradeDetector.Callback callback) {
+ super(null, info, callback);
mFetchedData = fetchedData;
}
@@ -141,51 +147,37 @@ public class ManifestUpgradeDetectorTest {
mPackageManager = (RobolectricPackageManager) context.getPackageManager();
}
- /**
- * Create a default data. The FetchedManifestData is the data fetched by
- * ManifestUpgradeDetector.
- */
- private FetchedManifestData createDefaultFetchedManifestData() {
- FetchedManifestData data = new FetchedManifestData();
- data.startUrl = WEBAPK_START_URL;
- data.scopeUrl = WEBAPK_SCOPE_URL;
- data.name = WEBAPK_NAME;
- data.shortName = WEBAPK_SHORT_NAME;
- data.bestIconUrl = WEBAPK_ICON_URL;
- data.bestIconMurmur2Hash = WEBAPK_ICON_MURMUR2_HASH;
- data.bestIcon = createBitmap(Color.GREEN);
- data.iconUrls = new String[] { data.bestIconUrl };
- data.displayMode = WEBAPK_DISPLAY_MODE;
- data.orientation = WEBAPK_ORIENTATION;
- data.themeColor = WEBAPK_THEME_COLOR;
- data.backgroundColor = WEBAPK_BACKGROUND_COLOR;
- return data;
+ private static ManifestData defaultManifestData() {
+ ManifestData manifestData = new ManifestData();
+ manifestData.startUrl = WEBAPK_START_URL;
+ manifestData.scopeUrl = WEBAPK_SCOPE_URL;
+ manifestData.name = WEBAPK_NAME;
+ manifestData.shortName = WEBAPK_SHORT_NAME;
+
+ manifestData.iconUrlToMurmur2HashMap = new HashMap<String, String>();
+ manifestData.iconUrlToMurmur2HashMap.put(
+ WEBAPK_BEST_ICON_URL, WEBAPK_BEST_ICON_MURMUR2_HASH);
+
+ manifestData.bestIconUrl = WEBAPK_BEST_ICON_URL;
+ manifestData.bestIcon = createBitmap(Color.GREEN);
+ manifestData.displayMode = WEBAPK_DISPLAY_MODE;
+ manifestData.orientation = WEBAPK_ORIENTATION;
+ manifestData.themeColor = WEBAPK_THEME_COLOR;
+ manifestData.backgroundColor = WEBAPK_BACKGROUND_COLOR;
+ return manifestData;
}
- /**
- * Create a default data. The WebApkMetaData is the data that the WebAPK was created
- * with.
- */
- private WebApkMetaData createDefaultWebApkMetaData() {
- WebApkMetaData data = new WebApkMetaData();
- data.startUrl = WEBAPK_START_URL;
- data.scope = WEBAPK_SCOPE_URL;
- data.name = WEBAPK_NAME;
- data.shortName = WEBAPK_SHORT_NAME;
- data.displayMode = WEBAPK_DISPLAY_MODE;
- data.orientation = WEBAPK_ORIENTATION;
- data.themeColor = WEBAPK_THEME_COLOR;
- data.backgroundColor = WEBAPK_BACKGROUND_COLOR;
-
- data.iconUrlAndIconMurmur2HashMap = new HashMap<String, String>();
- data.iconUrlAndIconMurmur2HashMap.put(WEBAPK_ICON_URL, WEBAPK_ICON_MURMUR2_HASH);
-
- return data;
+ private static WebApkInfo infoFromManifestData(ManifestData manifestData) {
+ return WebApkInfo.create("", "", manifestData.scopeUrl,
+ new WebApkInfo.Icon(manifestData.bestIcon), manifestData.name,
+ manifestData.shortName, manifestData.displayMode, manifestData.orientation, -1,
+ manifestData.themeColor, manifestData.backgroundColor, WEBAPK_PACKAGE_NAME, -1,
+ WEBAPK_MANIFEST_URL, manifestData.startUrl, manifestData.iconUrlToMurmur2HashMap);
}
- private TestManifestUpgradeDetector createDetectorWithFetchedData(
- FetchedManifestData fetchedData, TestCallback callback) {
- return createDetector(createDefaultWebApkMetaData(), fetchedData, callback);
+ private static TestManifestUpgradeDetector createDetectorWithFetchedData(
+ ManifestData fetchedData, TestCallback callback) {
+ return createDetector(defaultManifestData(), fetchedData, callback);
}
/**
@@ -195,28 +187,17 @@ public class ManifestUpgradeDetectorTest {
* @param fetchedData Data fetched by ManifestUpgradeDetector.
* @param callback Callback to call when the upgrade check is complete.
*/
- private TestManifestUpgradeDetector createDetector(WebApkMetaData oldData,
- FetchedManifestData fetchedData, TestCallback callback) {
- WebApkMetaData metaData = new WebApkMetaData();
- metaData.manifestUrl = WEBAPK_MANIFEST_URL;
- metaData.startUrl = oldData.startUrl;
- metaData.scope = oldData.scope;
- metaData.name = oldData.name;
- metaData.shortName = oldData.shortName;
- metaData.displayMode = oldData.displayMode;
- metaData.orientation = oldData.orientation;
- metaData.themeColor = oldData.themeColor;
- metaData.backgroundColor = oldData.backgroundColor;
- metaData.iconUrlAndIconMurmur2HashMap = new HashMap<String, String>(
- oldData.iconUrlAndIconMurmur2HashMap);
- return new TestManifestUpgradeDetector(null, metaData, fetchedData, callback);
+ private static TestManifestUpgradeDetector createDetector(
+ ManifestData oldData, ManifestData fetchedData, TestCallback callback) {
+ return new TestManifestUpgradeDetector(
+ infoFromManifestData(oldData), fetchedData, callback);
}
@Test
public void testManifestDoesNotUpgrade() {
TestCallback callback = new TestCallback();
- TestManifestUpgradeDetector detector = createDetectorWithFetchedData(
- createDefaultFetchedManifestData(), callback);
+ TestManifestUpgradeDetector detector =
+ createDetectorWithFetchedData(defaultManifestData(), callback);
detector.start();
Assert.assertTrue(callback.mWasCalled);
Assert.assertFalse(callback.mIsUpgraded);
@@ -224,7 +205,7 @@ public class ManifestUpgradeDetectorTest {
@Test
public void testStartUrlChangeShouldUpgrade() {
- FetchedManifestData fetchedData = createDefaultFetchedManifestData();
+ ManifestData fetchedData = defaultManifestData();
fetchedData.startUrl = "/changed.html";
TestCallback callback = new TestCallback();
TestManifestUpgradeDetector detector = createDetectorWithFetchedData(fetchedData, callback);
@@ -239,12 +220,12 @@ public class ManifestUpgradeDetectorTest {
*/
@Test
public void testManifestEmptyScopeShouldNotUpgrade() {
- WebApkMetaData oldData = createDefaultWebApkMetaData();
+ ManifestData oldData = defaultManifestData();
// webapk_installer.cc sets the scope to the default scope if the scope is empty.
- oldData.scope = ShortcutHelper.getScopeFromUrl(oldData.startUrl);
- FetchedManifestData fetchedData = createDefaultFetchedManifestData();
+ oldData.scopeUrl = ShortcutHelper.getScopeFromUrl(oldData.startUrl);
+ ManifestData fetchedData = defaultManifestData();
fetchedData.scopeUrl = "";
- Assert.assertTrue(!oldData.scope.equals(fetchedData.scopeUrl));
+ Assert.assertTrue(!oldData.scopeUrl.equals(fetchedData.scopeUrl));
TestCallback callback = new TestCallback();
TestManifestUpgradeDetector detector = createDetector(oldData, fetchedData, callback);
@@ -259,12 +240,12 @@ public class ManifestUpgradeDetectorTest {
*/
@Test
public void testManifestNonEmptyScopeToEmptyScopeShouldUpgrade() {
- WebApkMetaData oldData = createDefaultWebApkMetaData();
+ ManifestData oldData = defaultManifestData();
oldData.startUrl = "/fancy/scope/special/snowflake.html";
- oldData.scope = "/fancy/scope/";
+ oldData.scopeUrl = "/fancy/scope/";
Assert.assertTrue(
- !oldData.scope.equals(ShortcutHelper.getScopeFromUrl(oldData.startUrl)));
- FetchedManifestData fetchedData = createDefaultFetchedManifestData();
+ !oldData.scopeUrl.equals(ShortcutHelper.getScopeFromUrl(oldData.startUrl)));
+ ManifestData fetchedData = defaultManifestData();
fetchedData.startUrl = "/fancy/scope/special/snowflake.html";
fetchedData.scopeUrl = "";
@@ -277,13 +258,14 @@ public class ManifestUpgradeDetectorTest {
/**
* Test that an upgrade is requested when:
- * - WebAPK was generated using icon at {@link WEBAPK_ICON_URL} from Web Manifest.
- * - Bitmap at {@link WEBAPK_ICON_URL} has changed.
+ * - WebAPK was generated using icon at {@link WEBAPK_BEST_ICON_URL} from Web Manifest.
+ * - Bitmap at {@link WEBAPK_BEST_ICON_URL} has changed.
*/
@Test
public void testHomescreenIconChangeShouldUpgrade() {
- FetchedManifestData fetchedData = createDefaultFetchedManifestData();
- fetchedData.bestIconMurmur2Hash = WEBAPK_ICON_MURMUR2_HASH + "1";
+ ManifestData fetchedData = defaultManifestData();
+ 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);
@@ -295,12 +277,14 @@ public class ManifestUpgradeDetectorTest {
/**
* Test that an upgrade is requested when:
- * - WebAPK is generated using icon at {@link WEBAPK_ICON_URL} from Web Manifest.
+ * - WebAPK is generated using icon at {@link WEBAPK_BEST_ICON_URL} from Web Manifest.
* - Web Manifest is updated to refer to different icon.
*/
@Test
public void testHomescreenBestIconUrlChangeShouldUpgrade() {
- FetchedManifestData fetchedData = createDefaultFetchedManifestData();
+ ManifestData fetchedData = defaultManifestData();
+ fetchedData.iconUrlToMurmur2HashMap.clear();
+ fetchedData.iconUrlToMurmur2HashMap.put("/icon2.png", "22");
fetchedData.bestIconUrl = "/icon2.png";
TestCallback callback = new TestCallback();
@@ -310,11 +294,19 @@ public class ManifestUpgradeDetectorTest {
Assert.assertTrue(callback.mIsUpgraded);
}
- /** Test that an upgrade is requested when a new icon URL is added to the Web Manifest. */
+ /**
+ * 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.
+ */
@Test
public void testIconUrlsChangeShouldNotUpgradeIfTheBestIconUrlDoesNotChange() {
- FetchedManifestData fetchedData = createDefaultFetchedManifestData();
- fetchedData.iconUrls = new String[] { fetchedData.bestIconUrl, "/icon2.png" };
+ ManifestData fetchedData = defaultManifestData();
+ fetchedData.iconUrlToMurmur2HashMap.clear();
+ 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);
@@ -324,23 +316,32 @@ public class ManifestUpgradeDetectorTest {
}
/**
- * Test that an upgrade isn't requested when the Web Manifest has multiple icons and the Web
- * Manifest has not changed.
+ * Test than upgrade is 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.
*/
@Test
- public void testNoIconUrlsChangeShouldNotUpgrade() {
- String icon1 = "/icon1.png";
- String icon2 = "/icon2.png";
+ public void testWebManifestSameButBestIconUrlChangedShouldNotUpgrade() {
+ String iconUrl1 = "/icon1.png";
+ String iconUrl2 = "/icon2.png";
String hash1 = "11";
String hash2 = "22";
- WebApkMetaData oldData = createDefaultWebApkMetaData();
- oldData.iconUrlAndIconMurmur2HashMap.put(icon1, hash1);
- oldData.iconUrlAndIconMurmur2HashMap.put(icon2, hash2);
-
- FetchedManifestData fetchedData = createDefaultFetchedManifestData();
- fetchedData.iconUrls = new String[] {fetchedData.bestIconUrl, icon1, icon2 };
- fetchedData.bestIconUrl = icon2;
- fetchedData.bestIconMurmur2Hash = hash2;
+
+ 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);
+
TestCallback callback = new TestCallback();
TestManifestUpgradeDetector detector = createDetector(oldData, fetchedData, callback);
detector.start();

Powered by Google App Engine
This is Rietveld 408576698