Add a sys prop to control WebView Overlays support
The boolean system property is named as "debug.hwui.webview_overlays_enabled" Bug: 192267127 Test: change the property value, check presence of Webview Surface Control Change-Id: I01e3e26282a5fa79aa504a6e49c5abe1a1c3ea02
This commit is contained in:
@@ -1442,8 +1442,10 @@ public final class ViewRootImpl implements ViewParent,
|
||||
if (mHardwareRendererObserver != null) {
|
||||
mAttachInfo.mThreadedRenderer.addObserver(mHardwareRendererObserver);
|
||||
}
|
||||
addPrepareSurfaceControlForWebviewCallback();
|
||||
addASurfaceTransactionCallback();
|
||||
if (HardwareRenderer.isWebViewOverlaysEnabled()) {
|
||||
addPrepareSurfaceControlForWebviewCallback();
|
||||
addASurfaceTransactionCallback();
|
||||
}
|
||||
mAttachInfo.mThreadedRenderer.setSurfaceControl(mSurfaceControl);
|
||||
}
|
||||
}
|
||||
@@ -7777,8 +7779,10 @@ public final class ViewRootImpl implements ViewParent,
|
||||
}
|
||||
}
|
||||
if (mAttachInfo.mThreadedRenderer != null) {
|
||||
addPrepareSurfaceControlForWebviewCallback();
|
||||
addASurfaceTransactionCallback();
|
||||
if (HardwareRenderer.isWebViewOverlaysEnabled()) {
|
||||
addPrepareSurfaceControlForWebviewCallback();
|
||||
addASurfaceTransactionCallback();
|
||||
}
|
||||
mAttachInfo.mThreadedRenderer.setSurfaceControl(mSurfaceControl);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -1304,6 +1304,11 @@ public class HardwareRenderer {
|
||||
*/
|
||||
public static native void preload();
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public static native boolean isWebViewOverlaysEnabled();
|
||||
|
||||
/** @hide */
|
||||
protected static native void setupShadersDiskCache(String cacheFile, String skiaCacheFile);
|
||||
|
||||
|
||||
@@ -84,6 +84,8 @@ float Properties::defaultSdrWhitePoint = 200.f;
|
||||
bool Properties::useHintManager = true;
|
||||
int Properties::targetCpuTimePercentage = 70;
|
||||
|
||||
bool Properties::enableWebViewOverlays = false;
|
||||
|
||||
StretchEffectBehavior Properties::stretchEffectBehavior = StretchEffectBehavior::ShaderHWUI;
|
||||
|
||||
bool Properties::load() {
|
||||
@@ -137,6 +139,8 @@ bool Properties::load() {
|
||||
targetCpuTimePercentage = base::GetIntProperty(PROPERTY_TARGET_CPU_TIME_PERCENTAGE, 70);
|
||||
if (targetCpuTimePercentage <= 0 || targetCpuTimePercentage > 100) targetCpuTimePercentage = 70;
|
||||
|
||||
enableWebViewOverlays = base::GetBoolProperty(PROPERTY_WEBVIEW_OVERLAYS_ENABLED, false);
|
||||
|
||||
return (prevDebugLayersUpdates != debugLayersUpdates) || (prevDebugOverdraw != debugOverdraw);
|
||||
}
|
||||
|
||||
|
||||
@@ -182,6 +182,11 @@ enum DebugLevel {
|
||||
*/
|
||||
#define PROPERTY_REDUCE_OPS_TASK_SPLITTING "renderthread.skia.reduceopstasksplitting"
|
||||
|
||||
/**
|
||||
* Enable WebView Overlays feature.
|
||||
*/
|
||||
#define PROPERTY_WEBVIEW_OVERLAYS_ENABLED "debug.hwui.webview_overlays_enabled"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Misc
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -276,6 +281,8 @@ public:
|
||||
static bool useHintManager;
|
||||
static int targetCpuTimePercentage;
|
||||
|
||||
static bool enableWebViewOverlays;
|
||||
|
||||
static StretchEffectBehavior getStretchEffectBehavior() {
|
||||
return stretchEffectBehavior;
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ void WebViewFunctor::drawGl(const DrawGlInfo& drawInfo) {
|
||||
.mergeTransaction = currentFunctor.mergeTransaction,
|
||||
};
|
||||
|
||||
if (!drawInfo.isLayer) {
|
||||
if (Properties::enableWebViewOverlays && !drawInfo.isLayer) {
|
||||
renderthread::CanvasContext* activeContext =
|
||||
renderthread::CanvasContext::getActiveContext();
|
||||
if (activeContext != nullptr) {
|
||||
|
||||
@@ -933,6 +933,11 @@ static void android_view_ThreadedRenderer_setupShadersDiskCache(JNIEnv* env, job
|
||||
env->ReleaseStringUTFChars(skiaDiskCachePath, skiaCacheArray);
|
||||
}
|
||||
|
||||
static jboolean android_view_ThreadedRenderer_isWebViewOverlaysEnabled(JNIEnv* env, jobject clazz) {
|
||||
// this value is valid only after loadSystemProperties() is called
|
||||
return Properties::enableWebViewOverlays;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// JNI Glue
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -1025,6 +1030,8 @@ static const JNINativeMethod gMethods[] = {
|
||||
(void*)android_view_ThreadedRenderer_setDisplayDensityDpi},
|
||||
{"nInitDisplayInfo", "(IIFIJJ)V", (void*)android_view_ThreadedRenderer_initDisplayInfo},
|
||||
{"preload", "()V", (void*)android_view_ThreadedRenderer_preload},
|
||||
{"isWebViewOverlaysEnabled", "()Z",
|
||||
(void*)android_view_ThreadedRenderer_isWebViewOverlaysEnabled},
|
||||
};
|
||||
|
||||
static JavaVM* mJvm = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user