summaryrefslogtreecommitdiff
path: root/core/java/android/webkit/WebView.java
diff options
context:
space:
mode:
authorChangwan Ryu <changwan@google.com>2020-06-22 13:59:30 -0700
committerChangwan Ryu <changwan@google.com>2020-06-25 17:15:26 -0700
commit47c0a4808944d84a6ac19a3ade1afccbc3ba0a00 (patch)
tree07f89e281c08eb03cc9c31198a6eee6c019976d2 /core/java/android/webkit/WebView.java
parenta6846ed09b79af530b650144440c6de10dd1a2e3 (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.java16
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;
+ }
}