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 1ff6169b943034df460a8388ceac665aae26c8dc..f7f3ccedb74ef11394aca7df48d17a9b69874e5d 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 |
@@ -103,7 +103,8 @@ import java.util.Map; |
*/ |
@JNINamespace("content") |
public class ContentViewCore implements AccessibilityStateChangeListener, ScreenOrientationObserver, |
- SystemCaptioningBridge.SystemCaptioningBridgeListener { |
+ SystemCaptioningBridge.SystemCaptioningBridgeListener, |
+ WindowAndroidProvider { |
private static final String TAG = "cr_ContentViewCore"; |
// Used to avoid enabling zooming in / out if resulting zooming will |
@@ -462,6 +463,9 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen |
// ResultReceiver in the InputMethodService (IME app) gets gc'ed. |
private ShowKeyboardResultReceiver mShowKeyboardResultReceiver; |
+ // The list of observers that are notified when ContentViewCore changes its WindowAndroid. |
+ private final ObserverList<WindowAndroidChangedObserver> mWindowAndroidChangedObservers; |
+ |
/** |
* @param webContents The {@link WebContents} to find a {@link ContentViewCore} of. |
* @return A {@link ContentViewCore} that is connected to {@code webContents} or |
@@ -495,6 +499,7 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen |
mGestureStateListenersIterator = mGestureStateListeners.rewindableIterator(); |
mContainerViewObservers = new ObserverList<ContainerViewObserver>(); |
+ mWindowAndroidChangedObservers = new ObserverList<WindowAndroidChangedObserver>(); |
} |
/** |
@@ -522,11 +527,22 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen |
/** |
* @return The WindowAndroid associated with this ContentViewCore. |
*/ |
+ @Override |
public WindowAndroid getWindowAndroid() { |
if (mNativeContentViewCore == 0) return null; |
return nativeGetJavaWindowAndroid(mNativeContentViewCore); |
} |
+ @Override |
+ public void addWindowAndroidChangedObserver(WindowAndroidChangedObserver observer) { |
+ mWindowAndroidChangedObservers.addObserver(observer); |
+ } |
+ |
+ @Override |
+ public void removeWindowAndroidChangedObserver(WindowAndroidChangedObserver observer) { |
+ mWindowAndroidChangedObservers.removeObserver(observer); |
+ } |
+ |
/** |
* |
* @param topControlsHeightPix The height of the top controls in pixels. |
@@ -665,6 +681,10 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen |
// Clean up cached popups that may have been created with an old activity. |
mSelectPopup = null; |
mPastePopupMenu = null; |
+ |
+ for (WindowAndroidChangedObserver observer : mWindowAndroidChangedObservers) { |
+ observer.onWindowAndroidChanged(windowAndroid); |
+ } |
} |
/** |