Index: content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java |
index 330ed514779d63ca23951d0bde62a90c2ded5112..25efa3ce2936577c84941ace50cd91d6763efce3 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java |
@@ -22,7 +22,6 @@ import org.chromium.base.VisibleForTesting; |
import org.chromium.base.library_loader.Linker; |
import org.chromium.content.app.ChildProcessService; |
import org.chromium.content.app.ChromiumLinkerParams; |
-import org.chromium.content.app.PrivilegedProcessService; |
import org.chromium.content.common.IChildProcessCallback; |
import org.chromium.content.common.IChildProcessService; |
@@ -69,6 +68,8 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection { |
// Linker-related parameters. |
private ChromiumLinkerParams mLinkerParams = null; |
+ private final boolean mAlwaysInForeground; |
+ |
private static final String TAG = "ChildProcessConnection"; |
private static class ConnectionParams { |
@@ -195,14 +196,18 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection { |
ChildProcessConnectionImpl(Context context, int number, boolean inSandbox, |
ChildProcessConnection.DeathCallback deathCallback, |
Class<? extends ChildProcessService> serviceClass, |
- ChromiumLinkerParams chromiumLinkerParams) { |
+ ChromiumLinkerParams chromiumLinkerParams, |
+ boolean alwaysInForeground) { |
mContext = context; |
mServiceNumber = number; |
mInSandbox = inSandbox; |
mDeathCallback = deathCallback; |
mServiceClass = serviceClass; |
mLinkerParams = chromiumLinkerParams; |
- mInitialBinding = new ChildServiceConnection(Context.BIND_AUTO_CREATE); |
+ mAlwaysInForeground = alwaysInForeground; |
+ int initialFlags = Context.BIND_AUTO_CREATE; |
+ if (mAlwaysInForeground) initialFlags |= Context.BIND_IMPORTANT; |
+ mInitialBinding = new ChildServiceConnection(initialFlags); |
mStrongBinding = new ChildServiceConnection( |
Context.BIND_AUTO_CREATE | Context.BIND_IMPORTANT); |
mWaivedBinding = new ChildServiceConnection( |
@@ -391,6 +396,7 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection { |
@Override |
public void removeInitialBinding() { |
synchronized (mLock) { |
+ assert !mAlwaysInForeground; |
mInitialBinding.unbind(); |
} |
} |
@@ -409,7 +415,6 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection { |
@Override |
public void dropOomBindings() { |
synchronized (mLock) { |
ppi
2015/02/03 14:29:11
Should we put "assert !mAlwaysInForeground;" here
|
- assert mServiceClass != PrivilegedProcessService.class; |
mInitialBinding.unbind(); |
mStrongBindingCount = 0; |