Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1084)

Unified Diff: content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java

Issue 2882823002: Moving some CPL logic to CPLH. (Closed)
Patch Set: Fixed warm-up and tests. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java
index 509663b8df7c97f3ec1a8e88528c702f068b1cc2..8169ef3af3f580cf33673a9d70055879729af563 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java
@@ -19,11 +19,9 @@ import org.chromium.base.Log;
import org.chromium.base.TraceEvent;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.process_launcher.ChildProcessCreationParams;
-import org.chromium.base.process_launcher.FileDescriptorInfo;
import org.chromium.base.process_launcher.ICallbackInt;
import org.chromium.base.process_launcher.IChildProcessService;
-import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -166,14 +164,11 @@ public class ChildProcessConnection {
private final ChildProcessCreationParams mCreationParams;
private static class ConnectionParams {
- final String[] mCommandLine;
- final FileDescriptorInfo[] mFilesToBeMapped;
+ final Bundle mConnectionBundle;
final IBinder mCallback;
- ConnectionParams(
- String[] commandLine, FileDescriptorInfo[] filesToBeMapped, IBinder callback) {
- mCommandLine = commandLine;
- mFilesToBeMapped = filesToBeMapped;
+ ConnectionParams(Bundle connectionBundle, IBinder callback) {
+ mConnectionBundle = connectionBundle;
mCallback = callback;
}
}
@@ -181,8 +176,8 @@ public class ChildProcessConnection {
// This is set in start() and is used in onServiceConnected().
private StartCallback mStartCallback;
- // This is set in setupConnection() and is later used in doConnectionSetupLocked(), after which
- // the variable is cleared. Therefore this is only valid while the connection is being set up.
+ // This is set in setupConnection() and is later used in doConnectionSetup(), after which the
+ // variable is cleared. Therefore this is only valid while the connection is being set up.
private ConnectionParams mConnectionParams;
// Callback provided in setupConnection() that will communicate the result to the caller. This
@@ -315,16 +310,16 @@ public class ChildProcessConnection {
}
/**
- * Setups the connection after it was started with start().
- * @param commandLine (optional) will be ignored if the command line was already sent in start()
- * @param filesToBeMapped a list of file descriptors that should be registered
+ * Sets-up the connection after it was started with start().
+ * @param connectionBundle a bundle passed to the service that can be used to pass various
+ * parameters to the service
* @param callback optional client specified callbacks that the child can use to communicate
* with the parent process
* @param connectionCallback will be called exactly once after the connection is set up or the
* setup fails
*/
- public void setupConnection(String[] commandLine, FileDescriptorInfo[] filesToBeMapped,
- @Nullable IBinder callback, ConnectionCallback connectionCallback) {
+ public void setupConnection(Bundle connectionBundle, @Nullable IBinder callback,
+ ConnectionCallback connectionCallback) {
assert LauncherThread.runningOnLauncherThread();
assert mConnectionParams == null;
if (mServiceDisconnected) {
@@ -335,11 +330,11 @@ public class ChildProcessConnection {
try {
TraceEvent.begin("ChildProcessConnection.setupConnection");
mConnectionCallback = connectionCallback;
- mConnectionParams = new ConnectionParams(commandLine, filesToBeMapped, callback);
- // Run the setup if the service is already connected. If not,
- // doConnectionSetupLocked() will be called from onServiceConnected().
+ mConnectionParams = new ConnectionParams(connectionBundle, callback);
+ // Run the setup if the service is already connected. If not, doConnectionSetup() will
+ // be called from onServiceConnected().
if (mServiceConnectComplete) {
- doConnectionSetupLocked();
+ doConnectionSetup();
}
} finally {
TraceEvent.end("ChildProcessConnection.setupConnection");
@@ -399,9 +394,9 @@ public class ChildProcessConnection {
mServiceConnectComplete = true;
// Run the setup if the connection parameters have already been provided. If
- // not, doConnectionSetupLocked() will be called from setupConnection().
+ // not, doConnectionSetup() will be called from setupConnection().
if (mConnectionParams != null) {
- doConnectionSetupLocked();
+ doConnectionSetup();
}
} finally {
TraceEvent.end("ChildProcessConnection.ChildServiceConnection.onServiceConnected");
@@ -440,16 +435,14 @@ public class ChildProcessConnection {
/**
* Called after the connection parameters have been set (in setupConnection()) *and* a
* connection has been established (as signaled by onServiceConnected()). These two events can
- * happen in any order. Has to be called with mLock.
+ * happen in any order.
*/
- private void doConnectionSetupLocked() {
+ private void doConnectionSetup() {
try {
- TraceEvent.begin("ChildProcessConnection.doConnectionSetupLocked");
+ TraceEvent.begin("ChildProcessConnection.doConnectionSetup");
assert mServiceConnectComplete && mService != null;
assert mConnectionParams != null;
- Bundle bundle = ChildProcessLauncher.createsServiceBundle(
- mConnectionParams.mCommandLine, mConnectionParams.mFilesToBeMapped);
ICallbackInt pidCallback = new ICallbackInt.Stub() {
@Override
public void call(final int pid) {
@@ -462,21 +455,14 @@ public class ChildProcessConnection {
}
};
try {
- mService.setupConnection(bundle, pidCallback, mConnectionParams.mCallback);
+ mService.setupConnection(mConnectionParams.mConnectionBundle, pidCallback,
+ mConnectionParams.mCallback);
} catch (RemoteException re) {
Log.e(TAG, "Failed to setup connection.", re);
}
- // We proactively close the FDs rather than wait for GC & finalizer.
- try {
- for (FileDescriptorInfo fileInfo : mConnectionParams.mFilesToBeMapped) {
- fileInfo.fd.close();
- }
- } catch (IOException ioe) {
- Log.w(TAG, "Failed to close FD.", ioe);
- }
mConnectionParams = null;
} finally {
- TraceEvent.end("ChildProcessConnection.doConnectionSetupLocked");
+ TraceEvent.end("ChildProcessConnection.doConnectionSetup");
}
}

Powered by Google App Engine
This is Rietveld 408576698