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

Unified Diff: content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java

Issue 2049843004: Upstream: Renderers are running in WebAPKs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clean up. 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: content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java b/content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java
index daa8aef6caa8d07814f24bbe61e1f2349597d96e..db573d50a407585db3a2a6e3972867323b1c9f0d 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java
@@ -5,6 +5,7 @@
package org.chromium.content.browser;
import android.annotation.SuppressLint;
+import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
@@ -27,7 +28,6 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.library_loader.Linker;
-import org.chromium.content.app.ChildProcessService;
import org.chromium.content.app.ChromiumLinkerParams;
import org.chromium.content.app.DownloadProcessService;
import org.chromium.content.app.PrivilegedProcessService;
@@ -65,7 +65,6 @@ public class ChildProcessLauncher {
private final ArrayList<Integer> mFreeConnectionIndices;
private final Object mConnectionLock = new Object();
- private Class<? extends ChildProcessService> mChildClass;
private final boolean mInSandbox;
// Each Allocator keeps a queue for the pending spawn data. Once a connection is free, we
// dequeue the pending spawn data from the same allocator as the connection.
@@ -77,11 +76,17 @@ public class ChildProcessLauncher {
for (int i = 0; i < numChildServices; i++) {
mFreeConnectionIndices.add(i);
}
- mChildClass =
- inSandbox ? SandboxedProcessService.class : PrivilegedProcessService.class;
mInSandbox = inSandbox;
}
+ private Class<? extends Service> getServiceClass(Class<? extends Service> serviceClass) {
+ if (serviceClass != null) {
+ return serviceClass;
+ }
+ return mInSandbox ? SandboxedProcessService.class
+ : PrivilegedProcessService.class;
+ }
+
public ChildProcessConnection allocate(
Context context, ChildProcessConnection.DeathCallback deathCallback,
ChromiumLinkerParams chromiumLinkerParams,
@@ -94,8 +99,10 @@ public class ChildProcessLauncher {
}
int slot = mFreeConnectionIndices.remove(0);
assert mChildProcessConnections[slot] == null;
+ Class<? extends Service> serviceClass = getServiceClass(creationParams != null
+ ? creationParams.getServiceClass() : null);
mChildProcessConnections[slot] = new ChildProcessConnectionImpl(context, slot,
- mInSandbox, deathCallback, mChildClass, chromiumLinkerParams,
+ mInSandbox, deathCallback, serviceClass, chromiumLinkerParams,
alwaysInForeground, creationParams);
Log.d(TAG, "Allocator allocated a connection, sandbox: %b, slot: %d", mInSandbox,
slot);
@@ -927,8 +934,10 @@ public class ChildProcessLauncher {
@VisibleForTesting
static void enqueuePendingSpawnForTesting(Context context, String[] commandLine,
ChildProcessCreationParams creationParams, boolean inSandbox) {
+ String packageName = creationParams != null ? creationParams.getPackageName()
+ : context.getPackageName();
PendingSpawnQueue pendingSpawnQueue = getPendingSpawnQueue(context,
- creationParams.getPackageName(), inSandbox);
+ packageName, inSandbox);
synchronized (pendingSpawnQueue.mPendingSpawnsLock) {
pendingSpawnQueue.enqueueLocked(new PendingSpawnData(context, commandLine, 1,
new FileDescriptorInfo[0], 0, CALLBACK_FOR_RENDERER_PROCESS, true,

Powered by Google App Engine
This is Rietveld 408576698