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

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

Issue 2017963003: Upstream: ChildProcessLauncher connects renderer processes of WebAPKs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove PROCESS_WEBAPK_CHILD. Created 4 years, 6 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 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);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698