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

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

Issue 2863063002: Making ChildConnectionAllocator simpler. (Closed)
Patch Set: Fixed 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/BaseChildProcessConnection.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/BaseChildProcessConnection.java b/content/public/android/java/src/org/chromium/content/browser/BaseChildProcessConnection.java
index 487ed3417fb2c743c1672dfe99aa404bb31b0bd2..77796e89e5eeb5f0a57e6fd8a425fa1576029d9a 100644
--- a/content/public/android/java/src/org/chromium/content/browser/BaseChildProcessConnection.java
+++ b/content/public/android/java/src/org/chromium/content/browser/BaseChildProcessConnection.java
@@ -24,6 +24,8 @@ 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;
import javax.annotation.Nullable;
@@ -74,9 +76,9 @@ public abstract class BaseChildProcessConnection {
/** Used to create specialization connection instances. */
interface Factory {
- BaseChildProcessConnection create(Context context, boolean sandboxed,
- DeathCallback deathCallback, String serviceClassName,
- Bundle childProcessCommonParameters, ChildProcessCreationParams creationParams);
+ BaseChildProcessConnection create(Context context, DeathCallback deathCallback,
+ String serviceClassName, Bundle childProcessCommonParameters,
+ ChildProcessCreationParams creationParams);
}
/** Interface representing a connection to the Android service. Can be mocked in unit-tests. */
@@ -157,12 +159,11 @@ public abstract class BaseChildProcessConnection {
}
}
- // Caches whether non-sandboxed and sandboxed services require an extra
// binding flag provided via ChildProcessCreationParams.
// TODO(mnaganov): Get rid of it after the release of the next Android SDK.
- private static Boolean sNeedsExtrabindFlags[] = new Boolean[2];
+ private static final Map<ComponentName, Boolean> sNeedsExtrabindFlagsMap = new HashMap<>();
+
private final Context mContext;
- private final boolean mSandboxed;
private final BaseChildProcessConnection.DeathCallback mDeathCallback;
private final ComponentName mServiceName;
@@ -215,12 +216,11 @@ public abstract class BaseChildProcessConnection {
// Process ID of the corresponding child process.
private int mPid;
- protected BaseChildProcessConnection(Context context, boolean sandboxed,
- DeathCallback deathCallback, String serviceClassName,
- Bundle childProcessCommonParameters, ChildProcessCreationParams creationParams) {
+ protected BaseChildProcessConnection(Context context, DeathCallback deathCallback,
+ String serviceClassName, Bundle childProcessCommonParameters,
+ ChildProcessCreationParams creationParams) {
assert LauncherThread.runningOnLauncherThread();
mContext = context;
- mSandboxed = sandboxed;
mDeathCallback = deathCallback;
String packageName =
creationParams != null ? creationParams.getPackageName() : context.getPackageName();
@@ -234,11 +234,6 @@ public abstract class BaseChildProcessConnection {
return mContext;
}
- public final boolean isSandboxed() {
- assert LauncherThread.runningOnLauncherThread();
- return mSandboxed;
- }
-
public final String getPackageName() {
assert LauncherThread.runningOnLauncherThread();
return mCreationParams != null ? mCreationParams.getPackageName()
@@ -477,16 +472,13 @@ public abstract class BaseChildProcessConnection {
assert LauncherThread.runningOnLauncherThread();
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && getCreationParams() != null
&& getCreationParams().getIsExternalService()
- && isExportedService(isSandboxed(), getContext(), getServiceName());
+ && isExportedService(getContext(), getServiceName());
}
- private static boolean isExportedService(
- boolean inSandbox, Context context, ComponentName serviceName) {
- // Check for the cached value first. It is assumed that all pooled child services
- // have identical attributes in the manifest.
- final int arrayIndex = inSandbox ? 1 : 0;
- if (sNeedsExtrabindFlags[arrayIndex] != null) {
- return sNeedsExtrabindFlags[arrayIndex].booleanValue();
+ private static boolean isExportedService(Context context, ComponentName serviceName) {
+ Boolean isExported = sNeedsExtrabindFlagsMap.get(serviceName);
+ if (isExported != null) {
+ return isExported;
}
boolean result = false;
try {
@@ -496,7 +488,7 @@ public abstract class BaseChildProcessConnection {
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Could not retrieve info about service %s", serviceName, e);
}
- sNeedsExtrabindFlags[arrayIndex] = Boolean.valueOf(result);
+ sNeedsExtrabindFlagsMap.put(serviceName, Boolean.valueOf(result));
return result;
}

Powered by Google App Engine
This is Rietveld 408576698