| Index: content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
|
| index 202099469a64c9c40999ddb14250805b6f819f0c..b13ffbb6ca60d4e52d773ce65f08f8178dac445f 100644
|
| --- a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
|
| @@ -177,9 +177,9 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection {
|
| if (mServiceDisconnected) {
|
| return;
|
| }
|
| - mServiceDisconnected = true;
|
| // Stash the status of the oom bindings, since stop() will release all bindings.
|
| - mWasOomProtected = mInitialBinding.isBound() || mStrongBinding.isBound();
|
| + mWasOomProtected = isCurrentlyOomProtected();
|
| + mServiceDisconnected = true;
|
| Log.w(TAG, "onServiceDisconnected (crash or killed by oom): pid=" + mPid);
|
| stop(); // We don't want to auto-restart on crash. Let the browser do that.
|
| mDeathCallback.onChildProcessDied(ChildProcessConnectionImpl.this);
|
| @@ -407,11 +407,19 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection {
|
| if (mServiceDisconnected) {
|
| return mWasOomProtected;
|
| } else {
|
| - return mInitialBinding.isBound() || mStrongBinding.isBound();
|
| + return isCurrentlyOomProtected();
|
| }
|
| }
|
| }
|
|
|
| + private boolean isCurrentlyOomProtected() {
|
| + synchronized (mLock) {
|
| + assert !mServiceDisconnected;
|
| + if (mAlwaysInForeground) return ChildProcessLauncher.isApplicationInForeground();
|
| + return mInitialBinding.isBound() || mStrongBinding.isBound();
|
| + }
|
| + }
|
| +
|
| @Override
|
| public void dropOomBindings() {
|
| synchronized (mLock) {
|
|
|