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

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

Issue 2828793002: Refactoring ChildProcessConnection. (Closed)
Patch Set: More test fixing. Created 3 years, 8 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/ChildConnectionAllocator.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ChildConnectionAllocator.java b/content/public/android/java/src/org/chromium/content/browser/ChildConnectionAllocator.java
index 43c03676d76457c78e2ae155bebffc9f627ee3ce..7e3e9db222d281aa43e2b9ac7679af1990edf1db 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ChildConnectionAllocator.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ChildConnectionAllocator.java
@@ -48,8 +48,11 @@ public class ChildConnectionAllocator {
private static int sSandboxedServicesCountForTesting = -1;
private static String sSandboxedServicesNameForTesting;
+ // The factory used to create BaseChildProcessConnection instances.
+ private final BaseChildProcessConnection.Factory mConnectionFactory;
+
// Connections to services. Indices of the array correspond to the service numbers.
- private final ChildProcessConnection[] mChildProcessConnections;
+ private final BaseChildProcessConnection[] mChildProcessConnections;
private final String mChildClassName;
private final boolean mInSandbox;
@@ -63,11 +66,12 @@ public class ChildConnectionAllocator {
@SuppressFBWarnings("LI_LAZY_INIT_STATIC") // Method is single thread.
public static ChildConnectionAllocator getAllocator(
- Context context, String packageName, boolean inSandbox) {
+ Context context, String packageName, boolean sandboxed) {
assert LauncherThread.runningOnLauncherThread();
- if (!inSandbox) {
+ if (!sandboxed) {
if (sPrivilegedChildConnectionAllocator == null) {
- sPrivilegedChildConnectionAllocator = new ChildConnectionAllocator(false,
+ sPrivilegedChildConnectionAllocator = new ChildConnectionAllocator(
+ ImportantChildProcessConnection.FACTORY, false /* sandboxed */,
getNumberOfServices(context, false, packageName),
getClassNameOfService(context, false, packageName));
}
@@ -83,8 +87,8 @@ public class ChildConnectionAllocator {
+ " inSandbox = true",
packageName);
sSandboxedChildConnectionAllocatorMap.put(packageName,
- new ChildConnectionAllocator(true,
- getNumberOfServices(context, true, packageName),
+ new ChildConnectionAllocator(ManagedChildProcessConnection.FACTORY,
+ true /* sandboxed */, getNumberOfServices(context, true, packageName),
getClassNameOfService(context, true, packageName)));
}
return sSandboxedChildConnectionAllocatorMap.get(packageName);
@@ -160,9 +164,10 @@ public class ChildConnectionAllocator {
sSandboxedServicesNameForTesting = serviceName;
}
- private ChildConnectionAllocator(
+ private ChildConnectionAllocator(BaseChildProcessConnection.Factory connectionFactory,
boolean inSandbox, int numChildServices, String serviceClassName) {
- mChildProcessConnections = new ChildProcessConnectionImpl[numChildServices];
+ mConnectionFactory = connectionFactory;
+ mChildProcessConnections = new BaseChildProcessConnection[numChildServices];
mFreeConnectionIndices = new ArrayList<Integer>(numChildServices);
for (int i = 0; i < numChildServices; i++) {
mFreeConnectionIndices.add(i);
@@ -172,9 +177,9 @@ public class ChildConnectionAllocator {
}
// Allocates or enqueues. If there are no free slots, returns null and enqueues the spawn data.
- public ChildProcessConnection allocate(ChildSpawnData spawnData,
- ChildProcessConnection.DeathCallback deathCallback, Bundle childProcessCommonParameters,
- boolean queueIfNoSlotAvailable) {
+ public BaseChildProcessConnection allocate(ChildSpawnData spawnData,
+ BaseChildProcessConnection.DeathCallback deathCallback,
+ Bundle childProcessCommonParameters, boolean queueIfNoSlotAvailable) {
assert LauncherThread.runningOnLauncherThread();
assert spawnData.isInSandbox() == mInSandbox;
if (mFreeConnectionIndices.isEmpty()) {
@@ -186,15 +191,15 @@ public class ChildConnectionAllocator {
}
int slot = mFreeConnectionIndices.remove(0);
assert mChildProcessConnections[slot] == null;
- mChildProcessConnections[slot] = new ChildProcessConnectionImpl(spawnData.getContext(),
- slot, mInSandbox, deathCallback, mChildClassName, childProcessCommonParameters,
- spawnData.isAlwaysInForeground(), spawnData.getCreationParams());
+ mChildProcessConnections[slot] = mConnectionFactory.create(spawnData.getContext(), slot,
+ mInSandbox, deathCallback, mChildClassName, childProcessCommonParameters,
+ spawnData.getCreationParams());
Log.d(TAG, "Allocator allocated a connection, sandbox: %b, slot: %d", mInSandbox, slot);
return mChildProcessConnections[slot];
}
// Also return the first ChildSpawnData in the pending queue, if any.
- public ChildSpawnData free(ChildProcessConnection connection) {
+ public ChildSpawnData free(BaseChildProcessConnection connection) {
assert LauncherThread.runningOnLauncherThread();
int slot = connection.getServiceNumber();
if (mChildProcessConnections[slot] != connection) {
@@ -228,7 +233,7 @@ public class ChildConnectionAllocator {
}
@VisibleForTesting
- ChildProcessConnection[] connectionArrayForTesting() {
+ BaseChildProcessConnection[] connectionArrayForTesting() {
return mChildProcessConnections;
}

Powered by Google App Engine
This is Rietveld 408576698