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

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

Issue 12321131: Renamed Sandboxed process to Child process (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 7 years, 9 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/ChildProcessLauncher.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/SandboxedProcessLauncher.java b/content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java
similarity index 74%
rename from content/public/android/java/src/org/chromium/content/browser/SandboxedProcessLauncher.java
rename to content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java
index 057609fc9b3e4a70a2679b16cfb4eacf750c2228..e59a7e801802f178e71c8b7c12302f3a81710952 100644
--- a/content/public/android/java/src/org/chromium/content/browser/SandboxedProcessLauncher.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java
@@ -17,18 +17,18 @@ import java.util.concurrent.ConcurrentHashMap;
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
import org.chromium.base.ThreadUtils;
+import org.chromium.content.app.ChildProcessService;
import org.chromium.content.app.LibraryLoader;
-import org.chromium.content.app.SandboxedProcessService;
-import org.chromium.content.common.ISandboxedProcessCallback;
-import org.chromium.content.common.ISandboxedProcessService;
+import org.chromium.content.common.IChildProcessCallback;
+import org.chromium.content.common.IChildProcessService;
/**
- * This class provides the method to start/stop SandboxedProcess called by
+ * This class provides the method to start/stop ChildProcess called by
* native.
*/
@JNINamespace("content")
-public class SandboxedProcessLauncher {
- private static String TAG = "SandboxedProcessLauncher";
+public class ChildProcessLauncher {
+ private static String TAG = "ChildProcessLauncher";
private static final int CALLBACK_FOR_UNKNOWN_PROCESS = 0;
private static final int CALLBACK_FOR_GPU_PROCESS = 1;
@@ -37,10 +37,10 @@ public class SandboxedProcessLauncher {
// The upper limit on the number of simultaneous service process instances supported.
// This must not exceed total number of SandboxedProcessServiceX classes declared in
// this package, and defined as services in the embedding application's manifest file.
- // (See {@link SandboxedProcessService} for more details on defining the services.)
+ // (See {@link ChildProcessService} for more details on defining the services.)
/* package */ static final int MAX_REGISTERED_SERVICES = 6;
- private static final SandboxedProcessConnection[] mConnections =
- new SandboxedProcessConnection[MAX_REGISTERED_SERVICES];
+ private static final ChildProcessConnection[] mConnections =
+ new ChildProcessConnection[MAX_REGISTERED_SERVICES];
// The list of free slots in mConnections. When looking for a free connection,
// the first index in that list should be used. When a connection is freed, its index
// is added to the end of the list. This is so that we avoid immediately reusing a freed
@@ -57,54 +57,54 @@ public class SandboxedProcessLauncher {
}
}
- // Service class for sandboxed process. As the default value it uses
- // SandboxedProcessService.
- private static Class<? extends SandboxedProcessService> mServiceClass =
- SandboxedProcessService.class;
+ // Service class for child process. As the default value it uses
+ // SandboxedProcessService0.
+ private static Class<? extends ChildProcessService> mServiceClass =
+ org.chromium.content.app.SandboxedProcessService0.class;
private static boolean mConnectionAllocated = false;
// Sets service class for sandboxed service.
- public static void setServiceClass(Class<? extends SandboxedProcessService> serviceClass) {
+ public static void setServiceClass(Class<? extends ChildProcessService> serviceClass) {
// We should guarantee this is called before allocating connection.
assert !mConnectionAllocated;
mServiceClass = serviceClass;
}
- private static SandboxedProcessConnection allocateConnection(Context context) {
- SandboxedProcessConnection.DeathCallback deathCallback =
- new SandboxedProcessConnection.DeathCallback() {
+ private static ChildProcessConnection allocateConnection(Context context) {
+ ChildProcessConnection.DeathCallback deathCallback =
+ new ChildProcessConnection.DeathCallback() {
@Override
- public void onSandboxedProcessDied(int pid) {
+ public void onChildProcessDied(int pid) {
stop(pid);
}
};
synchronized (mConnections) {
if (mFreeConnectionIndices.isEmpty()) {
- Log.w(TAG, "Ran out of sandboxed services.");
+ Log.w(TAG, "Ran out of child services.");
return null;
}
int slot = mFreeConnectionIndices.remove(0);
assert mConnections[slot] == null;
- mConnections[slot] = new SandboxedProcessConnection(context, slot, deathCallback,
+ mConnections[slot] = new ChildProcessConnection(context, slot, deathCallback,
mServiceClass);
mConnectionAllocated = true;
return mConnections[slot];
}
}
- private static SandboxedProcessConnection allocateBoundConnection(Context context,
+ private static ChildProcessConnection allocateBoundConnection(Context context,
String[] commandLine) {
- SandboxedProcessConnection connection = allocateConnection(context);
+ ChildProcessConnection connection = allocateConnection(context);
if (connection != null) {
String libraryName = LibraryLoader.getLibraryToLoad();
- assert libraryName != null : "Attempting to launch a sandbox process without first "
+ assert libraryName != null : "Attempting to launch a child process without first "
+ "calling LibraryLoader.setLibraryToLoad";
connection.bind(libraryName, commandLine);
}
return connection;
}
- private static void freeConnection(SandboxedProcessConnection connection) {
+ private static void freeConnection(ChildProcessConnection connection) {
if (connection == null) {
return;
}
@@ -133,23 +133,23 @@ public class SandboxedProcessLauncher {
// Represents an invalid process handle; same as base/process.h kNullProcessHandle.
private static final int NULL_PROCESS_HANDLE = 0;
- // Map from pid to SandboxedService connection.
- private static Map<Integer, SandboxedProcessConnection> mServiceMap =
- new ConcurrentHashMap<Integer, SandboxedProcessConnection>();
+ // Map from pid to ChildService connection.
+ private static Map<Integer, ChildProcessConnection> mServiceMap =
+ new ConcurrentHashMap<Integer, ChildProcessConnection>();
// A pre-allocated and pre-bound connection ready for connection setup, or null.
- static SandboxedProcessConnection mSpareConnection = null;
+ static ChildProcessConnection mSpareConnection = null;
/**
- * Returns the sandboxed process service interface for the given pid. This may be called on
+ * Returns the child process service interface for the given pid. This may be called on
* any thread, but the caller must assume that the service can disconnect at any time. All
* service calls should catch and handle android.os.RemoteException.
*
* @param pid The pid (process handle) of the service obtained from {@link #start}.
- * @return The ISandboxedProcessService or null if the service no longer exists.
+ * @return The IChildProcessService or null if the service no longer exists.
*/
- public static ISandboxedProcessService getSandboxedService(int pid) {
- SandboxedProcessConnection connection = mServiceMap.get(pid);
+ public static IChildProcessService getChildService(int pid) {
+ ChildProcessConnection connection = mServiceMap.get(pid);
if (connection != null) {
return connection.getService();
}
@@ -157,25 +157,27 @@ public class SandboxedProcessLauncher {
}
/**
- * Should be called early in startup so the work needed to spawn the sandboxed process can
+ * Should be called early in startup so the work needed to spawn the child process can
* be done in parallel to other startup work. Must not be called on the UI thread.
* @param context the application context used for the connection.
*/
- public static synchronized void warmUp(Context context) {
- assert !ThreadUtils.runningOnUiThread();
- if (mSpareConnection == null) {
- mSpareConnection = allocateBoundConnection(context, null);
+ public static void warmUp(Context context) {
+ synchronized (ChildProcessLauncher.class) {
+ assert !ThreadUtils.runningOnUiThread();
+ if (mSpareConnection == null) {
+ mSpareConnection = allocateBoundConnection(context, null);
+ }
}
}
/**
- * Spawns and connects to a sandboxed process. May be called on any thread. It will not
- * block, but will instead callback to {@link #nativeOnSandboxedProcessStarted} when the
+ * Spawns and connects to a child process. May be called on any thread. It will not
+ * block, but will instead callback to {@link #nativeOnChildProcessStarted} when the
* connection is established. Note this callback will not necessarily be from the same thread
* (currently it always comes from the main thread).
*
* @param context Context used to obtain the application context.
- * @param commandLine The sandboxed process command line argv.
+ * @param commandLine The child process command line argv.
* @param file_ids The ID that should be used when mapping files in the created process.
* @param file_fds The file descriptors that should be mapped in the created process.
* @param file_auto_close Whether the file descriptors should be closed once they were passed to
@@ -197,8 +199,8 @@ public class SandboxedProcessLauncher {
new FileDescriptorInfo(fileIds[i], fileFds[i], fileAutoClose[i]);
}
assert clientContext != 0;
- SandboxedProcessConnection allocatedConnection;
- synchronized (SandboxedProcessLauncher.class) {
+ ChildProcessConnection allocatedConnection;
+ synchronized (ChildProcessLauncher.class) {
allocatedConnection = mSpareConnection;
mSpareConnection = null;
}
@@ -206,13 +208,13 @@ public class SandboxedProcessLauncher {
allocatedConnection = allocateBoundConnection(context, commandLine);
if (allocatedConnection == null) {
// Notify the native code so it can free the heap allocated callback.
- nativeOnSandboxedProcessStarted(clientContext, 0);
+ nativeOnChildProcessStarted(clientContext, 0);
return;
}
}
- final SandboxedProcessConnection connection = allocatedConnection;
+ final ChildProcessConnection connection = allocatedConnection;
Log.d(TAG, "Setting up connection to process: slot=" + connection.getServiceNumber());
- // Note: This runnable will be executed when the sandboxed connection is setup.
+ // Note: This runnable will be executed when the child connection is setup.
final Runnable onConnect = new Runnable() {
@Override
public void run() {
@@ -223,7 +225,7 @@ public class SandboxedProcessLauncher {
} else {
freeConnection(connection);
}
- nativeOnSandboxedProcessStarted(clientContext, pid);
+ nativeOnChildProcessStarted(clientContext, pid);
}
};
int callbackType = CALLBACK_FOR_UNKNOWN_PROCESS;
@@ -241,15 +243,15 @@ public class SandboxedProcessLauncher {
}
/**
- * Terminates a sandboxed process. This may be called from any thread.
+ * Terminates a child process. This may be called from any thread.
*
* @param pid The pid (process handle) of the service connection obtained from {@link #start}.
*/
@CalledByNative
static void stop(int pid) {
- Log.d(TAG, "stopping sandboxed connection: pid=" + pid);
+ Log.d(TAG, "stopping child connection: pid=" + pid);
- SandboxedProcessConnection connection = mServiceMap.remove(pid);
+ ChildProcessConnection connection = mServiceMap.remove(pid);
if (connection == null) {
Log.w(TAG, "Tried to stop non-existent connection to pid: " + pid);
return;
@@ -259,14 +261,14 @@ public class SandboxedProcessLauncher {
}
/**
- * Bind a sandboxed process as a high priority process so that it has the same
+ * Bind a child process as a high priority process so that it has the same
* priority as the main process. This can be used for the foreground renderer
* process to distinguish it from the the background renderer process.
*
* @param pid The process handle of the service connection obtained from {@link #start}.
*/
static void bindAsHighPriority(int pid) {
- SandboxedProcessConnection connection = mServiceMap.get(pid);
+ ChildProcessConnection connection = mServiceMap.get(pid);
if (connection == null) {
Log.w(TAG, "Tried to bind a non-existent connection to pid: " + pid);
return;
@@ -280,7 +282,7 @@ public class SandboxedProcessLauncher {
* @param pid The process handle of the service obtained from {@link #start}.
*/
static void unbindAsHighPriority(int pid) {
- SandboxedProcessConnection connection = mServiceMap.get(pid);
+ ChildProcessConnection connection = mServiceMap.get(pid);
if (connection == null) {
Log.w(TAG, "Tried to unbind non-existent connection to pid: " + pid);
return;
@@ -291,8 +293,8 @@ public class SandboxedProcessLauncher {
/**
* This implementation is used to receive callbacks from the remote service.
*/
- private static ISandboxedProcessCallback createCallback(final int callbackType) {
- return new ISandboxedProcessCallback.Stub() {
+ private static IChildProcessCallback createCallback(final int callbackType) {
+ return new IChildProcessCallback.Stub() {
/**
* This is called by the remote service regularly to tell us about
* new values. Note that IPC calls are dispatched through a thread
@@ -326,7 +328,7 @@ public class SandboxedProcessLauncher {
};
};
- private static native void nativeOnSandboxedProcessStarted(int clientContext, int pid);
+ private static native void nativeOnChildProcessStarted(int clientContext, int pid);
private static native Surface nativeGetViewSurface(int surfaceId);
private static native void nativeEstablishSurfacePeer(
int pid, Surface surface, int primaryID, int secondaryID);

Powered by Google App Engine
This is Rietveld 408576698