| Index: ui/android/java/src/org/chromium/ui/base/WindowAndroid.java
|
| diff --git a/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java b/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java
|
| index 86cb72dffbcdbea0a1779f4525d9fc4d3fa3e500..050e09bd2448531fe81611a2852ff026b4890094 100644
|
| --- a/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java
|
| +++ b/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java
|
| @@ -26,6 +26,7 @@ import org.chromium.ui.VSyncMonitor;
|
| import java.lang.ref.WeakReference;
|
| import java.util.HashMap;
|
| import java.util.HashSet;
|
| +import java.util.LinkedList;
|
|
|
| /**
|
| * The window base class that has the minimum functionality.
|
| @@ -58,6 +59,15 @@ public class WindowAndroid {
|
|
|
| private ViewGroup mKeyboardAccessoryView;
|
|
|
| + /**
|
| + * An interface to notify listeners of changes in the soft keyboard's visibility.
|
| + */
|
| + public interface KeyboardVisibilityListener {
|
| + public void keyboardVisibilityChanged(boolean isShowing);
|
| + }
|
| + private LinkedList<KeyboardVisibilityListener> mKeyboardVisibilityListeners =
|
| + new LinkedList<KeyboardVisibilityListener>();
|
| +
|
| private final VSyncMonitor.Listener mVSyncListener = new VSyncMonitor.Listener() {
|
| @Override
|
| public void onVSync(VSyncMonitor monitor, long vsyncTimeMicros) {
|
| @@ -327,6 +337,34 @@ public class WindowAndroid {
|
| }
|
|
|
| /**
|
| + * Adds a listener that is updated of keyboard visibility changes. This works as a best guess.
|
| + * {@see UiUtils.isKeyboardShowing}
|
| + */
|
| + public void addKeyboardVisibilityListener(KeyboardVisibilityListener listener) {
|
| + mKeyboardVisibilityListeners.add(listener);
|
| + }
|
| +
|
| + /**
|
| + * {@see addKeyboardVisibilityListener()}.
|
| + */
|
| + public void removeKeyboardVisibilityListener(KeyboardVisibilityListener listener) {
|
| + mKeyboardVisibilityListeners.remove(listener);
|
| + }
|
| +
|
| + /**
|
| + * To be called when the keyboard visibility state has changed. Informs listeners of the state
|
| + * change.
|
| + */
|
| + public void keyboardVisibilityChanged(boolean isShowing) {
|
| + // Clone the list in case a listener tries to remove itself during the callback.
|
| + LinkedList<KeyboardVisibilityListener> listeners =
|
| + new LinkedList<KeyboardVisibilityListener>(mKeyboardVisibilityListeners);
|
| + for (KeyboardVisibilityListener listener : listeners) {
|
| + listener.keyboardVisibilityChanged(isShowing);
|
| + }
|
| + }
|
| +
|
| + /**
|
| * Start a post-layout animation on top of web content.
|
| *
|
| * By default, Android optimizes what it shows on top of SurfaceViews (saves power).
|
|
|