summaryrefslogtreecommitdiff
path: root/graphics/java/android
diff options
context:
space:
mode:
authorHuihong Luo <huisinro@google.com>2021-05-03 14:47:36 -0700
committerHuihong Luo <huisinro@google.com>2021-06-18 10:14:22 -0700
commit34f42fdecdf380d82f2be32b3564517002cc2112 (patch)
treeb399058237780bf95b6b6a688e48e3fd727544bc /graphics/java/android
parent1d88151a380c2a8f102c76b8413d17989215ccf8 (diff)
Fix z-order for webview surface control
Set the root surface control transparent, and set the z order of the newly created child surface control to -1. A new callback is needed to update root surface control in sync from Java side. Bug: 186750329 Test: use latest APKs from Webview team, play a video, mini toolbar should be visible Change-Id: I0b37ee8f83fd2b41ff4f2856dbadd31ff6170baf
Diffstat (limited to 'graphics/java/android')
-rw-r--r--graphics/java/android/graphics/HardwareRenderer.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/graphics/java/android/graphics/HardwareRenderer.java b/graphics/java/android/graphics/HardwareRenderer.java
index 6aa74cb415f9..e141d5178570 100644
--- a/graphics/java/android/graphics/HardwareRenderer.java
+++ b/graphics/java/android/graphics/HardwareRenderer.java
@@ -762,6 +762,16 @@ public class HardwareRenderer {
nSetASurfaceTransactionCallback(mNativeProxy, callback);
}
+ private PrepareSurfaceControlForWebviewCallback mAPrepareSurfaceControlForWebviewCallback;
+
+ /** @hide */
+ public void setPrepareSurfaceControlForWebviewCallback(
+ PrepareSurfaceControlForWebviewCallback callback) {
+ // ensure callback is kept alive on the java side since weak ref is used in native code
+ mAPrepareSurfaceControlForWebviewCallback = callback;
+ nSetPrepareSurfaceControlForWebviewCallback(mNativeProxy, callback);
+ }
+
/** @hide */
public void setFrameCallback(FrameDrawingCallback callback) {
nSetFrameCallback(mNativeProxy, callback);
@@ -876,6 +886,19 @@ public class HardwareRenderer {
session.close();
}
+ /**
+ * Interface used to receive callbacks when Webview requests a surface control.
+ *
+ * @hide
+ */
+ public interface PrepareSurfaceControlForWebviewCallback {
+ /**
+ * Invoked when Webview calls to get a surface control.
+ *
+ */
+ void prepare();
+ }
+
/**
* Interface used to receive callbacks when a transaction needs to be merged.
*
@@ -1374,6 +1397,9 @@ public class HardwareRenderer {
private static native void nSetASurfaceTransactionCallback(long nativeProxy,
ASurfaceTransactionCallback callback);
+ private static native void nSetPrepareSurfaceControlForWebviewCallback(long nativeProxy,
+ PrepareSurfaceControlForWebviewCallback callback);
+
private static native void nSetFrameCallback(long nativeProxy, FrameDrawingCallback callback);
private static native void nSetFrameCompleteCallback(long nativeProxy,