Index: content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java |
index c81626eade73330fc59d937331fc81ac03bedaa6..4d9301568bd3b79c75bf37779b15f3347255e1ba 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java |
@@ -40,7 +40,6 @@ import org.chromium.base.WeakContext; |
import org.chromium.content.app.AppResource; |
import org.chromium.content.browser.ContentViewGestureHandler.MotionEventDelegate; |
import org.chromium.content.browser.accessibility.AccessibilityInjector; |
-import org.chromium.content.common.CleanupReference; |
import org.chromium.content.common.TraceEvent; |
import org.chromium.ui.gfx.NativeWindow; |
@@ -132,19 +131,6 @@ public class ContentViewCore implements MotionEventDelegate { |
boolean super_awakenScrollBars(int startDelay, boolean invalidate); |
} |
- private static final class DestroyRunnable implements Runnable { |
- private final int mNativeContentViewCore; |
- private DestroyRunnable(int nativeContentViewCore) { |
- mNativeContentViewCore = nativeContentViewCore; |
- } |
- @Override |
- public void run() { |
- nativeDestroy(mNativeContentViewCore); |
- } |
- } |
- |
- private CleanupReference mCleanupReference; |
- |
private final Context mContext; |
private ViewGroup mContainerView; |
private InternalAccessDelegate mContainerViewInternals; |
@@ -450,8 +436,6 @@ public class ContentViewCore implements MotionEventDelegate { |
mContainerView = containerView; |
mNativeContentViewCore = nativeInit(mHardwareAccelerated, nativeWebContents, |
nativeWindow.getNativePointer()); |
- mCleanupReference = new CleanupReference( |
- this, new DestroyRunnable(mNativeContentViewCore)); |
mContentSettings = new ContentSettings( |
this, mNativeContentViewCore, isAccessFromFileURLsGrantedByDefault); |
initializeContainerView(internalDispatcher); |
@@ -478,6 +462,12 @@ public class ContentViewCore implements MotionEventDelegate { |
}; |
} |
+ @CalledByNative |
+ void onNativeContentViewCoreDestroyed(int nativeContentViewCore) { |
+ assert nativeContentViewCore == mNativeContentViewCore; |
+ mNativeContentViewCore = 0; |
+ } |
+ |
/** |
* Initializes the View that will contain all Views created by the ContentViewCore. |
* |
@@ -566,7 +556,9 @@ public class ContentViewCore implements MotionEventDelegate { |
*/ |
public void destroy() { |
hidePopupDialog(); |
- mCleanupReference.cleanupNow(); |
+ if (mNativeContentViewCore != 0) { |
+ nativeOnJavaContentViewCoreDestroyed(mNativeContentViewCore); |
+ } |
mNativeContentViewCore = 0; |
// Do not propagate the destroy() to settings, as the client may still hold a reference to |
// that and could still be using it. |
@@ -2075,7 +2067,7 @@ public class ContentViewCore implements MotionEventDelegate { |
private native int nativeInit(boolean hardwareAccelerated, int webContentsPtr, |
int windowAndroidPtr); |
- private static native void nativeDestroy(int nativeContentViewCore); |
+ private native void nativeOnJavaContentViewCoreDestroyed(int nativeContentViewCoreImpl); |
private native void nativeLoadUrl( |
int nativeContentViewCoreImpl, |