From eeef1a9baa0053a13b5e4c3a5f4a47b0993daf69 Mon Sep 17 00:00:00 2001 From: Valerie Hau Date: Thu, 16 Jan 2020 11:24:50 -0800 Subject: [PATCH] Adding WINDOW_MANAGER_NATIVE_BOOT and window_manager_use_blast_adapter flags For ViewRootImpl on BLAST experiment, setting up namespace and flag to turn on Blast adapter through P/H experiment Bug: 147096935 Test: build, boot, adb shell device_config put window_manager_native_boot wm_use_blast_adapter true/false check that BLAST adapter is turned on/off as expected Change-Id: Ie1b158721ac9b751fcf3954310259f14486d3bb8 --- api/system-current.txt | 1 + core/java/android/provider/DeviceConfig.java | 9 +++++++++ core/java/android/view/WindowManagerGlobal.java | 8 +++++++- .../android/server/am/SettingsToPropertiesMapper.java | 1 + 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/api/system-current.txt b/api/system-current.txt index 71d1a381ec31c..b3e86689968d3 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -7877,6 +7877,7 @@ package android.provider { field public static final String NAMESPACE_SYSTEMUI = "systemui"; field public static final String NAMESPACE_TELEPHONY = "telephony"; field public static final String NAMESPACE_TEXTCLASSIFIER = "textclassifier"; + field public static final String NAMESPACE_WINDOW_MANAGER_NATIVE_BOOT = "window_manager_native_boot"; } public static class DeviceConfig.BadConfigException extends java.lang.Exception { diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java index 6650cf23d6110..8595e5f4addeb 100644 --- a/core/java/android/provider/DeviceConfig.java +++ b/core/java/android/provider/DeviceConfig.java @@ -332,6 +332,15 @@ public final class DeviceConfig { */ public static final String NAMESPACE_WINDOW_MANAGER = "window_manager"; + /** + * Namespace for window manager features accessible by native code and + * loaded once per boot. + * + * @hide + */ + @SystemApi + public static final String NAMESPACE_WINDOW_MANAGER_NATIVE_BOOT = "window_manager_native_boot"; + /** * List of namespaces which can be read without READ_DEVICE_CONFIG permission * diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java index 7d5564e1c8be4..7f7a36c5d0ce9 100644 --- a/core/java/android/view/WindowManagerGlobal.java +++ b/core/java/android/view/WindowManagerGlobal.java @@ -29,6 +29,7 @@ import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; +import android.provider.DeviceConfig; import android.util.AndroidRuntimeException; import android.util.ArraySet; import android.util.Log; @@ -56,11 +57,16 @@ import java.util.ArrayList; public final class WindowManagerGlobal { private static final String TAG = "WindowManager"; + private static final String WM_USE_BLAST_ADAPTER_FLAG = "wm_use_blast_adapter"; + /** * This flag controls whether ViewRootImpl will utilize the Blast Adapter * to send buffer updates to SurfaceFlinger */ - public static final boolean USE_BLAST_ADAPTER = false; + public static final boolean USE_BLAST_ADAPTER = + SystemProperties.getBoolean(String.join(".", "persist.device_config", + DeviceConfig.NAMESPACE_WINDOW_MANAGER_NATIVE_BOOT, + WM_USE_BLAST_ADAPTER_FLAG), false); /** * The user is navigating with keys (not the touch screen), so diff --git a/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java b/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java index 4a6e63f2d2ab4..0a8e70c7d772f 100644 --- a/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java +++ b/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java @@ -87,6 +87,7 @@ public class SettingsToPropertiesMapper { DeviceConfig.NAMESPACE_RUNTIME_NATIVE, DeviceConfig.NAMESPACE_RUNTIME_NATIVE_BOOT, DeviceConfig.NAMESPACE_STORAGE_NATIVE_BOOT, + DeviceConfig.NAMESPACE_WINDOW_MANAGER_NATIVE_BOOT, }; private final String[] mGlobalSettings;