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

Unified Diff: base/android/java/src/org/chromium/base/process_launcher/ManagedChildProcessConnection.java

Issue 2845243002: Moving BindingManager and ChildProcessConnection to base/.
Patch Set: Moving BindingManager and ChildProcessConnection to base/. 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: base/android/java/src/org/chromium/base/process_launcher/ManagedChildProcessConnection.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ManagedChildProcessConnection.java b/base/android/java/src/org/chromium/base/process_launcher/ManagedChildProcessConnection.java
similarity index 80%
rename from content/public/android/java/src/org/chromium/content/browser/ManagedChildProcessConnection.java
rename to base/android/java/src/org/chromium/base/process_launcher/ManagedChildProcessConnection.java
index 9281f3afb1bd91296bfe9efad795a5103403ac6d..bf356ebc4086d081e6e5635931faa2cb1e9f605b 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ManagedChildProcessConnection.java
+++ b/base/android/java/src/org/chromium/base/process_launcher/ManagedChildProcessConnection.java
@@ -2,31 +2,31 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-package org.chromium.content.browser;
+package org.chromium.base.process_launcher;
import android.content.Context;
import android.os.Bundle;
+import android.os.Handler;
import org.chromium.base.Log;
import org.chromium.base.VisibleForTesting;
-import org.chromium.base.process_launcher.ChildProcessCreationParams;
/**
* ManagedChildProcessConnection is a connection to a child service that can hold several bindings
* to the service so it can be more or less agressively protected against OOM.
- * Accessed from the launcher thread. (but for isOomProtectedOrWasWhenDied()).
+ * Accessed exclusively from the connection thread (the one specified in the constructor), but for
+ * isOomProtectedOrWasWhenDied().
*/
public class ManagedChildProcessConnection extends BaseChildProcessConnection {
private static final String TAG = "ManChildProcessConn";
public static final Factory FACTORY = new BaseChildProcessConnection.Factory() {
@Override
- public BaseChildProcessConnection create(Context context, int number, boolean sandboxed,
- DeathCallback deathCallback, String serviceClassName,
+ public BaseChildProcessConnection create(Handler handler, Context context, int number,
+ boolean sandboxed, DeathCallback deathCallback, String serviceClassName,
Bundle childProcessCommonParameters, ChildProcessCreationParams creationParams) {
- assert LauncherThread.runningOnLauncherThread();
- return new ManagedChildProcessConnection(context, number, sandboxed, deathCallback,
- serviceClassName, childProcessCommonParameters, creationParams);
+ return new ManagedChildProcessConnection(handler, context, number, sandboxed,
+ deathCallback, serviceClassName, childProcessCommonParameters, creationParams);
}
};
@@ -60,10 +60,10 @@ public class ManagedChildProcessConnection extends BaseChildProcessConnection {
private boolean mUnbound;
@VisibleForTesting
- ManagedChildProcessConnection(Context context, int number, boolean sandboxed,
+ ManagedChildProcessConnection(Handler handler, Context context, int number, boolean sandboxed,
DeathCallback deathCallback, String serviceClassName,
Bundle childProcessCommonParameters, ChildProcessCreationParams creationParams) {
- super(context, number, sandboxed, deathCallback, serviceClassName,
+ super(handler, context, number, sandboxed, deathCallback, serviceClassName,
childProcessCommonParameters, creationParams);
int initialFlags = Context.BIND_AUTO_CREATE;
@@ -78,7 +78,7 @@ public class ManagedChildProcessConnection extends BaseChildProcessConnection {
@Override
protected boolean bind() {
- assert LauncherThread.runningOnLauncherThread();
+ checkOnValidThread();
assert !mUnbound;
if (!mInitialBinding.bind()) {
return false;
@@ -90,7 +90,7 @@ public class ManagedChildProcessConnection extends BaseChildProcessConnection {
@Override
public void unbind() {
- assert LauncherThread.runningOnLauncherThread();
+ checkOnValidThread();
mUnbound = true;
mInitialBinding.unbind();
mStrongBinding.unbind();
@@ -101,17 +101,17 @@ public class ManagedChildProcessConnection extends BaseChildProcessConnection {
}
public boolean isInitialBindingBound() {
- assert LauncherThread.runningOnLauncherThread();
+ checkOnValidThread();
return mInitialBinding.isBound();
}
public boolean isStrongBindingBound() {
- assert LauncherThread.runningOnLauncherThread();
+ checkOnValidThread();
return mStrongBinding.isBound();
}
public void removeInitialBinding() {
- assert LauncherThread.runningOnLauncherThread();
+ checkOnValidThread();
mInitialBinding.unbind();
updateOomProtectedState();
}
@@ -120,14 +120,15 @@ public class ManagedChildProcessConnection extends BaseChildProcessConnection {
* @return true if the connection is bound and OOM protected or was OOM protected when unbound.
*/
public boolean isOomProtectedOrWasWhenDied() {
- // WARNING: this method can be called from a thread other than the launcher thread.
+ // WARNING: this method can be called from a thread other than the connection's thread.
// Note that it returns the current OOM protected state and is racy. This not really
- // preventable without changing the caller's API, short of blocking.
+ // preventable as the renderer currently requires an API that returns a value and is accesed
+ // from a different thread (short of blocking, which is not acceptable either).
return mOomProtected;
}
public void dropOomBindings() {
- assert LauncherThread.runningOnLauncherThread();
+ checkOnValidThread();
mInitialBinding.unbind();
mStrongBindingCount = 0;
@@ -138,7 +139,7 @@ public class ManagedChildProcessConnection extends BaseChildProcessConnection {
}
public void addStrongBinding() {
- assert LauncherThread.runningOnLauncherThread();
+ checkOnValidThread();
if (!isConnected()) {
Log.w(TAG, "The connection is not bound for %d", getPid());
return;
@@ -151,7 +152,7 @@ public class ManagedChildProcessConnection extends BaseChildProcessConnection {
}
public void removeStrongBinding() {
- assert LauncherThread.runningOnLauncherThread();
+ checkOnValidThread();
if (!isConnected()) {
Log.w(TAG, "The connection is not bound for %d", getPid());
return;
@@ -166,12 +167,12 @@ public class ManagedChildProcessConnection extends BaseChildProcessConnection {
}
public boolean isModerateBindingBound() {
- assert LauncherThread.runningOnLauncherThread();
+ checkOnValidThread();
return mModerateBinding.isBound();
}
public void addModerateBinding() {
- assert LauncherThread.runningOnLauncherThread();
+ checkOnValidThread();
if (!isConnected()) {
Log.w(TAG, "The connection is not bound for %d", getPid());
return;
@@ -180,7 +181,7 @@ public class ManagedChildProcessConnection extends BaseChildProcessConnection {
}
public void removeModerateBinding() {
- assert LauncherThread.runningOnLauncherThread();
+ checkOnValidThread();
if (!isConnected()) {
Log.w(TAG, "The connection is not bound for %d", getPid());
return;

Powered by Google App Engine
This is Rietveld 408576698