| 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 9234b594dfce7c1cf06de8880c8b37daa6f61657..eae1698e3363a4e38e8cade7ff987bec1a9a5139 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
|
| @@ -74,7 +74,8 @@ public class ChildProcessLauncher {
|
|
|
| public ChildProcessConnection allocate(
|
| Context context, ChildProcessConnection.DeathCallback deathCallback,
|
| - ChromiumLinkerParams chromiumLinkerParams) {
|
| + ChromiumLinkerParams chromiumLinkerParams,
|
| + boolean alwaysInForeground) {
|
| synchronized (mConnectionLock) {
|
| if (mFreeConnectionIndices.isEmpty()) {
|
| Log.d(TAG, "Ran out of services to allocate.");
|
| @@ -83,7 +84,8 @@ public class ChildProcessLauncher {
|
| int slot = mFreeConnectionIndices.remove(0);
|
| assert mChildProcessConnections[slot] == null;
|
| mChildProcessConnections[slot] = new ChildProcessConnectionImpl(context, slot,
|
| - mInSandbox, deathCallback, mChildClass, chromiumLinkerParams);
|
| + mInSandbox, deathCallback, mChildClass, chromiumLinkerParams,
|
| + alwaysInForeground);
|
| Log.d(TAG, "Allocator allocated a connection, sandbox: " + mInSandbox
|
| + ", slot: " + slot);
|
| return mChildProcessConnections[slot];
|
| @@ -245,8 +247,8 @@ public class ChildProcessLauncher {
|
| ? sSandboxedChildConnectionAllocator : sPrivilegedChildConnectionAllocator;
|
| }
|
|
|
| - private static ChildProcessConnection allocateConnection(Context context,
|
| - boolean inSandbox, ChromiumLinkerParams chromiumLinkerParams) {
|
| + private static ChildProcessConnection allocateConnection(Context context, boolean inSandbox,
|
| + ChromiumLinkerParams chromiumLinkerParams, boolean alwaysInForeground) {
|
| ChildProcessConnection.DeathCallback deathCallback =
|
| new ChildProcessConnection.DeathCallback() {
|
| @Override
|
| @@ -260,7 +262,7 @@ public class ChildProcessLauncher {
|
| };
|
| initConnectionAllocatorsIfNecessary(context);
|
| return getConnectionAllocator(inSandbox).allocate(context, deathCallback,
|
| - chromiumLinkerParams);
|
| + chromiumLinkerParams, alwaysInForeground);
|
| }
|
|
|
| private static boolean sLinkerInitialized = false;
|
| @@ -288,10 +290,10 @@ public class ChildProcessLauncher {
|
| }
|
|
|
| private static ChildProcessConnection allocateBoundConnection(Context context,
|
| - String[] commandLine, boolean inSandbox) {
|
| + String[] commandLine, boolean inSandbox, boolean alwaysInForeground) {
|
| ChromiumLinkerParams chromiumLinkerParams = getLinkerParamsForNewConnection();
|
| ChildProcessConnection connection =
|
| - allocateConnection(context, inSandbox, chromiumLinkerParams);
|
| + allocateConnection(context, inSandbox, chromiumLinkerParams, alwaysInForeground);
|
| if (connection != null) {
|
| connection.start(commandLine);
|
| }
|
| @@ -451,7 +453,7 @@ public class ChildProcessLauncher {
|
| synchronized (ChildProcessLauncher.class) {
|
| assert !ThreadUtils.runningOnUiThread();
|
| if (sSpareSandboxedConnection == null) {
|
| - sSpareSandboxedConnection = allocateBoundConnection(context, null, true);
|
| + sSpareSandboxedConnection = allocateBoundConnection(context, null, true, false);
|
| }
|
| }
|
| }
|
| @@ -539,7 +541,10 @@ public class ChildProcessLauncher {
|
| }
|
| }
|
| if (allocatedConnection == null) {
|
| - allocatedConnection = allocateBoundConnection(context, commandLine, inSandbox);
|
| + boolean alwaysInForeground = false;
|
| + if (callbackType == CALLBACK_FOR_GPU_PROCESS) alwaysInForeground = true;
|
| + allocatedConnection = allocateBoundConnection(
|
| + context, commandLine, inSandbox, alwaysInForeground);
|
| if (allocatedConnection == null) {
|
| Log.d(TAG, "Allocation of new service failed. Queuing up pending spawn.");
|
| sPendingSpawnQueue.enqueue(new PendingSpawnData(context, commandLine,
|
| @@ -697,7 +702,7 @@ public class ChildProcessLauncher {
|
|
|
| @VisibleForTesting
|
| static ChildProcessConnection allocateBoundConnectionForTesting(Context context) {
|
| - return allocateBoundConnection(context, null, true);
|
| + return allocateBoundConnection(context, null, true, false);
|
| }
|
|
|
| /**
|
|
|