| Index: base/test/android/java/src/org/chromium/base/MultiprocessTestClientService.java
|
| diff --git a/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService.java b/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService.java
|
| index c786438ceda23bdf7915934b868596265e5a04da..89f3a754d23394e6e1e8e7f08a9537be340e6a9e 100644
|
| --- a/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService.java
|
| +++ b/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService.java
|
| @@ -30,12 +30,21 @@ public class MultiprocessTestClientService extends Service {
|
|
|
| private final Object mResultLock = new Object();
|
|
|
| + // These values must be kept in sync with the ones in mojo/edk/embedder/embedder.cc
|
| + private static final int PARCELABLE_CHANNEL_CLIENT_ID = 1;
|
| + private static final int PARCELABLE_CHANNEL_SERVER_ID = 2;
|
| +
|
| @GuardedBy("mResultLock")
|
| private MainReturnCodeResult mResult;
|
|
|
| + private final ParcelableChannelServer mParcelableChannelServer =
|
| + new ParcelableChannelServer("CHILD CHANNEL");
|
| + private ParcelableChannelClient mParcelableChannelClient;
|
| +
|
| private final ITestClient.Stub mBinder = new ITestClient.Stub() {
|
| @Override
|
| - public int launch(final String[] commandLine, FileDescriptorInfo[] fdsToMap) {
|
| + public IParcelableChannel launch(final String[] commandLine, FileDescriptorInfo[] fdsToMap,
|
| + IParcelableChannel parcelableChannel, int[] pid) {
|
| final int[] fdKeys = new int[fdsToMap.length];
|
| final int[] fdFds = new int[fdsToMap.length];
|
| for (int i = 0; i < fdsToMap.length; i++) {
|
| @@ -44,16 +53,28 @@ public class MultiprocessTestClientService extends Service {
|
| // instances. Native code will own them.
|
| fdFds[i] = fdsToMap[i].fd.detachFd();
|
| }
|
| +
|
| + mParcelableChannelClient = new ParcelableChannelClient(parcelableChannel);
|
| + final int[] globalObjectKeys = new int[2];
|
| + final Object[] globalObjectObjects = new Object[2];
|
| + globalObjectKeys[0] = PARCELABLE_CHANNEL_CLIENT_ID;
|
| + globalObjectObjects[0] = mParcelableChannelClient;
|
| + globalObjectKeys[1] = PARCELABLE_CHANNEL_SERVER_ID;
|
| + globalObjectObjects[1] = mParcelableChannelServer;
|
| +
|
| // Don't run main directly, it would block and the response would not be returned.
|
| // We post to the main thread as this thread does not have a Looper.
|
| mHandler.post(new Runnable() {
|
| @Override
|
| public void run() {
|
| - int result = MainRunner.runMain(commandLine, fdKeys, fdFds);
|
| + int result = MainRunner.runMain(
|
| + commandLine, fdKeys, fdFds, globalObjectKeys, globalObjectObjects);
|
| setMainReturnValue(result);
|
| }
|
| });
|
| - return Process.myPid();
|
| +
|
| + pid[0] = Process.myPid();
|
| + return mParcelableChannelServer;
|
| }
|
|
|
| @SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE")
|
|
|