[Android] Move keyboard delegate into ActivityWindow
Before this CL, several places (esp. in browser/) would override the
instance of the keyboard delegate in ui/. This caused an inconsistent,
hard to track state of the KeyboardVisibilityDelegate.
With this CL, the ui/ takes control of setting the delegate and specific
browser-side implementations are called by using the appropriate factory
methods. For that, the KeyboardVisibilityDelegate (brief: KVD) uses
sublasses with very clearly split responsibilities:
KeyboardVisibilityDelegate (ui/; public interface for all clients)
<-- ActivityKVD (ui/; propagates visibility changes to listeners)
  <-- SingleWindowKVD (browser/; prevents multi-window use)
    <-- ChromeKVD (browser/ separates extensions/native)
      <-- FakeKeyboard (javatests/; mocks native keyboard)
The CL actually has no functional changes, it performs these moves:
 - WindowAndroid Listeners moved into KeyboardVisibilityDelegate
 - AcivityWindowAndroid callbacks moved into ActivityKVD
 - ProcessInitializationHandler delegate became SingleWindowKVD
 - ManualFillingTestHelper's FakeKeyboard became a new, public class
Functional changes follow with https://crrev.com/c/1286426 and mainly
affect the ChromeKVD.
Purpose of isAndroidSoftKeyboardShowing(...) and
hideAndroidSoftKeyboardKeyboard(...):
 - Template methods to simplify mocking the calls to InputMethodManager
 - Ensures access to keyboard without extensions in subclasses (e.g. Chrome KVD)
 - prevents use of @CallSuper
Change-Id: I06cf50f48625d2d883efc8cd66a3d062204e51b2
Reviewed-on: https://chromium-review.googlesource.com/c/1286649
Commit-Queue: Friedrich Horschig [EDT] <fhorschig@chromium.org>
Reviewed-by:  Ted Choc <tedchoc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#602293}
Ted Choc <tedchoc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#602293}
Showing
Please register or sign in to comment