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

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

Issue 2124513002: Introduce ManifestUpgradeDetector for WebAPK to detect web manifest changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Introduce manifest upgrade detector. Created 4 years, 5 months 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/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java
index 28547bfbc1c1751139565e3e3d2f1112552c8a49..01e0d0c9bab6263bcf2e2a94f95bbcc3c7b70a80 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.webapps;
import android.content.Intent;
import org.chromium.base.ContextUtils;
+import org.chromium.base.Log;
import org.chromium.base.library_loader.LibraryProcessType;
import org.chromium.chrome.browser.ChromeApplication;
import org.chromium.chrome.browser.ShortcutHelper;
@@ -23,11 +24,16 @@ import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.ui.base.PageTransition;
import org.chromium.webapk.lib.client.WebApkServiceConnectionManager;
+import java.util.Set;
+
/**
* An Activity is designed for WebAPKs (native Android apps) and displays a webapp in a nearly
* UI-less Chrome.
*/
public class WebApkActivity extends WebappActivity {
+ private static final String TAG = "cr_WebApkActivity";
+ private ManifestUpgradeDetector mManifestUpgradeDetector = null;
+
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
@@ -59,7 +65,7 @@ public class WebApkActivity extends WebappActivity {
@Override
public void onWebappDataStorageRetrieved(
WebappDataStorage storage) {
- storage.updateFromShortcutIntent(getIntent());
+ storage.updateFromShortcutIntent(getIntent(), true);
}
});
return;
@@ -109,6 +115,41 @@ public class WebApkActivity extends WebappActivity {
// WebAPK scope navigates via JavaScript while the WebAPK is in the background.
return null;
}
+
+ @Override
+ public ManifestUpgradeDetector createManifestUpgradeDetector(Tab tab) {
+ mManifestUpgradeDetector = new ManifestUpgradeDetector(tab, mWebappInfo);
+ mManifestUpgradeDetector.setManifestUpgradeDetectorObserver(createObserver());
+ return mManifestUpgradeDetector;
+ }
+ };
+ }
+
+ private ManifestUpgradeDetector.Observer createObserver() {
+ return new ManifestUpgradeDetector.Observer() {
+ @Override
+ public void onManifestAvaliable(boolean isUpgraded,
+ final WebappInfo newInfo, final Set<String> iconUrls) {
+ Log.w(TAG, "Should request to update the installed WebAPK: "
+ + isUpgraded);
+ if (isUpgraded) {
+ // call WebApkUpdateManager to request update from WebAPK minting server.
+ // Note: always send the WebApk minting server the old metadata for checking
+ // updates before updating Chrome's sharedPreference.
+ }
+ if (newInfo != null) {
+ WebappRegistry.getWebappDataStorage(WebApkActivity.this,
+ newInfo.id(),
+ new WebappRegistry.FetchWebappDataStorageCallback() {
+ @Override
+ public void onWebappDataStorageRetrieved(
+ WebappDataStorage storage) {
+ storage.updateFromWebappInfo(newInfo, iconUrls);
+ }
+ }
+ );
+ }
+ }
};
}
@@ -144,6 +185,18 @@ public class WebApkActivity extends WebappActivity {
}
@Override
+ protected void checkUpdates() {
+ if (shouldCheckUpdate()) {
pkotwicz 2016/07/12 01:23:49 Can the ManifestUpgradeDetector be created in this
Xi Han 2016/07/12 20:53:41 That is a good idea. I once put the checkUpdates b
+ mManifestUpgradeDetector.start();
+ }
+ }
+
+ private boolean shouldCheckUpdate() {
+ // TODO(hanxi): Asks WebApk's update manager whether to check resources updates.
+ return mManifestUpgradeDetector != null;
+ }
+
+ @Override
public void onPause() {
super.onPause();
initializeChildProcessCreationParams(false);

Powered by Google App Engine
This is Rietveld 408576698