diff options
author | Huihong Luo <huisinro@google.com> | 2021-05-03 14:47:36 -0700 |
---|---|---|
committer | Huihong Luo <huisinro@google.com> | 2021-06-18 10:14:22 -0700 |
commit | 34f42fdecdf380d82f2be32b3564517002cc2112 (patch) | |
tree | b399058237780bf95b6b6a688e48e3fd727544bc /graphics/java/android | |
parent | 1d88151a380c2a8f102c76b8413d17989215ccf8 (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.java | 26 |
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, |