Add logic to know whether a WebAPK should be updated: - shell_apk version out-of-date. - web manifest resources changes. Send requests to WebAPK Minting Server to update a WebAPK.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a6fe748fda4067575facddcea0e99ac41139670a commit a6fe748fda4067575facddcea0e99ac41139670a Author: hanxi <hanxi@chromium.org> Date: Mon Jul 04 13:46:46 2016 Use metadata when launching WebAPKs. WebAPKs use WebappDataStorage to store the metadata too. Some changes in the web app manifest, like themeColor, orientation etc. don't request re-minting a WebAPK, but will update the metadata in the SharedPreference (WebappDataStorage). The metadata will be retrieved and used for launching a WebAPK. Registering a WebAPK will be in a following up CL. BUG= 624834 Review-Url: https://codereview.chromium.org/2071213005 Cr-Commit-Position: refs/heads/master@{#403677} [modify] https://crrev.com/a6fe748fda4067575facddcea0e99ac41139670a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java [modify] https://crrev.com/a6fe748fda4067575facddcea0e99ac41139670a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java [modify] https://crrev.com/a6fe748fda4067575facddcea0e99ac41139670a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappDataStorage.java [modify] https://crrev.com/a6fe748fda4067575facddcea0e99ac41139670a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappInfo.java [modify] https://crrev.com/a6fe748fda4067575facddcea0e99ac41139670a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java [modify] https://crrev.com/a6fe748fda4067575facddcea0e99ac41139670a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappInfoTest.java [modify] https://crrev.com/a6fe748fda4067575facddcea0e99ac41139670a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappRegistryTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/16cafafa820b6a1deababf63d7c24ce5f5e8ecac commit 16cafafa820b6a1deababf63d7c24ce5f5e8ecac Author: ksakamoto <ksakamoto@chromium.org> Date: Tue Jul 05 02:29:47 2016 Revert of Use metadata when launching WebAPKs. (patchset #11 id:480001 of https://codereview.chromium.org/2071213005/ ) Reason for revert: Broke chrome_public_test_apk in Android Tests (dbg). https://build.chromium.org/p/chromium.linux/builders/Android%20Tests%20%28dbg%29/builds/35147 Original issue's description: > Use metadata when launching WebAPKs. > > WebAPKs use WebappDataStorage to store the metadata too. > Some changes in the web app manifest, like themeColor, > orientation etc. don't request re-minting a WebAPK, > but will update the metadata in the SharedPreference > (WebappDataStorage). The metadata will be retrieved > and used for launching a WebAPK. > > Registering a WebAPK will be in a following up CL. > > BUG= 624834 > > Committed: https://crrev.com/a6fe748fda4067575facddcea0e99ac41139670a > Cr-Commit-Position: refs/heads/master@{#403677} TBR=pkotwicz@chromium.org,yfriedman@chromium.org,dominickn@chromium.org,dfalcantara@chromium.org,hanxi@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= 624834 Review-Url: https://codereview.chromium.org/2122813002 Cr-Commit-Position: refs/heads/master@{#403733} [modify] https://crrev.com/16cafafa820b6a1deababf63d7c24ce5f5e8ecac/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java [modify] https://crrev.com/16cafafa820b6a1deababf63d7c24ce5f5e8ecac/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java [modify] https://crrev.com/16cafafa820b6a1deababf63d7c24ce5f5e8ecac/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappDataStorage.java [modify] https://crrev.com/16cafafa820b6a1deababf63d7c24ce5f5e8ecac/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappInfo.java [modify] https://crrev.com/16cafafa820b6a1deababf63d7c24ce5f5e8ecac/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java [modify] https://crrev.com/16cafafa820b6a1deababf63d7c24ce5f5e8ecac/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappInfoTest.java [modify] https://crrev.com/16cafafa820b6a1deababf63d7c24ce5f5e8ecac/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappRegistryTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a3bc57c0fd8faf57f0fbd98d65913f47ab02917c commit a3bc57c0fd8faf57f0fbd98d65913f47ab02917c Author: hanxi <hanxi@chromium.org> Date: Wed Jul 06 13:56:08 2016 Reland: Use metadata when launching WebAPKs. WebAPKs use WebappDataStorage to store the metadata too. Some changes in the web app manifest, like themeColor, orientation etc. don't request re-minting a WebAPK, but will update the metadata in the SharedPreference (WebappDataStorage). The metadata will be retrieved and used for launching a WebAPK. Registering a WebAPK will be in a following up CL. BUG= 624834 Review-Url: https://codereview.chromium.org/2126583002 Cr-Commit-Position: refs/heads/master@{#403901} [modify] https://crrev.com/a3bc57c0fd8faf57f0fbd98d65913f47ab02917c/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java [modify] https://crrev.com/a3bc57c0fd8faf57f0fbd98d65913f47ab02917c/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java [modify] https://crrev.com/a3bc57c0fd8faf57f0fbd98d65913f47ab02917c/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappDataStorage.java [modify] https://crrev.com/a3bc57c0fd8faf57f0fbd98d65913f47ab02917c/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappInfo.java [modify] https://crrev.com/a3bc57c0fd8faf57f0fbd98d65913f47ab02917c/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java [modify] https://crrev.com/a3bc57c0fd8faf57f0fbd98d65913f47ab02917c/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappInfoTest.java [modify] https://crrev.com/a3bc57c0fd8faf57f0fbd98d65913f47ab02917c/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappRegistryTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/69d95c9d27e62badd7c88046ebf0507a9900c1c8 commit 69d95c9d27e62badd7c88046ebf0507a9900c1c8 Author: hanxi <hanxi@chromium.org> Date: Tue Jul 19 13:50:56 2016 Add web_manifest_url in WebappInfo. When detecting web manifest resources changes, we compare the loaded manifest url with the one baked in WebAPK's AndroidManifest.xml to see whether they match. See CL: https://codereview.chromium.org/2124513002/ BUG= 624834 Review-Url: https://codereview.chromium.org/2140273002 Cr-Commit-Position: refs/heads/master@{#406265} [modify] https://crrev.com/69d95c9d27e62badd7c88046ebf0507a9900c1c8/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java [modify] https://crrev.com/69d95c9d27e62badd7c88046ebf0507a9900c1c8/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappInfo.java [modify] https://crrev.com/69d95c9d27e62badd7c88046ebf0507a9900c1c8/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappInfoTest.java [modify] https://crrev.com/69d95c9d27e62badd7c88046ebf0507a9900c1c8/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java [modify] https://crrev.com/69d95c9d27e62badd7c88046ebf0507a9900c1c8/chrome/android/webapk/libs/common/src/org/chromium/webapk/lib/common/WebApkConstants.java [modify] https://crrev.com/69d95c9d27e62badd7c88046ebf0507a9900c1c8/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/HostBrowserLauncher.java [modify] https://crrev.com/69d95c9d27e62badd7c88046ebf0507a9900c1c8/chrome/android/webapk/shell_apk/AndroidManifest.xml [modify] https://crrev.com/69d95c9d27e62badd7c88046ebf0507a9900c1c8/chrome/android/webapk/shell_apk/BUILD.gn
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e72182e94924a4a8af00b016ed75fb1bdc554500 commit e72182e94924a4a8af00b016ed75fb1bdc554500 Author: hanxi <hanxi@chromium.org> Date: Fri Jul 29 14:40:11 2016 Introduce ManifestUpgradeDetector for WebAPK to detect web manifest changes. The ManifestUpgradeDetector fetches the latest web manifest for a WebAPK, compare with cached one and make a decision of whether to request re-mint. The ManifestUpgradeDetector is initilized for WebApkActivity when it needs to check resources changes. Once the detector starts, it observes WebContents's change, and stops when the manifest file of the WebApk is found and fetched. This is because not all of the urls within the WebAPK's scope link to its manifest file. Therefore, the detector needs to follow WebContents's change until find the manifest file. TEST=org.chromium.chrome.browser.webapps.ManifestUpgradeDetectorTest BUG= 624834 Review-Url: https://codereview.chromium.org/2124513002 Cr-Commit-Position: refs/heads/master@{#408636} [add] https://crrev.com/e72182e94924a4a8af00b016ed75fb1bdc554500/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetector.java [modify] https://crrev.com/e72182e94924a4a8af00b016ed75fb1bdc554500/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java [modify] https://crrev.com/e72182e94924a4a8af00b016ed75fb1bdc554500/chrome/android/java_sources.gni [add] https://crrev.com/e72182e94924a4a8af00b016ed75fb1bdc554500/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorTest.java [modify] https://crrev.com/e72182e94924a4a8af00b016ed75fb1bdc554500/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/HostBrowserLauncher.java [modify] https://crrev.com/e72182e94924a4a8af00b016ed75fb1bdc554500/chrome/android/webapk/shell_apk/BUILD.gn [modify] https://crrev.com/e72182e94924a4a8af00b016ed75fb1bdc554500/chrome/browser/android/chrome_jni_registrar.cc [add] https://crrev.com/e72182e94924a4a8af00b016ed75fb1bdc554500/chrome/browser/android/webapk/manifest_upgrade_detector.cc [add] https://crrev.com/e72182e94924a4a8af00b016ed75fb1bdc554500/chrome/browser/android/webapk/manifest_upgrade_detector.h [modify] https://crrev.com/e72182e94924a4a8af00b016ed75fb1bdc554500/chrome/chrome_browser.gypi [add] https://crrev.com/e72182e94924a4a8af00b016ed75fb1bdc554500/chrome/test/data/webapps/manifest_test_page_test_start_url_change.html
Issue 608232 has been merged into this issue.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7689d29f5d5d7d1cf4937c8d22ee7795c843b26b commit 7689d29f5d5d7d1cf4937c8d22ee7795c843b26b Author: pkotwicz <pkotwicz@chromium.org> Date: Thu Aug 04 16:43:35 2016 Split fetcher logic out of ManifestUpgradeDetector This CL introduces ManifestUpgradeDetectorFetcher which calls back to ManifestUpgradeDetector once: - The user has navigated to a page which uses the specified Web Manifest URL - The Web Manifest has been downloaded The advantages of the split are: - The lifetime of the native fetcher now matches the lifetime of the Java fetcher. - This CL makes JUnit testing easier. JUnit testing of ManifestUpgradeDetector is desireable because it avoids having to create a lot of test pages with different Web Manifests. BUG= 624834 TEST=ManifestUpgradeDetectorTest.* ManifestUpgradeFetcherTest.* Review-Url: https://codereview.chromium.org/2161163004 Cr-Commit-Position: refs/heads/master@{#409808} [modify] https://crrev.com/7689d29f5d5d7d1cf4937c8d22ee7795c843b26b/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetector.java [add] https://crrev.com/7689d29f5d5d7d1cf4937c8d22ee7795c843b26b/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorFetcher.java [modify] https://crrev.com/7689d29f5d5d7d1cf4937c8d22ee7795c843b26b/chrome/android/java_sources.gni [add] https://crrev.com/7689d29f5d5d7d1cf4937c8d22ee7795c843b26b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorFetcherTest.java [delete] https://crrev.com/2202833e0d6f23b24e9c8ecd8fec2a262895c3e1/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorTest.java [add] https://crrev.com/7689d29f5d5d7d1cf4937c8d22ee7795c843b26b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorTest.java [modify] https://crrev.com/7689d29f5d5d7d1cf4937c8d22ee7795c843b26b/chrome/browser/android/chrome_jni_registrar.cc [rename] https://crrev.com/7689d29f5d5d7d1cf4937c8d22ee7795c843b26b/chrome/browser/android/webapk/manifest_upgrade_detector_fetcher.cc [rename] https://crrev.com/7689d29f5d5d7d1cf4937c8d22ee7795c843b26b/chrome/browser/android/webapk/manifest_upgrade_detector_fetcher.h [modify] https://crrev.com/7689d29f5d5d7d1cf4937c8d22ee7795c843b26b/chrome/chrome_browser.gypi [add] https://crrev.com/7689d29f5d5d7d1cf4937c8d22ee7795c843b26b/chrome/test/data/webapps/manifest2.json [add] https://crrev.com/7689d29f5d5d7d1cf4937c8d22ee7795c843b26b/chrome/test/data/webapps/manifest_test_page2.html [delete] https://crrev.com/2202833e0d6f23b24e9c8ecd8fec2a262895c3e1/chrome/test/data/webapps/manifest_test_page_test_start_url_change.html
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/3b92dfaaebf06b70f2401faeb29630ad6a076670 commit 3b92dfaaebf06b70f2401faeb29630ad6a076670 Author: pkotwicz <pkotwicz@chromium.org> Date: Thu Aug 18 01:15:51 2016 Update WebAPK if homescreen icon changed. This CL makes ManifestUpgradeDetector refetch the homescreen icon. The icon specified in the "icons" property of the Web Manifest https://www.w3.org/TR/appmanifest/ is fetched if specified. If the icon URL changed or the icon bitmap data has changed an upgrade request is sent to the WebAPK server. If the "icons" property of the Web Manifest is empty, the homescreen icon URL that the WebAPK is currently using is refetched to check whether it has changed. If it has changed an upgrade request is sent to the WebAPK server. For the sake of simplicity, the ManifestUpgradeDetector does not determine the page's favicon and fetch the favicon if the "icons" property of the Web Manifest is empty. BUG= 624834 TEST=ManifestUpgradeDetectorTest.* Review-Url: https://codereview.chromium.org/2206493002 Cr-Commit-Position: refs/heads/master@{#412713} [modify] https://crrev.com/3b92dfaaebf06b70f2401faeb29630ad6a076670/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetector.java [modify] https://crrev.com/3b92dfaaebf06b70f2401faeb29630ad6a076670/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorFetcher.java [modify] https://crrev.com/3b92dfaaebf06b70f2401faeb29630ad6a076670/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorFetcherTest.java [modify] https://crrev.com/3b92dfaaebf06b70f2401faeb29630ad6a076670/chrome/android/junit/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorTest.java [modify] https://crrev.com/3b92dfaaebf06b70f2401faeb29630ad6a076670/chrome/android/webapk/shell_apk/AndroidManifest.xml [modify] https://crrev.com/3b92dfaaebf06b70f2401faeb29630ad6a076670/chrome/android/webapk/shell_apk/BUILD.gn [modify] https://crrev.com/3b92dfaaebf06b70f2401faeb29630ad6a076670/chrome/browser/android/webapk/manifest_upgrade_detector_fetcher.cc [modify] https://crrev.com/3b92dfaaebf06b70f2401faeb29630ad6a076670/chrome/browser/android/webapk/manifest_upgrade_detector_fetcher.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4739bb0eebd658ea5975c47da94e0d87e9c3d0c1 commit 4739bb0eebd658ea5975c47da94e0d87e9c3d0c1 Author: pkotwicz <pkotwicz@chromium.org> Date: Thu Aug 18 04:54:40 2016 [WebAPKs] Do not request WebAPK update when Web Manifest scope did not change webapk_installer.cc sets the scope URL to a default if the Web Manifest scope URL is empty. This CL sets the scope URL from the fetched Web Manifest to the default if it is empty prior to comparing the scope URLs BUG= 624834 TEST=ManifestUpgradeDetectorTest.* Review-Url: https://codereview.chromium.org/2205953006 Cr-Commit-Position: refs/heads/master@{#412746} [modify] https://crrev.com/4739bb0eebd658ea5975c47da94e0d87e9c3d0c1/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetector.java [modify] https://crrev.com/4739bb0eebd658ea5975c47da94e0d87e9c3d0c1/chrome/android/junit/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/eab4e851447a299a36458474d824b0ed569db55f commit eab4e851447a299a36458474d824b0ed569db55f Author: pkotwicz <pkotwicz@chromium.org> Date: Tue Aug 30 04:12:50 2016 Request upgraded WebAPK from WebAPK server if the ShellAPK version changes The ShellAPK version is the version of the source code in //chrome/android/webapk/shell_apk This CL also makes WebApkUpdateManager get the WebAPK's <meta-data> from the Android Manifest and pass it to ManifestUpgradeDetector. Repeatedly requesting the <meta-data> from the PackageManager takes 0.5ms on a Nexus 5. BUG= 624834 Review-Url: https://codereview.chromium.org/2259713002 Cr-Commit-Position: refs/heads/master@{#415079} [modify] https://crrev.com/eab4e851447a299a36458474d824b0ed569db55f/chrome/android/java/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetector.java [modify] https://crrev.com/eab4e851447a299a36458474d824b0ed569db55f/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java [modify] https://crrev.com/eab4e851447a299a36458474d824b0ed569db55f/chrome/android/junit/src/org/chromium/chrome/browser/webapps/ManifestUpgradeDetectorTest.java [modify] https://crrev.com/eab4e851447a299a36458474d824b0ed569db55f/chrome/android/webapk/libs/client/BUILD.gn [modify] https://crrev.com/eab4e851447a299a36458474d824b0ed569db55f/chrome/android/webapk/libs/client/src/org/chromium/webapk/lib/client/WebApkVersion.template [modify] https://crrev.com/eab4e851447a299a36458474d824b0ed569db55f/chrome/android/webapk/libs/common/src/org/chromium/webapk/lib/common/WebApkMetaDataKeys.java [modify] https://crrev.com/eab4e851447a299a36458474d824b0ed569db55f/chrome/android/webapk/shell_apk/AndroidManifest.xml [modify] https://crrev.com/eab4e851447a299a36458474d824b0ed569db55f/chrome/android/webapk/shell_apk/BUILD.gn [add] https://crrev.com/eab4e851447a299a36458474d824b0ed569db55f/chrome/android/webapk/shell_apk/shell_apk_version.gni
Issue 604513 has been merged into this issue.
Comment 1 by yfried...@chromium.org
, Jun 30 2016