diff options
| author | Changwan Ryu <changwan@google.com> | 2020-06-22 13:59:30 -0700 |
|---|---|---|
| committer | Changwan Ryu <changwan@google.com> | 2020-06-25 17:15:26 -0700 |
| commit | 47c0a4808944d84a6ac19a3ade1afccbc3ba0a00 (patch) | |
| tree | 07f89e281c08eb03cc9c31198a6eee6c019976d2 /core/java/android/webkit/WebView.java | |
| parent | a6846ed09b79af530b650144440c6de10dd1a2e3 (diff) | |
[WebView] Listen to window insets change
Overriding these methods in preparation for notch and safe area implementation
for WebView.
A corresponding implementation for Chrome app does this:
https://source.chromium.org/chromium/chromium/src/+/master:components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/InsetObserverView.java;l=179;drc=b17e62321db0f69a9131d3bb87ab9cef502a0eaf?originalUrl=https:%2F%2Fcs.chromium.org%2F
An alternative would be to call View#setOnApplyWindowInsetsListener(),
but that might not be as straightforward and might conflict with app's own
usage around windowinsets.
Returning null from a default implementation and use super method until
we can actually implement it in the chromium repo.
(Note: I would like to merge this to R if possible.)
Bug: 159610496
Test: CL does not break build/test.
Change-Id: Ic0421d7347e8091e02af6c9d5a24fdb334f37c47
Diffstat (limited to 'core/java/android/webkit/WebView.java')
| -rw-r--r-- | core/java/android/webkit/WebView.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index f9a713ac7fcc..1c75232dc15c 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -55,6 +55,7 @@ import android.view.ViewGroup; import android.view.ViewHierarchyEncoder; import android.view.ViewStructure; import android.view.ViewTreeObserver; +import android.view.WindowInsets; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeProvider; @@ -2449,6 +2450,14 @@ public class WebView extends AbsoluteLayout WebView.super.startActivityForResult(intent, requestCode); } + /** + * @see View#onApplyWindowInsets(WindowInsets) + */ + @Nullable + public WindowInsets super_onApplyWindowInsets(@Nullable WindowInsets insets) { + return WebView.super.onApplyWindowInsets(insets); + } + // ---- Access to non-public methods ---- public void overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, @@ -3078,4 +3087,11 @@ public class WebView extends AbsoluteLayout encoder.addProperty("webview:url", mProvider.getUrl()); encoder.addProperty("webview:originalUrl", mProvider.getOriginalUrl()); } + + @Override + public WindowInsets onApplyWindowInsets(WindowInsets insets) { + WindowInsets result = mProvider.getViewDelegate().onApplyWindowInsets(insets); + if (result == null) return super.onApplyWindowInsets(insets); + return result; + } } |
