 Chromium Code Reviews
 Chromium Code Reviews Issue 2049843004:
  Upstream: Renderers are running in WebAPKs.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 2049843004:
  Upstream: Renderers are running in WebAPKs.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| 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, |