| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.webapps; | 5 package org.chromium.chrome.browser.webapps; |
| 6 | 6 |
| 7 import android.content.Intent; | 7 import android.content.Intent; |
| 8 import android.os.Bundle; |
| 8 | 9 |
| 9 import org.chromium.base.ContextUtils; | 10 import org.chromium.base.ContextUtils; |
| 10 import org.chromium.base.library_loader.LibraryProcessType; | 11 import org.chromium.base.library_loader.LibraryProcessType; |
| 11 import org.chromium.base.process_launcher.ChildProcessCreationParams; | 12 import org.chromium.base.process_launcher.ChildProcessCreationParams; |
| 12 import org.chromium.chrome.browser.ShortcutHelper; | |
| 13 import org.chromium.chrome.browser.externalnav.ExternalNavigationParams; | 13 import org.chromium.chrome.browser.externalnav.ExternalNavigationParams; |
| 14 import org.chromium.chrome.browser.metrics.WebApkUma; | 14 import org.chromium.chrome.browser.metrics.WebApkUma; |
| 15 import org.chromium.chrome.browser.tab.BrowserControlsVisibilityDelegate; | 15 import org.chromium.chrome.browser.tab.BrowserControlsVisibilityDelegate; |
| 16 import org.chromium.chrome.browser.tab.InterceptNavigationDelegateImpl; | 16 import org.chromium.chrome.browser.tab.InterceptNavigationDelegateImpl; |
| 17 import org.chromium.chrome.browser.tab.Tab; | 17 import org.chromium.chrome.browser.tab.Tab; |
| 18 import org.chromium.chrome.browser.tab.TabDelegateFactory; | 18 import org.chromium.chrome.browser.tab.TabDelegateFactory; |
| 19 import org.chromium.chrome.browser.tab.TabRedirectHandler; | 19 import org.chromium.chrome.browser.tab.TabRedirectHandler; |
| 20 import org.chromium.components.navigation_interception.NavigationParams; | 20 import org.chromium.components.navigation_interception.NavigationParams; |
| 21 import org.chromium.content_public.browser.LoadUrlParams; | |
| 22 import org.chromium.ui.base.PageTransition; | |
| 23 import org.chromium.webapk.lib.client.WebApkServiceConnectionManager; | 21 import org.chromium.webapk.lib.client.WebApkServiceConnectionManager; |
| 24 | 22 |
| 25 /** | 23 /** |
| 26 * An Activity is designed for WebAPKs (native Android apps) and displays a weba
pp in a nearly | 24 * An Activity is designed for WebAPKs (native Android apps) and displays a weba
pp in a nearly |
| 27 * UI-less Chrome. | 25 * UI-less Chrome. |
| 28 */ | 26 */ |
| 29 public class WebApkActivity extends WebappActivity { | 27 public class WebApkActivity extends WebappActivity { |
| 30 /** Manages whether to check update for the WebAPK, and starts update check
if needed. */ | 28 /** Manages whether to check update for the WebAPK, and starts update check
if needed. */ |
| 31 private WebApkUpdateManager mUpdateManager; | 29 private WebApkUpdateManager mUpdateManager; |
| 32 | 30 |
| 33 /** Indicates whether launching renderer in WebAPK process is enabled. */ | 31 /** Indicates whether launching renderer in WebAPK process is enabled. */ |
| 34 private boolean mCanLaunchRendererInWebApkProcess; | 32 private boolean mCanLaunchRendererInWebApkProcess; |
| 35 | 33 |
| 36 private final ChildProcessCreationParams mDefaultParams = | 34 private final ChildProcessCreationParams mDefaultParams = |
| 37 ChildProcessCreationParams.getDefault(); | 35 ChildProcessCreationParams.getDefault(); |
| 38 | 36 |
| 39 @Override | 37 @Override |
| 40 protected void onNewIntent(Intent intent) { | |
| 41 super.onNewIntent(intent); | |
| 42 // We could bring a WebAPK hosted WebappActivity to foreground and navig
ate it to a | |
| 43 // different URL. For example, WebAPK "foo" is launched and navigates to | |
| 44 // "www.foo.com/foo". In Chrome, user clicks a link "www.foo.com/bar" in
Google search | |
| 45 // results. After clicking the link, WebAPK "foo" is brought to foregrou
nd, and | |
| 46 // loads the page of "www.foo.com/bar" at the same time. | |
| 47 // The extra {@link ShortcutHelper.EXTRA_URL} provides the URL that the
WebAPK will | |
| 48 // navigate to. | |
| 49 String overrideUrl = intent.getStringExtra(ShortcutHelper.EXTRA_URL); | |
| 50 if (overrideUrl != null && isInitialized() | |
| 51 && !overrideUrl.equals(getActivityTab().getUrl())) { | |
| 52 getActivityTab().loadUrl( | |
| 53 new LoadUrlParams(overrideUrl, PageTransition.AUTO_TOPLEVEL)
); | |
| 54 } | |
| 55 if (isInitialized()) { | |
| 56 getActivityTab().setWebappManifestScope(mWebappInfo.scopeUri().toStr
ing()); | |
| 57 } | |
| 58 } | |
| 59 | |
| 60 @Override | |
| 61 protected WebappInfo createWebappInfo(Intent intent) { | 38 protected WebappInfo createWebappInfo(Intent intent) { |
| 62 return (intent == null) ? WebApkInfo.createEmpty() : WebApkInfo.create(i
ntent); | 39 return (intent == null) ? WebApkInfo.createEmpty() : WebApkInfo.create(i
ntent); |
| 63 } | 40 } |
| 64 | 41 |
| 65 @Override | 42 @Override |
| 43 protected void initializeUI(Bundle savedInstance) { |
| 44 super.initializeUI(savedInstance); |
| 45 getActivityTab().setWebappManifestScope(mWebappInfo.scopeUri().toString(
)); |
| 46 } |
| 47 |
| 48 @Override |
| 66 protected TabDelegateFactory createTabDelegateFactory() { | 49 protected TabDelegateFactory createTabDelegateFactory() { |
| 67 return new WebappDelegateFactory(this) { | 50 return new WebappDelegateFactory(this) { |
| 68 @Override | 51 @Override |
| 69 public InterceptNavigationDelegateImpl createInterceptNavigationDele
gate(Tab tab) { | 52 public InterceptNavigationDelegateImpl createInterceptNavigationDele
gate(Tab tab) { |
| 70 return new InterceptNavigationDelegateImpl(tab) { | 53 return new InterceptNavigationDelegateImpl(tab) { |
| 71 @Override | 54 @Override |
| 72 public ExternalNavigationParams.Builder buildExternalNavigat
ionParams( | 55 public ExternalNavigationParams.Builder buildExternalNavigat
ionParams( |
| 73 NavigationParams navigationParams, | 56 NavigationParams navigationParams, |
| 74 TabRedirectHandler tabRedirectHandler, boolean shoul
dCloseTab) { | 57 TabRedirectHandler tabRedirectHandler, boolean shoul
dCloseTab) { |
| 75 ExternalNavigationParams.Builder builder = | 58 ExternalNavigationParams.Builder builder = |
| (...skipping 18 matching lines...) Expand all Loading... |
| 94 Tab tab) { | 77 Tab tab) { |
| 95 return new WebApkBrowserControlsDelegate(WebApkActivity.this, ta
b); | 78 return new WebApkBrowserControlsDelegate(WebApkActivity.this, ta
b); |
| 96 } | 79 } |
| 97 }; | 80 }; |
| 98 } | 81 } |
| 99 | 82 |
| 100 @Override | 83 @Override |
| 101 public void finishNativeInitialization() { | 84 public void finishNativeInitialization() { |
| 102 super.finishNativeInitialization(); | 85 super.finishNativeInitialization(); |
| 103 if (!isInitialized()) return; | 86 if (!isInitialized()) return; |
| 104 getActivityTab().setWebappManifestScope(mWebappInfo.scopeUri().toString(
)); | |
| 105 mCanLaunchRendererInWebApkProcess = ChromeWebApkHost.canLaunchRendererIn
WebApkProcess(); | 87 mCanLaunchRendererInWebApkProcess = ChromeWebApkHost.canLaunchRendererIn
WebApkProcess(); |
| 106 } | 88 } |
| 107 | 89 |
| 108 @Override | 90 @Override |
| 109 public void onStop() { | 91 public void onStop() { |
| 110 super.onStop(); | 92 super.onStop(); |
| 111 WebApkServiceConnectionManager.getInstance().disconnect( | 93 WebApkServiceConnectionManager.getInstance().disconnect( |
| 112 ContextUtils.getApplicationContext(), getWebApkPackageName()); | 94 ContextUtils.getApplicationContext(), getWebApkPackageName()); |
| 113 } | 95 } |
| 114 | 96 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 } | 173 } |
| 192 | 174 |
| 193 @Override | 175 @Override |
| 194 protected void onDestroyInternal() { | 176 protected void onDestroyInternal() { |
| 195 if (mUpdateManager != null) { | 177 if (mUpdateManager != null) { |
| 196 mUpdateManager.destroy(); | 178 mUpdateManager.destroy(); |
| 197 } | 179 } |
| 198 super.onDestroyInternal(); | 180 super.onDestroyInternal(); |
| 199 } | 181 } |
| 200 } | 182 } |
| OLD | NEW |