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

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

Issue 2705133002: android: Allow registering multiple CreationParams (Closed)
Patch Set: rebase Created 3 years, 10 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/ChildProcessCreationParams.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ChildProcessCreationParams.java b/content/public/android/java/src/org/chromium/content/browser/ChildProcessCreationParams.java
index a8fd972bb4d0cf249b8c33f0fdb5934c514ba76b..c3c2a7397e18031407fdbbfd7667ece210dc60ee 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ChildProcessCreationParams.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ChildProcessCreationParams.java
@@ -5,6 +5,7 @@
package org.chromium.content.browser;
import android.content.Intent;
+import android.util.SparseArray;
import org.chromium.base.library_loader.LibraryProcessType;
@@ -15,22 +16,61 @@ import org.chromium.base.library_loader.LibraryProcessType;
* specifying additional child service binging flags.
*/
public class ChildProcessCreationParams {
- private final String mPackageName;
- private final boolean mIsExternalService;
- private final int mLibraryProcessType;
private static final String EXTRA_LIBRARY_PROCESS_TYPE =
"org.chromium.content.common.child_service_params.library_process_type";
- private static volatile ChildProcessCreationParams sChildProcessCreationParams;
+ /** ID used for the default params. */
+ public static final int DEFAULT_ID = 0;
+
+ private static final Object sLock = new Object();
+ private static final SparseArray<ChildProcessCreationParams> sParamMap = new SparseArray<>();
+ private static int sNextId = 1; // 0 is reserved for DEFAULT_ID.
+
+ /** Register default params. This should be called once on start up. */
+ public static void registerDefault(ChildProcessCreationParams params) {
+ synchronized (sLock) {
+ // TODO(boliu): Assert not overwriting existing entry once WebApk is fixed.
+ sParamMap.append(DEFAULT_ID, params);
+ }
+ }
+
+ // TODO(boliu): Make package visible once WebApk is fixed.
+ public static ChildProcessCreationParams getDefault() {
+ return get(DEFAULT_ID);
+ }
+
+ /** Register new params. Returns the allocated ID corresponding this params. */
+ public static int register(ChildProcessCreationParams params) {
+ assert params != null;
+ int id = -1;
+ synchronized (sLock) {
+ id = sNextId++;
+ sParamMap.append(id, params);
+ }
+ assert id > 0;
+ return id;
+ }
- public static void set(ChildProcessCreationParams params) {
- sChildProcessCreationParams = params;
+ /** Releases param corresponding to this ID. Any future use of this ID will crash. */
+ public static void unregister(int id) {
+ assert id > DEFAULT_ID; // Not allowed to unregister default.
+ synchronized (sLock) {
+ sParamMap.delete(id);
+ }
}
- public static ChildProcessCreationParams get() {
- return sChildProcessCreationParams;
+ static ChildProcessCreationParams get(int id) {
+ assert id >= 0;
+ synchronized (sLock) {
+ return sParamMap.get(id);
+ }
}
+ // Members should all be immutable to avoid worrying about thread safety.
+ private final String mPackageName;
+ private final boolean mIsExternalService;
+ private final int mLibraryProcessType;
+
public ChildProcessCreationParams(String packageName, boolean isExternalService,
int libraryProcessType) {
mPackageName = packageName;
@@ -38,24 +78,19 @@ public class ChildProcessCreationParams {
mLibraryProcessType = libraryProcessType;
}
- public ChildProcessCreationParams copy() {
- return new ChildProcessCreationParams(mPackageName, mIsExternalService,
- mLibraryProcessType);
- }
-
- public String getPackageName() {
+ String getPackageName() {
return mPackageName;
}
- public boolean getIsExternalService() {
+ boolean getIsExternalService() {
return mIsExternalService;
}
- public int getLibraryProcessType() {
+ int getLibraryProcessType() {
return mLibraryProcessType;
}
- public void addIntentExtras(Intent intent) {
+ void addIntentExtras(Intent intent) {
intent.putExtra(EXTRA_LIBRARY_PROCESS_TYPE, mLibraryProcessType);
}

Powered by Google App Engine
This is Rietveld 408576698