Index: chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorFetcher.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorFetcher.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorFetcher.java |
index 693aff47a8b198e13fe9e8f2408b933008c02541..f6f58954ed2c0f81d5d92e9cfe67432854723e25 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorFetcher.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorFetcher.java |
@@ -8,11 +8,12 @@ import android.graphics.Bitmap; |
import android.text.TextUtils; |
import org.chromium.base.annotations.CalledByNative; |
-import org.chromium.chrome.browser.ShortcutHelper; |
import org.chromium.chrome.browser.tab.EmptyTabObserver; |
import org.chromium.chrome.browser.tab.Tab; |
import org.chromium.content_public.browser.WebContents; |
+import java.util.HashMap; |
+ |
/** |
* Downloads the Web Manifest if the web site still uses the {@link manifestUrl} passed to the |
* constructor. |
@@ -23,29 +24,12 @@ public class ManifestUpgradeDetectorFetcher extends EmptyTabObserver { |
* Called once the Web Manifest has been downloaded. |
*/ |
public interface Callback { |
- void onGotManifestData(FetchedManifestData fetchedData); |
- } |
- |
- /** |
- * Fetched Web Manifest data. |
- */ |
- public static class FetchedManifestData { |
- public String startUrl; |
- public String scopeUrl; |
- public String name; |
- public String shortName; |
- public String bestIconUrl; |
- |
- // Hash of untransformed icon bytes. The hash should have been taken prior to any |
- // encoding/decoding. |
- public String bestIconMurmur2Hash; |
- |
- public Bitmap bestIcon; |
- public String[] iconUrls; |
- public int displayMode; |
- public int orientation; |
- public long themeColor; |
- public long backgroundColor; |
+ /** |
+ * @param fetchedInfo The fetched Web Manifest data. |
+ * @param bestIconUrl Icon URL in {@link data} which is best suited for use as the launcher |
+ * icon on this device. |
+ */ |
+ void onGotManifestData(WebApkInfo fetchedInfo, String bestIconUrl); |
} |
/** |
@@ -57,17 +41,25 @@ public class ManifestUpgradeDetectorFetcher extends EmptyTabObserver { |
/** The tab that is being observed. */ |
private Tab mTab; |
- protected Callback mCallback; |
+ /** |
+ * Web Manifest data at time that the WebAPK was generated. |
+ */ |
+ private WebApkInfo mOldInfo; |
+ |
+ private Callback mCallback; |
/** |
* Starts fetching the web manifest resources. |
* @param callback Called once the Web Manifest has been downloaded. |
*/ |
- public boolean start(Tab tab, String scopeUrl, String manifestUrl, Callback callback) { |
- if (tab.getWebContents() == null) return false; |
+ public boolean start(Tab tab, WebApkInfo oldInfo, Callback callback) { |
+ if (tab.getWebContents() == null || TextUtils.isEmpty(oldInfo.manifestUrl())) { |
+ return false; |
+ } |
mTab = tab; |
- mNativePointer = nativeInitialize(scopeUrl, manifestUrl); |
+ mOldInfo = oldInfo; |
+ mNativePointer = nativeInitialize(mOldInfo.scopeUri().toString(), mOldInfo.manifestUrl()); |
mCallback = callback; |
mTab.addObserver(this); |
nativeStart(mNativePointer, mTab.getWebContents()); |
@@ -109,25 +101,18 @@ public class ManifestUpgradeDetectorFetcher extends EmptyTabObserver { |
String bestIconUrl, String bestIconMurmur2Hash, Bitmap bestIconBitmap, |
String[] iconUrls, int displayMode, int orientation, long themeColor, |
long backgroundColor) { |
- if (TextUtils.isEmpty(scopeUrl)) { |
- scopeUrl = ShortcutHelper.getScopeFromUrl(startUrl); |
+ HashMap<String, String> iconUrlToMurmur2HashMap = new HashMap<String, String>(); |
+ for (String iconUrl : iconUrls) { |
+ String murmur2Hash = (iconUrl.equals(bestIconUrl)) ? bestIconMurmur2Hash : null; |
+ iconUrlToMurmur2HashMap.put(iconUrl, murmur2Hash); |
} |
- FetchedManifestData fetchedData = new FetchedManifestData(); |
- fetchedData.startUrl = startUrl; |
- fetchedData.scopeUrl = scopeUrl; |
- fetchedData.name = name; |
- fetchedData.shortName = shortName; |
- fetchedData.bestIconUrl = bestIconUrl; |
- fetchedData.bestIconMurmur2Hash = bestIconMurmur2Hash; |
- fetchedData.bestIcon = bestIconBitmap; |
- fetchedData.iconUrls = iconUrls; |
- fetchedData.displayMode = displayMode; |
- fetchedData.orientation = orientation; |
- fetchedData.themeColor = themeColor; |
- fetchedData.backgroundColor = backgroundColor; |
- |
- mCallback.onGotManifestData(fetchedData); |
+ WebApkInfo info = WebApkInfo.create(mOldInfo.id(), startUrl, scopeUrl, |
+ new WebApkInfo.Icon(bestIconBitmap), name, shortName, displayMode, orientation, |
+ mOldInfo.source(), themeColor, backgroundColor, mOldInfo.webApkPackageName(), |
+ mOldInfo.shellApkVersion(), mOldInfo.manifestUrl(), startUrl, |
+ iconUrlToMurmur2HashMap); |
+ mCallback.onGotManifestData(info, bestIconUrl); |
} |
private native long nativeInitialize(String scope, String webManifestUrl); |