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

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: Update comments. 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 357062ac13bb573c6dde441f7ea6d7f6d51f7afb..fe75a481d34994c4e2dd33abfb1ed2456b633d21 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);
Maria 2016/06/17 17:09:24 I think that's an odd division of logic. Why not j
Xi Han 2016/06/17 18:35:20 It sounds good to me, since we can just pass 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);
@@ -944,8 +951,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