| Index: chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetector.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetector.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetector.java
|
| index a1d17c857d30de38e65d4186c9d2e9835f0c282a..00891cb1b931f7d281f3bb54f14d0e0ba095b308 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetector.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetector.java
|
| @@ -21,6 +21,15 @@ import org.chromium.chrome.browser.tab.Tab;
|
| */
|
| public class ManifestUpgradeDetector implements ManifestUpgradeDetectorFetcher.Callback {
|
| /**
|
| + * Called when the process of checking Web Manifest update is complete.
|
| + */
|
| + interface Callback {
|
| + // TODO(hanxi): crbug.com/639000. Pass the icon url and icon murmur2 hash to the caller.
|
| + // Change the interface by using {@link FetchedManifestData} instead of {@link WebappInfo}.
|
| + public void onUpgradeNeededCheckFinished(boolean isUpgraded, WebappInfo newInfo);
|
| + }
|
| +
|
| + /**
|
| * The names of <meta-data> in the WebAPK's AndroidManifest.xml whose values are needed to
|
| * determine whether a WebAPK needs to be upgraded but which are not present in
|
| * {@link WebappInfo}. The names must stay in sync with
|
| @@ -72,6 +81,7 @@ public class ManifestUpgradeDetector implements ManifestUpgradeDetectorFetcher.C
|
| * Fetches the WebAPK's Web Manifest from the web.
|
| */
|
| private ManifestUpgradeDetectorFetcher mFetcher;
|
| + private Callback mCallback;
|
|
|
| /**
|
| * Gets the long value from a Bundle. The long should be terminated with 'L'.
|
| @@ -92,24 +102,30 @@ public class ManifestUpgradeDetector implements ManifestUpgradeDetectorFetcher.C
|
| return 0;
|
| }
|
|
|
| - public ManifestUpgradeDetector(Tab tab, WebappInfo info) {
|
| + public ManifestUpgradeDetector(Tab tab, WebappInfo info, Callback callback) {
|
| mTab = tab;
|
| mWebappInfo = info;
|
| + mCallback = callback;
|
| + getMetaDataFromAndroidManifest();
|
| + }
|
| +
|
| + public String getManifestUrl() {
|
| + return mManifestUrl;
|
| }
|
|
|
| /**
|
| * Starts fetching the web manifest resources.
|
| */
|
| - public void start() {
|
| - if (mFetcher != null) return;
|
| + public boolean start() {
|
| + if (mFetcher != null) return false;
|
|
|
| - getMetaDataFromAndroidManifest();
|
| if (TextUtils.isEmpty(mManifestUrl)) {
|
| - return;
|
| + return false;
|
| }
|
|
|
| mFetcher = createFetcher(mTab, mWebappInfo.scopeUri().toString(), mManifestUrl);
|
| mFetcher.start(this);
|
| + return true;
|
| }
|
|
|
| /**
|
| @@ -174,11 +190,15 @@ public class ManifestUpgradeDetector implements ManifestUpgradeDetectorFetcher.C
|
|
|
| // TODO(hanxi): crbug.com/627824. Validate whether the new WebappInfo is
|
| // WebAPK-compatible.
|
| - if (requireUpgrade(fetchedData)) {
|
| - upgrade();
|
| + boolean upgradeRequired = requireUpgrade(fetchedData);
|
| + WebappInfo newInfo = null;
|
| + if (upgradeRequired) {
|
| + newInfo = WebappInfo.create(mWebappInfo.id(), startUrl, scopeUrl,
|
| + "", name, shortName, displayMode, orientation,
|
| + mWebappInfo.source(), themeColor, backgroundColor,
|
| + mWebappInfo.isIconGenerated(), mWebappInfo.webApkPackageName());
|
| }
|
| -
|
| - onComplete();
|
| + mCallback.onUpgradeNeededCheckFinished(upgradeRequired, newInfo);
|
| }
|
|
|
| /**
|
| @@ -218,8 +238,4 @@ public class ManifestUpgradeDetector implements ManifestUpgradeDetectorFetcher.C
|
|
|
| return false;
|
| }
|
| -
|
| - protected void upgrade() {}
|
| -
|
| - protected void onComplete() {}
|
| }
|
|
|