| 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 1872e6de5dd76cfd1b2fc70a026d5cf4ed1e2478..d37fa4402b6af401b0d0e4739ef983862f7ea87d 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,8 @@ package org.chromium.chrome.browser.webapps;
|
| import android.content.Intent;
|
|
|
| import org.chromium.base.ContextUtils;
|
| +import org.chromium.base.library_loader.LibraryProcessType;
|
| +import org.chromium.chrome.browser.ChromeApplication;
|
| import org.chromium.chrome.browser.ShortcutHelper;
|
| import org.chromium.chrome.browser.banners.AppBannerManager;
|
| import org.chromium.chrome.browser.externalnav.ExternalNavigationParams;
|
| @@ -15,6 +17,7 @@ import org.chromium.chrome.browser.tab.Tab;
|
| import org.chromium.chrome.browser.tab.TabDelegateFactory;
|
| import org.chromium.chrome.browser.tab.TabRedirectHandler;
|
| import org.chromium.components.navigation_interception.NavigationParams;
|
| +import org.chromium.content.browser.ChildProcessCreationParams;
|
| import org.chromium.content_public.browser.LoadUrlParams;
|
| import org.chromium.ui.base.PageTransition;
|
| import org.chromium.webapk.lib.client.WebApkServiceConnectionManager;
|
| @@ -84,4 +87,44 @@ public class WebApkActivity extends WebappActivity {
|
| WebApkServiceConnectionManager.getInstance().disconnect(
|
| ContextUtils.getApplicationContext(), packageName);
|
| }
|
| +
|
| + @Override
|
| + public void onResume() {
|
| + super.onResume();
|
| + // WebAPK hosts Chrome's renderer processes by declaring the Chrome's renderer service in
|
| + // its AndroidManifest.xml. We set {@link ChildProcessCreationParams} for WebAPK's renderer
|
| + // process so the {@link ChildProcessLauncher} knows which application's renderer
|
| + // service to connect.
|
| + initializeChildProcessCreationParams(true);
|
| + }
|
| +
|
| + @Override
|
| + protected void initializeChildProcessCreationParams() {
|
| + // TODO(hanxi): crbug.com/611842. Investigates whether this function works for multiple
|
| + // windows or with --site-per-process enabled.
|
| + initializeChildProcessCreationParams(true);
|
| + }
|
| +
|
| + @Override
|
| + public void onPause() {
|
| + super.onPause();
|
| + initializeChildProcessCreationParams(false);
|
| + }
|
| +
|
| + /**
|
| + * Initializes {@link ChildProcessCreationParams} as a WebAPK's renderer process if
|
| + * {@link isForWebApk}} is true; as Chrome's child process otherwise.
|
| + * @param isForWebApk: Whether the {@link ChildProcessCreationParams} is initialized as a
|
| + * WebAPK renderer process.
|
| + */
|
| + private void initializeChildProcessCreationParams(boolean isForWebApk) {
|
| + ChromeApplication chrome = (ChromeApplication) ContextUtils.getApplicationContext();
|
| + ChildProcessCreationParams params = chrome.getChildProcessCreationParams();
|
| + if (isForWebApk) {
|
| + int extraBindFlag = params == null ? 0 : params.getExtraBindFlags();
|
| + params = new ChildProcessCreationParams(getWebappInfo().webApkPackageName(),
|
| + extraBindFlag, LibraryProcessType.PROCESS_CHILD);
|
| + }
|
| + ChildProcessCreationParams.set(params);
|
| + }
|
| }
|
|
|