Index: chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java |
index a7ed0748488ffece507cfb4778338326e0f2de4b..2924c6535beecb77355a89f7114d798e8ebdb1f3 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java |
@@ -16,7 +16,6 @@ import org.chromium.chrome.browser.tabmodel.document.AsyncTabCreationParams; |
import org.chromium.chrome.browser.tabmodel.document.TabDelegate; |
import org.chromium.chrome.browser.webapps.WebappDataStorage; |
import org.chromium.chrome.browser.webapps.WebappRegistry; |
-import org.chromium.chrome.browser.webapps.WebappRegistry.FetchWebappDataStorageCallback; |
import org.chromium.content_public.browser.LoadUrlParams; |
import org.chromium.content_public.browser.WebContents; |
import org.chromium.content_public.common.Referrer; |
@@ -74,49 +73,46 @@ public class ServiceTabLauncher { |
// 2. Launch WebappActivity if one matches the target URL and was opened recently. |
// Otherwise, open the URL in a tab. |
- FetchWebappDataStorageCallback callback = new FetchWebappDataStorageCallback() { |
- @Override |
- public void onWebappDataStorageRetrieved(final WebappDataStorage storage) { |
- // If we do not find a WebappDataStorage corresponding to this URL, or if it hasn't |
- // been opened recently enough, open the URL in a tab. |
- if (storage == null || !storage.wasLaunchedRecently()) { |
- LoadUrlParams loadUrlParams = new LoadUrlParams(url, PageTransition.LINK); |
- loadUrlParams.setPostData(postData); |
- loadUrlParams.setVerbatimHeaders(extraHeaders); |
- loadUrlParams.setReferrer(new Referrer(referrerUrl, referrerPolicy)); |
+ final WebappDataStorage storage = |
+ WebappRegistry.getInstance().getWebappDataStorageForUrl(url); |
- AsyncTabCreationParams asyncParams = new AsyncTabCreationParams(loadUrlParams, |
- requestId); |
- tabDelegate.createNewTab(asyncParams, TabLaunchType.FROM_CHROME_UI, |
- Tab.INVALID_TAB_ID); |
- } else { |
- // The URL is within the scope of a recently launched standalone-capable web app |
- // on the home screen, so open it a standalone web app frame. An AsyncTask is |
- // used because WebappDataStorage.createWebappLaunchIntent contains a Bitmap |
- // decode operation and should not be run on the UI thread. |
- // |
- // This currently assumes that the only source is notifications; any future use |
- // which adds a different source will need to change this. |
- new AsyncTask<Void, Void, Intent>() { |
- @Override |
- protected final Intent doInBackground(Void... nothing) { |
- return storage.createWebappLaunchIntent(); |
- } |
+ // If we do not find a WebappDataStorage corresponding to this URL, or if it hasn't |
+ // been opened recently enough, open the URL in a tab. |
+ if (storage == null || !storage.wasLaunchedRecently()) { |
+ LoadUrlParams loadUrlParams = new LoadUrlParams(url, PageTransition.LINK); |
+ loadUrlParams.setPostData(postData); |
+ loadUrlParams.setVerbatimHeaders(extraHeaders); |
+ loadUrlParams.setReferrer(new Referrer(referrerUrl, referrerPolicy)); |
- @Override |
- protected final void onPostExecute(Intent intent) { |
- // Replace the web app URL with the URL from the notification. This is |
- // within the webapp's scope, so it is valid. |
- intent.putExtra(ShortcutHelper.EXTRA_URL, url); |
- intent.putExtra(ShortcutHelper.EXTRA_SOURCE, |
- ShortcutSource.NOTIFICATION); |
- tabDelegate.createNewStandaloneFrame(intent); |
- } |
- }.execute(); |
+ AsyncTabCreationParams asyncParams = new AsyncTabCreationParams(loadUrlParams, |
+ requestId); |
+ tabDelegate.createNewTab(asyncParams, TabLaunchType.FROM_CHROME_UI, |
+ Tab.INVALID_TAB_ID); |
+ } else { |
+ // The URL is within the scope of a recently launched standalone-capable web app |
+ // on the home screen, so open it a standalone web app frame. An AsyncTask is |
+ // used because WebappDataStorage.createWebappLaunchIntent contains a Bitmap |
+ // decode operation and should not be run on the UI thread. |
+ // |
+ // This currently assumes that the only source is notifications; any future use |
+ // which adds a different source will need to change this. |
+ new AsyncTask<Void, Void, Intent>() { |
+ @Override |
+ protected final Intent doInBackground(Void... nothing) { |
+ return storage.createWebappLaunchIntent(); |
} |
- } |
- }; |
- WebappRegistry.getWebappDataStorageForUrl(url, callback); |
+ |
+ @Override |
+ protected final void onPostExecute(Intent intent) { |
+ // Replace the web app URL with the URL from the notification. This is |
+ // within the webapp's scope, so it is valid. |
+ intent.putExtra(ShortcutHelper.EXTRA_URL, url); |
+ intent.putExtra(ShortcutHelper.EXTRA_SOURCE, |
+ ShortcutSource.NOTIFICATION); |
+ tabDelegate.createNewStandaloneFrame(intent); |
+ } |
+ }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); |
+ } |
} |
/** |