Index: content/public/android/java/src/org/chromium/content/app/ChildProcessServiceImpl.java |
diff --git a/content/public/android/java/src/org/chromium/content/app/ChildProcessServiceImpl.java b/content/public/android/java/src/org/chromium/content/app/ChildProcessServiceImpl.java |
index bdc45088a95564f670104e1f24e18f94b6c4fa2c..e74e97f00e19285c5acc92d0db208924c1010b2f 100644 |
--- a/content/public/android/java/src/org/chromium/content/app/ChildProcessServiceImpl.java |
+++ b/content/public/android/java/src/org/chromium/content/app/ChildProcessServiceImpl.java |
@@ -59,7 +59,8 @@ public class ChildProcessServiceImpl { |
// Lock that protects the following members. |
private final Object mBinderLock = new Object(); |
private IGpuProcessCallback mGpuCallback; |
- // PID of the client of this service, set in bindToCaller(). |
+ private boolean mBindToCallerCheck; |
+ // PID of the client of this service, set in bindToCaller(), if mBindToCallerCheck is true. |
private int mBoundCallingPid; |
// This is the native "Main" thread for the renderer / utility process. |
@@ -110,6 +111,7 @@ public class ChildProcessServiceImpl { |
// NOTE: Implement any IChildProcessService methods here. |
@Override |
public boolean bindToCaller() { |
+ assert mBindToCallerCheck; |
synchronized (mBinderLock) { |
int callingPid = Binder.getCallingPid(); |
if (mBoundCallingPid == 0) { |
@@ -127,7 +129,7 @@ public class ChildProcessServiceImpl { |
public int setupConnection(Bundle args, IBinder callback) { |
int callingPid = Binder.getCallingPid(); |
synchronized (mBinderLock) { |
- if (mBoundCallingPid != callingPid) { |
+ if (mBindToCallerCheck && mBoundCallingPid != callingPid) { |
if (mBoundCallingPid == 0) { |
Log.e(TAG, "Service has not been bound with bindToCaller()"); |
} else { |
@@ -136,12 +138,11 @@ public class ChildProcessServiceImpl { |
} |
return -1; |
} |
- |
- mGpuCallback = |
- callback != null ? IGpuProcessCallback.Stub.asInterface(callback) : null; |
- getServiceInfo(args); |
- return Process.myPid(); |
} |
+ |
+ mGpuCallback = callback != null ? IGpuProcessCallback.Stub.asInterface(callback) : null; |
+ getServiceInfo(args); |
+ return Process.myPid(); |
} |
@Override |
@@ -341,6 +342,10 @@ public class ChildProcessServiceImpl { |
mLibraryProcessType = ChildProcessCreationParams.getLibraryProcessType(intent); |
mMainThread.notifyAll(); |
} |
+ synchronized (mBinderLock) { |
+ mBindToCallerCheck = |
+ intent.getBooleanExtra(ChildProcessConstants.EXTRA_BIND_TO_CALLER, false); |
+ } |
} |
private void getServiceInfo(Bundle bundle) { |