| 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
|
| deleted file mode 100644
|
| index e7f78fe7a9579c4ccf093a231636d44038d3ee0e..0000000000000000000000000000000000000000
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetector.java
|
| +++ /dev/null
|
| @@ -1,163 +0,0 @@
|
| -// Copyright 2016 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -package org.chromium.chrome.browser.webapps;
|
| -
|
| -import android.text.TextUtils;
|
| -
|
| -import org.chromium.chrome.browser.tab.Tab;
|
| -import org.chromium.chrome.browser.util.UrlUtilities;
|
| -
|
| -import java.util.Map;
|
| -
|
| -/**
|
| - * This class checks whether the WebAPK needs to be re-installed and sends a request to re-install
|
| - * the WebAPK if it needs to be re-installed.
|
| - */
|
| -public class ManifestUpgradeDetector implements ManifestUpgradeDetectorFetcher.Callback {
|
| - /** ManifestUpgradeDetector callback. */
|
| - public interface Callback {
|
| - /**
|
| - * Called when the Web Manifest for the initial URL load has been fetched (successfully or
|
| - * unsuccessfully).
|
| - * TODO(pkotwicz): Add calls to {@link #onFinishedFetchingWebManifestForInitialUrl()}.
|
| - * @param needsUpgrade Whether the WebAPK should be updated because the Web Manifest has
|
| - * changed. False if the Web Manifest could not be fetched.
|
| - * @param info The fetched Web Manifest data. Null if the initial URL does not point
|
| - * to a Web Manifest.
|
| - * @param bestIconUrl The icon URL in {@link WebApkInfo#iconUrlToMurmur2HashMap()} best
|
| - * suited for use as the launcher icon on this device.
|
| - */
|
| - void onFinishedFetchingWebManifestForInitialUrl(
|
| - boolean needsUpgrade, WebApkInfo info, String bestIconUrl);
|
| -
|
| - /**
|
| - * Called when the Web Manifest has been successfully fetched (including on the initial URL
|
| - * load).
|
| - * @param needsUpgrade Whether the WebAPK should be updated because the Web Manifest has
|
| - * changed.
|
| - * @param info The fetched Web Manifest data.
|
| - * @param bestIconUrl The icon URL in {@link WebApkInfo#iconUrlToMurmur2HashMap()} best
|
| - * suited for use as the launcher icon on this device.
|
| - */
|
| - void onGotManifestData(boolean needsUpgrade, WebApkInfo info, String bestIconUrl);
|
| - }
|
| -
|
| - private static final String TAG = "cr_UpgradeDetector";
|
| -
|
| - /** The WebAPK's tab. */
|
| - private final Tab mTab;
|
| -
|
| - /**
|
| - * Web Manifest data at time that the WebAPK was generated.
|
| - */
|
| - private WebApkInfo mInfo;
|
| -
|
| - /**
|
| - * Fetches the WebAPK's Web Manifest from the web.
|
| - */
|
| - private ManifestUpgradeDetectorFetcher mFetcher;
|
| - private Callback mCallback;
|
| -
|
| - /**
|
| - * Creates an instance of {@link ManifestUpgradeDetector}.
|
| - *
|
| - * @param tab WebAPK's tab.
|
| - * @param webappInfo Parameters used for generating the WebAPK. Extracted from WebAPK's Android
|
| - * manifest.
|
| - * @param info Web Manifest data at the time that the WebAPK was generated.
|
| - * @param callback Called once it has been determined whether the WebAPK needs to be upgraded.
|
| - */
|
| - public ManifestUpgradeDetector(Tab tab, WebApkInfo info, Callback callback) {
|
| - mTab = tab;
|
| - mInfo = info;
|
| - mCallback = callback;
|
| - }
|
| -
|
| - /**
|
| - * Starts fetching the web manifest resources.
|
| - */
|
| - public boolean start() {
|
| - if (mFetcher != null) return false;
|
| -
|
| - mFetcher = createFetcher();
|
| - return mFetcher.start(mTab, mInfo, this);
|
| - }
|
| -
|
| - /**
|
| - * Creates ManifestUpgradeDataFetcher.
|
| - */
|
| - protected ManifestUpgradeDetectorFetcher createFetcher() {
|
| - return new ManifestUpgradeDetectorFetcher();
|
| - }
|
| -
|
| - /**
|
| - * Puts the object in a state where it is safe to be destroyed.
|
| - */
|
| - public void destroy() {
|
| - if (mFetcher != null) {
|
| - mFetcher.destroy();
|
| - }
|
| - mFetcher = null;
|
| - }
|
| -
|
| - /**
|
| - * Called when the updated Web Manifest has been fetched.
|
| - */
|
| - @Override
|
| - public void onGotManifestData(WebApkInfo fetchedInfo, String bestIconUrl) {
|
| - mFetcher.destroy();
|
| - mFetcher = null;
|
| -
|
| - // TODO(hanxi): crbug.com/627824. Validate whether the new fetched data is
|
| - // WebAPK-compatible.
|
| - boolean upgrade = needsUpgrade(fetchedInfo, bestIconUrl);
|
| - mCallback.onGotManifestData(upgrade, fetchedInfo, bestIconUrl);
|
| - }
|
| -
|
| - /**
|
| - * Checks whether the WebAPK needs to be upgraded provided the fetched manifest data.
|
| - */
|
| - private boolean needsUpgrade(WebApkInfo fetchedInfo, String bestIconUrl) {
|
| - // We should have computed the Murmur2 hash for the bitmap at the best icon URL for
|
| - // {@link fetchedInfo} (but not the other icon URLs.)
|
| - String fetchedBestIconMurmur2Hash = fetchedInfo.iconUrlToMurmur2HashMap().get(bestIconUrl);
|
| - String bestIconMurmur2Hash =
|
| - findMurmur2HashForUrlIgnoringFragment(mInfo.iconUrlToMurmur2HashMap(), bestIconUrl);
|
| -
|
| - return !TextUtils.equals(bestIconMurmur2Hash, fetchedBestIconMurmur2Hash)
|
| - || !urlsMatchIgnoringFragments(
|
| - mInfo.scopeUri().toString(), fetchedInfo.scopeUri().toString())
|
| - || !urlsMatchIgnoringFragments(
|
| - mInfo.manifestStartUrl(), fetchedInfo.manifestStartUrl())
|
| - || !TextUtils.equals(mInfo.shortName(), fetchedInfo.shortName())
|
| - || !TextUtils.equals(mInfo.name(), fetchedInfo.name())
|
| - || mInfo.backgroundColor() != fetchedInfo.backgroundColor()
|
| - || mInfo.themeColor() != fetchedInfo.themeColor()
|
| - || mInfo.orientation() != fetchedInfo.orientation()
|
| - || mInfo.displayMode() != fetchedInfo.displayMode();
|
| - }
|
| -
|
| - /**
|
| - * Returns the Murmur2 hash for entry in {@link iconUrlToMurmur2HashMap} whose canonical
|
| - * representation, ignoring fragments, matches {@link iconUrlToMatch}.
|
| - */
|
| - private String findMurmur2HashForUrlIgnoringFragment(
|
| - Map<String, String> iconUrlToMurmur2HashMap, String iconUrlToMatch) {
|
| - for (Map.Entry<String, String> entry : iconUrlToMurmur2HashMap.entrySet()) {
|
| - if (urlsMatchIgnoringFragments(entry.getKey(), iconUrlToMatch)) {
|
| - return entry.getValue();
|
| - }
|
| - }
|
| - return null;
|
| - }
|
| -
|
| - /**
|
| - * Returns whether the URLs match ignoring fragments. Canonicalizes the URLs prior to doing the
|
| - * comparison.
|
| - */
|
| - protected boolean urlsMatchIgnoringFragments(String url1, String url2) {
|
| - return UrlUtilities.urlsMatchIgnoringFragments(url1, url2);
|
| - }
|
| -}
|
|
|