| 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 f62213fc1a85854a7ccbae045b4746463b4496ed..c1f7103c432cf38cb98187dab685e96753320d50 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
|
| @@ -84,6 +84,8 @@ import org.chromium.content_public.browser.WebContentsObserver;
|
| import org.chromium.ui.base.DeviceFormFactor;
|
| import org.chromium.ui.base.ViewAndroidDelegate;
|
| import org.chromium.ui.base.WindowAndroid;
|
| +import org.chromium.ui.base.WindowAndroidChangedObserver;
|
| +import org.chromium.ui.base.WindowAndroidProvider;
|
| import org.chromium.ui.base.ime.TextInputType;
|
| import org.chromium.ui.gfx.DeviceDisplayInfo;
|
| import org.chromium.ui.touch_selection.SelectionEventType;
|
| @@ -105,7 +107,8 @@ import java.util.Map.Entry;
|
| */
|
| @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
|
| @@ -614,6 +617,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
|
| @@ -647,6 +653,7 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
|
| mGestureStateListenersIterator = mGestureStateListeners.rewindableIterator();
|
|
|
| mContainerViewObservers = new ObserverList<ContainerViewObserver>();
|
| + mWindowAndroidChangedObservers = new ObserverList<WindowAndroidChangedObserver>();
|
| }
|
|
|
| /**
|
| @@ -674,11 +681,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.
|
| @@ -825,6 +843,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);
|
| + }
|
| }
|
|
|
| @VisibleForTesting
|
|
|