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 aec87df784b559eecb48d8b765265ebc2ec42a95..764d52ce0d473d7de83a87881bfc3aadaeb80036 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 |
@@ -20,7 +20,6 @@ import org.chromium.base.Log; |
import org.chromium.base.ThreadUtils; |
import org.chromium.base.TraceEvent; |
import org.chromium.base.VisibleForTesting; |
-import org.chromium.content.app.ChromiumLinkerParams; |
import org.chromium.content.common.FileDescriptorInfo; |
import org.chromium.content.common.IChildProcessCallback; |
import org.chromium.content.common.IChildProcessService; |
@@ -72,8 +71,10 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection { |
// foreground to protect a background process from the system out-of-memory killer. |
private ChildServiceConnection mModerateBinding; |
- // Linker-related parameters. |
- private ChromiumLinkerParams mLinkerParams; |
+ // Parameters passed to the child process through the service binding intent. |
+ // If the service gets recreated by the framework the intent will be reused, so these parameters |
+ // should be common to all processes of that type. |
+ private final Bundle mChildProcessCommonParameters; |
private final boolean mAlwaysInForeground; |
private final ChildProcessCreationParams mCreationParams; |
@@ -135,12 +136,9 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection { |
if (!mBound) { |
try { |
TraceEvent.begin("ChildProcessConnectionImpl.ChildServiceConnection.bind"); |
- final Intent intent = createServiceBindIntent(); |
- // Note, the intent may be saved and re-used by Android for re-launching the |
- // child service. Do not pass data that is different for each child; command |
- // line arguments for example. |
- if (mLinkerParams != null) { |
- mLinkerParams.addIntentExtras(intent); |
+ Intent intent = createServiceBindIntent(); |
+ if (mChildProcessCommonParameters != null) { |
+ intent.putExtras(mChildProcessCommonParameters); |
} |
mBound = mContext.bindService(intent, this, mBindFlags); |
} finally { |
@@ -241,10 +239,8 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection { |
} |
ChildProcessConnectionImpl(Context context, int number, boolean inSandbox, |
- ChildProcessConnection.DeathCallback deathCallback, |
- String serviceClassName, |
- ChromiumLinkerParams chromiumLinkerParams, |
- boolean alwaysInForeground, |
+ ChildProcessConnection.DeathCallback deathCallback, String serviceClassName, |
+ Bundle childProcessCommonParameters, boolean alwaysInForeground, |
ChildProcessCreationParams creationParams) { |
mContext = context; |
mServiceNumber = number; |
@@ -253,7 +249,7 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection { |
String packageName = |
creationParams != null ? creationParams.getPackageName() : context.getPackageName(); |
mServiceName = new ComponentName(packageName, serviceClassName + mServiceNumber); |
- mLinkerParams = chromiumLinkerParams; |
+ mChildProcessCommonParameters = childProcessCommonParameters; |
mAlwaysInForeground = alwaysInForeground; |
mCreationParams = creationParams; |
int initialFlags = Context.BIND_AUTO_CREATE; |