summaryrefslogtreecommitdiffstats
path: root/content/public/android/java
diff options
context:
space:
mode:
Diffstat (limited to 'content/public/android/java')
-rw-r--r--content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java4
-rw-r--r--content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsObserverProxy.java7
2 files changed, 7 insertions, 4 deletions
diff --git a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
index f7a82e6..216be3a 100644
--- a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
@@ -331,10 +331,6 @@ import org.chromium.content_public.browser.WebContentsObserver;
public void removeObserver(WebContentsObserver observer) {
if (mObserverProxy == null) return;
mObserverProxy.removeObserver(observer);
- if (!mObserverProxy.hasObservers()) {
- mObserverProxy.destroy();
- mObserverProxy = null;
- }
}
// This is static to avoid exposing a public destroy method on the native side of this class.
diff --git a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsObserverProxy.java b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsObserverProxy.java
index fdae8f3a..730379a 100644
--- a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsObserverProxy.java
+++ b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsObserverProxy.java
@@ -224,7 +224,14 @@ class WebContentsObserverProxy extends WebContentsObserver {
// Java-based WebContents) are quite different, so we explicitly avoid
// calling it here.
ThreadUtils.assertOnUiThread();
+ for (mObserversIterator.rewind(); mObserversIterator.hasNext();) {
+ mObserversIterator.next().destroy();
+ }
+ // All observer destroy() implementations should result in their removal
+ // from the proxy.
+ assert mObservers.isEmpty();
mObservers.clear();
+
if (mNativeWebContentsObserverProxy != 0) {
nativeDestroy(mNativeWebContentsObserverProxy);
mNativeWebContentsObserverProxy = 0;