Loading api/test-current.txt +12 −7 Original line number Original line Diff line number Diff line Loading @@ -4350,6 +4350,18 @@ package android.view { method public abstract String asyncImpl() default ""; method public abstract String asyncImpl() default ""; } } public class SurfaceControlViewHost { ctor public SurfaceControlViewHost(@NonNull android.content.Context, @NonNull android.view.Display, @Nullable android.os.IBinder); method public void addView(android.view.View, android.view.WindowManager.LayoutParams); method public void dispose(); method @Nullable public android.view.SurfaceControlViewHost.SurfacePackage getSurfacePackage(); method public void relayout(android.view.WindowManager.LayoutParams); } public class SurfaceControlViewHost.SurfacePackage { method @NonNull public android.view.SurfaceControl getSurfaceControl(); } public class SurfaceView extends android.view.View { public class SurfaceView extends android.view.View { method @Nullable public android.os.IBinder getInputToken(); method @Nullable public android.os.IBinder getInputToken(); } } Loading Loading @@ -4401,13 +4413,6 @@ package android.view { field @android.view.ViewDebug.ExportedProperty(flagMapping={@android.view.ViewDebug.FlagToString(mask=0x1, equals=0x1, name="FAKE_HARDWARE_ACCELERATED"), @android.view.ViewDebug.FlagToString(mask=0x2, equals=0x2, name="FORCE_HARDWARE_ACCELERATED"), @android.view.ViewDebug.FlagToString(mask=0x4, equals=0x4, name="WANTS_OFFSET_NOTIFICATIONS"), @android.view.ViewDebug.FlagToString(mask=0x10, equals=0x10, name="SHOW_FOR_ALL_USERS"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION, equals=android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION, name="NO_MOVE_ANIMATION"), @android.view.ViewDebug.FlagToString(mask=0x80, equals=0x80, name="COMPATIBLE_WINDOW"), @android.view.ViewDebug.FlagToString(mask=0x100, equals=0x100, name="SYSTEM_ERROR"), @android.view.ViewDebug.FlagToString(mask=0x400, equals=0x400, name="KEYGUARD"), @android.view.ViewDebug.FlagToString(mask=0x800, equals=0x800, name="DISABLE_WALLPAPER_TOUCH_EVENTS"), @android.view.ViewDebug.FlagToString(mask=0x1000, equals=0x1000, name="FORCE_STATUS_BAR_VISIBLE_TRANSPARENT"), @android.view.ViewDebug.FlagToString(mask=0x2000, equals=0x2000, name="PRESERVE_GEOMETRY"), @android.view.ViewDebug.FlagToString(mask=0x4000, equals=0x4000, name="FORCE_DECOR_VIEW_VISIBILITY"), @android.view.ViewDebug.FlagToString(mask=0x8000, equals=0x8000, name="WILL_NOT_REPLACE_ON_RELAUNCH"), @android.view.ViewDebug.FlagToString(mask=0x10000, equals=0x10000, name="LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME"), @android.view.ViewDebug.FlagToString(mask=0x20000, equals=0x20000, name="FORCE_DRAW_STATUS_BAR_BACKGROUND"), @android.view.ViewDebug.FlagToString(mask=0x40000, equals=0x40000, name="SUSTAINED_PERFORMANCE_MODE"), @android.view.ViewDebug.FlagToString(mask=0x80000, equals=0x80000, name="HIDE_NON_SYSTEM_OVERLAY_WINDOWS"), @android.view.ViewDebug.FlagToString(mask=0x100000, equals=0x100000, name="IS_ROUNDED_CORNERS_OVERLAY"), @android.view.ViewDebug.FlagToString(mask=0x400000, equals=0x400000, name="IS_SCREEN_DECOR"), @android.view.ViewDebug.FlagToString(mask=0x800000, equals=0x800000, name="STATUS_FORCE_SHOW_NAVIGATION"), @android.view.ViewDebug.FlagToString(mask=0x1000000, equals=0x1000000, name="COLOR_SPACE_AGNOSTIC"), @android.view.ViewDebug.FlagToString(mask=0x4000000, equals=0x4000000, name="FIT_INSETS_CONTROLLED"), @android.view.ViewDebug.FlagToString(mask=0x8000000, equals=0x8000000, name="ONLY_DRAW_BOTTOM_BAR_BACKGROUND")}) public int privateFlags; field @android.view.ViewDebug.ExportedProperty(flagMapping={@android.view.ViewDebug.FlagToString(mask=0x1, equals=0x1, name="FAKE_HARDWARE_ACCELERATED"), @android.view.ViewDebug.FlagToString(mask=0x2, equals=0x2, name="FORCE_HARDWARE_ACCELERATED"), @android.view.ViewDebug.FlagToString(mask=0x4, equals=0x4, name="WANTS_OFFSET_NOTIFICATIONS"), @android.view.ViewDebug.FlagToString(mask=0x10, equals=0x10, name="SHOW_FOR_ALL_USERS"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION, equals=android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION, name="NO_MOVE_ANIMATION"), @android.view.ViewDebug.FlagToString(mask=0x80, equals=0x80, name="COMPATIBLE_WINDOW"), @android.view.ViewDebug.FlagToString(mask=0x100, equals=0x100, name="SYSTEM_ERROR"), @android.view.ViewDebug.FlagToString(mask=0x400, equals=0x400, name="KEYGUARD"), @android.view.ViewDebug.FlagToString(mask=0x800, equals=0x800, name="DISABLE_WALLPAPER_TOUCH_EVENTS"), @android.view.ViewDebug.FlagToString(mask=0x1000, equals=0x1000, name="FORCE_STATUS_BAR_VISIBLE_TRANSPARENT"), @android.view.ViewDebug.FlagToString(mask=0x2000, equals=0x2000, name="PRESERVE_GEOMETRY"), @android.view.ViewDebug.FlagToString(mask=0x4000, equals=0x4000, name="FORCE_DECOR_VIEW_VISIBILITY"), @android.view.ViewDebug.FlagToString(mask=0x8000, equals=0x8000, name="WILL_NOT_REPLACE_ON_RELAUNCH"), @android.view.ViewDebug.FlagToString(mask=0x10000, equals=0x10000, name="LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME"), @android.view.ViewDebug.FlagToString(mask=0x20000, equals=0x20000, name="FORCE_DRAW_STATUS_BAR_BACKGROUND"), @android.view.ViewDebug.FlagToString(mask=0x40000, equals=0x40000, name="SUSTAINED_PERFORMANCE_MODE"), @android.view.ViewDebug.FlagToString(mask=0x80000, equals=0x80000, name="HIDE_NON_SYSTEM_OVERLAY_WINDOWS"), @android.view.ViewDebug.FlagToString(mask=0x100000, equals=0x100000, name="IS_ROUNDED_CORNERS_OVERLAY"), @android.view.ViewDebug.FlagToString(mask=0x400000, equals=0x400000, name="IS_SCREEN_DECOR"), @android.view.ViewDebug.FlagToString(mask=0x800000, equals=0x800000, name="STATUS_FORCE_SHOW_NAVIGATION"), @android.view.ViewDebug.FlagToString(mask=0x1000000, equals=0x1000000, name="COLOR_SPACE_AGNOSTIC"), @android.view.ViewDebug.FlagToString(mask=0x4000000, equals=0x4000000, name="FIT_INSETS_CONTROLLED"), @android.view.ViewDebug.FlagToString(mask=0x8000000, equals=0x8000000, name="ONLY_DRAW_BOTTOM_BAR_BACKGROUND")}) public int privateFlags; } } public class WindowlessViewRoot { ctor public WindowlessViewRoot(@NonNull android.content.Context, @NonNull android.view.Display, @NonNull android.view.SurfaceControl, @Nullable android.os.IBinder); method public void addView(android.view.View, android.view.WindowManager.LayoutParams); method public void dispose(); method public void relayout(android.view.WindowManager.LayoutParams); } } } package android.view.accessibility { package android.view.accessibility { Loading api/test-lint-baseline.txt +6 −6 Original line number Original line Diff line number Diff line Loading @@ -2079,17 +2079,17 @@ MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android MissingNullability: android.view.WindowManager.LayoutParams#accessibilityTitle: MissingNullability: android.view.WindowManager.LayoutParams#accessibilityTitle: MissingNullability: android.view.WindowlessViewRoot#WindowlessViewRoot(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #0: MissingNullability: android.view.SurfaceControlViewHost#SurfaceControlViewHost(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #0: MissingNullability: android.view.WindowlessViewRoot#WindowlessViewRoot(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #1: MissingNullability: android.view.SurfaceControlViewHost#SurfaceControlViewHost(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #1: MissingNullability: android.view.WindowlessViewRoot#WindowlessViewRoot(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #2: MissingNullability: android.view.SurfaceControlViewHost#SurfaceControlViewHost(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #2: MissingNullability: android.view.WindowlessViewRoot#addView(android.view.View, android.view.WindowManager.LayoutParams) parameter #0: MissingNullability: android.view.SurfaceControlViewHost#addView(android.view.View, android.view.WindowManager.LayoutParams) parameter #0: MissingNullability: android.view.WindowlessViewRoot#addView(android.view.View, android.view.WindowManager.LayoutParams) parameter #1: MissingNullability: android.view.SurfaceControlViewHost#addView(android.view.View, android.view.WindowManager.LayoutParams) parameter #1: MissingNullability: android.view.WindowlessViewRoot#relayout(android.view.WindowManager.LayoutParams) parameter #0: MissingNullability: android.view.SurfaceControlViewHost#relayout(android.view.WindowManager.LayoutParams) parameter #0: MissingNullability: android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener#onAccessibilityServicesStateChanged(android.view.accessibility.AccessibilityManager) parameter #0: MissingNullability: android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener#onAccessibilityServicesStateChanged(android.view.accessibility.AccessibilityManager) parameter #0: Loading core/java/android/view/WindowlessViewRoot.java→core/java/android/view/SurfaceControlViewHost.java +35 −5 Original line number Original line Diff line number Diff line Loading @@ -29,25 +29,55 @@ import android.os.IBinder; * @hide * @hide */ */ @TestApi @TestApi public class WindowlessViewRoot { public class SurfaceControlViewHost { private ViewRootImpl mViewRoot; private ViewRootImpl mViewRoot; private WindowlessWindowManager mWm; private WindowlessWindowManager mWm; private SurfaceControl mSurfaceControl; /** * @hide */ @TestApi public class SurfacePackage { final SurfaceControl mSurfaceControl; // TODO: Accessibility ID goes here SurfacePackage(SurfaceControl sc) { mSurfaceControl = sc; } public @NonNull SurfaceControl getSurfaceControl() { return mSurfaceControl; } } /** @hide */ /** @hide */ public WindowlessViewRoot(@NonNull Context c, @NonNull Display d, public SurfaceControlViewHost(@NonNull Context c, @NonNull Display d, @NonNull WindowlessWindowManager wwm) { @NonNull WindowlessWindowManager wwm) { mWm = wwm; mWm = wwm; mViewRoot = new ViewRootImpl(c, d, mWm); mViewRoot = new ViewRootImpl(c, d, mWm); } } public WindowlessViewRoot(@NonNull Context c, @NonNull Display d, public SurfaceControlViewHost(@NonNull Context c, @NonNull Display d, @NonNull SurfaceControl rootSurface, @Nullable IBinder hostInputToken) { @Nullable IBinder hostInputToken) { mWm = new WindowlessWindowManager(c.getResources().getConfiguration(), rootSurface, mSurfaceControl = new SurfaceControl.Builder() .setContainerLayer() .setName("SurfaceControlViewHost") .build(); mWm = new WindowlessWindowManager(c.getResources().getConfiguration(), mSurfaceControl, hostInputToken); hostInputToken); mViewRoot = new ViewRootImpl(c, d, mWm); mViewRoot = new ViewRootImpl(c, d, mWm); } } public @Nullable SurfacePackage getSurfacePackage() { if (mSurfaceControl != null) { return new SurfacePackage(mSurfaceControl); } else { return null; } } public void addView(View view, WindowManager.LayoutParams attrs) { public void addView(View view, WindowManager.LayoutParams attrs) { mViewRoot.setView(view, attrs, null); mViewRoot.setView(view, attrs, null); } } Loading packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java +5 −5 Original line number Original line Diff line number Diff line Loading @@ -42,7 +42,7 @@ import android.view.SurfaceControl; import android.view.View; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup; import android.view.WindowManager; import android.view.WindowManager; import android.view.WindowlessViewRoot; import android.view.SurfaceControlViewHost; import android.view.WindowlessWindowManager; import android.view.WindowlessWindowManager; import com.android.internal.os.IResultReceiver; import com.android.internal.os.IResultReceiver; Loading @@ -61,7 +61,7 @@ public class SystemWindows { private static final String TAG = "SystemWindows"; private static final String TAG = "SystemWindows"; private final SparseArray<PerDisplay> mPerDisplay = new SparseArray<>(); private final SparseArray<PerDisplay> mPerDisplay = new SparseArray<>(); final HashMap<View, WindowlessViewRoot> mViewRoots = new HashMap<>(); final HashMap<View, SurfaceControlViewHost> mViewRoots = new HashMap<>(); Context mContext; Context mContext; IWindowSession mSession; IWindowSession mSession; DisplayWindowController mDisplayController; DisplayWindowController mDisplayController; Loading Loading @@ -121,7 +121,7 @@ public class SystemWindows { * @param view * @param view */ */ public void removeView(View view) { public void removeView(View view) { WindowlessViewRoot root = mViewRoots.remove(view); SurfaceControlViewHost root = mViewRoots.remove(view); root.die(); root.die(); } } Loading @@ -129,7 +129,7 @@ public class SystemWindows { * Updates the layout params of a view. * Updates the layout params of a view. */ */ public void updateViewLayout(@NonNull View view, ViewGroup.LayoutParams params) { public void updateViewLayout(@NonNull View view, ViewGroup.LayoutParams params) { WindowlessViewRoot root = mViewRoots.get(view); SurfaceControlViewHost root = mViewRoots.get(view); if (root == null || !(params instanceof WindowManager.LayoutParams)) { if (root == null || !(params instanceof WindowManager.LayoutParams)) { return; return; } } Loading Loading @@ -177,7 +177,7 @@ public class SystemWindows { return; return; } } final Display display = mDisplayController.getDisplay(mDisplayId); final Display display = mDisplayController.getDisplay(mDisplayId); WindowlessViewRoot viewRoot = new WindowlessViewRoot(mContext, display, wwm); SurfaceControlViewHost viewRoot = new SurfaceControlViewHost(mContext, display, wwm); attrs.flags |= FLAG_HARDWARE_ACCELERATED; attrs.flags |= FLAG_HARDWARE_ACCELERATED; viewRoot.addView(view, attrs); viewRoot.addView(view, attrs); mViewRoots.put(view, viewRoot); mViewRoots.put(view, viewRoot); Loading services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java +6 −8 Original line number Original line Diff line number Diff line Loading @@ -40,8 +40,8 @@ import android.text.TextUtils; import android.util.Slog; import android.util.Slog; import android.view.KeyEvent; import android.view.KeyEvent; import android.view.SurfaceControl; import android.view.SurfaceControl; import android.view.SurfaceControlViewHost; import android.view.WindowManager; import android.view.WindowManager; import android.view.WindowlessViewRoot; import android.view.autofill.AutofillId; import android.view.autofill.AutofillId; import android.view.autofill.AutofillManager; import android.view.autofill.AutofillManager; import android.view.autofill.AutofillValue; import android.view.autofill.AutofillValue; Loading Loading @@ -217,14 +217,12 @@ public final class AutoFillUI { } } final AutofillValue datasetValue = dataset.getFieldValues().get(index); final AutofillValue datasetValue = dataset.getFieldValues().get(index); final SurfaceControl sc = new SurfaceControl.Builder() // TODO(b/137800469): sanitize name .setName("af suggestion") .build(); //TODO(b/137800469): Pass in inputToken from IME. //TODO(b/137800469): Pass in inputToken from IME. final WindowlessViewRoot wvr = new WindowlessViewRoot(context, context.getDisplay(), sc, final SurfaceControlViewHost wvr = new SurfaceControlViewHost(context, context.getDisplay(), null); (IBinder) null); // TODO(b/134365580): Use the package instead of the SurfaceControl itself // for accessibility support. final SurfaceControl sc = wvr.getSurfacePackage().getSurfaceControl(); TextView textView = new TextView(context); TextView textView = new TextView(context); textView.setText(datasetValue.getTextValue()); textView.setText(datasetValue.getTextValue()); Loading Loading
api/test-current.txt +12 −7 Original line number Original line Diff line number Diff line Loading @@ -4350,6 +4350,18 @@ package android.view { method public abstract String asyncImpl() default ""; method public abstract String asyncImpl() default ""; } } public class SurfaceControlViewHost { ctor public SurfaceControlViewHost(@NonNull android.content.Context, @NonNull android.view.Display, @Nullable android.os.IBinder); method public void addView(android.view.View, android.view.WindowManager.LayoutParams); method public void dispose(); method @Nullable public android.view.SurfaceControlViewHost.SurfacePackage getSurfacePackage(); method public void relayout(android.view.WindowManager.LayoutParams); } public class SurfaceControlViewHost.SurfacePackage { method @NonNull public android.view.SurfaceControl getSurfaceControl(); } public class SurfaceView extends android.view.View { public class SurfaceView extends android.view.View { method @Nullable public android.os.IBinder getInputToken(); method @Nullable public android.os.IBinder getInputToken(); } } Loading Loading @@ -4401,13 +4413,6 @@ package android.view { field @android.view.ViewDebug.ExportedProperty(flagMapping={@android.view.ViewDebug.FlagToString(mask=0x1, equals=0x1, name="FAKE_HARDWARE_ACCELERATED"), @android.view.ViewDebug.FlagToString(mask=0x2, equals=0x2, name="FORCE_HARDWARE_ACCELERATED"), @android.view.ViewDebug.FlagToString(mask=0x4, equals=0x4, name="WANTS_OFFSET_NOTIFICATIONS"), @android.view.ViewDebug.FlagToString(mask=0x10, equals=0x10, name="SHOW_FOR_ALL_USERS"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION, equals=android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION, name="NO_MOVE_ANIMATION"), @android.view.ViewDebug.FlagToString(mask=0x80, equals=0x80, name="COMPATIBLE_WINDOW"), @android.view.ViewDebug.FlagToString(mask=0x100, equals=0x100, name="SYSTEM_ERROR"), @android.view.ViewDebug.FlagToString(mask=0x400, equals=0x400, name="KEYGUARD"), @android.view.ViewDebug.FlagToString(mask=0x800, equals=0x800, name="DISABLE_WALLPAPER_TOUCH_EVENTS"), @android.view.ViewDebug.FlagToString(mask=0x1000, equals=0x1000, name="FORCE_STATUS_BAR_VISIBLE_TRANSPARENT"), @android.view.ViewDebug.FlagToString(mask=0x2000, equals=0x2000, name="PRESERVE_GEOMETRY"), @android.view.ViewDebug.FlagToString(mask=0x4000, equals=0x4000, name="FORCE_DECOR_VIEW_VISIBILITY"), @android.view.ViewDebug.FlagToString(mask=0x8000, equals=0x8000, name="WILL_NOT_REPLACE_ON_RELAUNCH"), @android.view.ViewDebug.FlagToString(mask=0x10000, equals=0x10000, name="LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME"), @android.view.ViewDebug.FlagToString(mask=0x20000, equals=0x20000, name="FORCE_DRAW_STATUS_BAR_BACKGROUND"), @android.view.ViewDebug.FlagToString(mask=0x40000, equals=0x40000, name="SUSTAINED_PERFORMANCE_MODE"), @android.view.ViewDebug.FlagToString(mask=0x80000, equals=0x80000, name="HIDE_NON_SYSTEM_OVERLAY_WINDOWS"), @android.view.ViewDebug.FlagToString(mask=0x100000, equals=0x100000, name="IS_ROUNDED_CORNERS_OVERLAY"), @android.view.ViewDebug.FlagToString(mask=0x400000, equals=0x400000, name="IS_SCREEN_DECOR"), @android.view.ViewDebug.FlagToString(mask=0x800000, equals=0x800000, name="STATUS_FORCE_SHOW_NAVIGATION"), @android.view.ViewDebug.FlagToString(mask=0x1000000, equals=0x1000000, name="COLOR_SPACE_AGNOSTIC"), @android.view.ViewDebug.FlagToString(mask=0x4000000, equals=0x4000000, name="FIT_INSETS_CONTROLLED"), @android.view.ViewDebug.FlagToString(mask=0x8000000, equals=0x8000000, name="ONLY_DRAW_BOTTOM_BAR_BACKGROUND")}) public int privateFlags; field @android.view.ViewDebug.ExportedProperty(flagMapping={@android.view.ViewDebug.FlagToString(mask=0x1, equals=0x1, name="FAKE_HARDWARE_ACCELERATED"), @android.view.ViewDebug.FlagToString(mask=0x2, equals=0x2, name="FORCE_HARDWARE_ACCELERATED"), @android.view.ViewDebug.FlagToString(mask=0x4, equals=0x4, name="WANTS_OFFSET_NOTIFICATIONS"), @android.view.ViewDebug.FlagToString(mask=0x10, equals=0x10, name="SHOW_FOR_ALL_USERS"), @android.view.ViewDebug.FlagToString(mask=android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION, equals=android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION, name="NO_MOVE_ANIMATION"), @android.view.ViewDebug.FlagToString(mask=0x80, equals=0x80, name="COMPATIBLE_WINDOW"), @android.view.ViewDebug.FlagToString(mask=0x100, equals=0x100, name="SYSTEM_ERROR"), @android.view.ViewDebug.FlagToString(mask=0x400, equals=0x400, name="KEYGUARD"), @android.view.ViewDebug.FlagToString(mask=0x800, equals=0x800, name="DISABLE_WALLPAPER_TOUCH_EVENTS"), @android.view.ViewDebug.FlagToString(mask=0x1000, equals=0x1000, name="FORCE_STATUS_BAR_VISIBLE_TRANSPARENT"), @android.view.ViewDebug.FlagToString(mask=0x2000, equals=0x2000, name="PRESERVE_GEOMETRY"), @android.view.ViewDebug.FlagToString(mask=0x4000, equals=0x4000, name="FORCE_DECOR_VIEW_VISIBILITY"), @android.view.ViewDebug.FlagToString(mask=0x8000, equals=0x8000, name="WILL_NOT_REPLACE_ON_RELAUNCH"), @android.view.ViewDebug.FlagToString(mask=0x10000, equals=0x10000, name="LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME"), @android.view.ViewDebug.FlagToString(mask=0x20000, equals=0x20000, name="FORCE_DRAW_STATUS_BAR_BACKGROUND"), @android.view.ViewDebug.FlagToString(mask=0x40000, equals=0x40000, name="SUSTAINED_PERFORMANCE_MODE"), @android.view.ViewDebug.FlagToString(mask=0x80000, equals=0x80000, name="HIDE_NON_SYSTEM_OVERLAY_WINDOWS"), @android.view.ViewDebug.FlagToString(mask=0x100000, equals=0x100000, name="IS_ROUNDED_CORNERS_OVERLAY"), @android.view.ViewDebug.FlagToString(mask=0x400000, equals=0x400000, name="IS_SCREEN_DECOR"), @android.view.ViewDebug.FlagToString(mask=0x800000, equals=0x800000, name="STATUS_FORCE_SHOW_NAVIGATION"), @android.view.ViewDebug.FlagToString(mask=0x1000000, equals=0x1000000, name="COLOR_SPACE_AGNOSTIC"), @android.view.ViewDebug.FlagToString(mask=0x4000000, equals=0x4000000, name="FIT_INSETS_CONTROLLED"), @android.view.ViewDebug.FlagToString(mask=0x8000000, equals=0x8000000, name="ONLY_DRAW_BOTTOM_BAR_BACKGROUND")}) public int privateFlags; } } public class WindowlessViewRoot { ctor public WindowlessViewRoot(@NonNull android.content.Context, @NonNull android.view.Display, @NonNull android.view.SurfaceControl, @Nullable android.os.IBinder); method public void addView(android.view.View, android.view.WindowManager.LayoutParams); method public void dispose(); method public void relayout(android.view.WindowManager.LayoutParams); } } } package android.view.accessibility { package android.view.accessibility { Loading
api/test-lint-baseline.txt +6 −6 Original line number Original line Diff line number Diff line Loading @@ -2079,17 +2079,17 @@ MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android MissingNullability: android.view.WindowManager.LayoutParams#accessibilityTitle: MissingNullability: android.view.WindowManager.LayoutParams#accessibilityTitle: MissingNullability: android.view.WindowlessViewRoot#WindowlessViewRoot(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #0: MissingNullability: android.view.SurfaceControlViewHost#SurfaceControlViewHost(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #0: MissingNullability: android.view.WindowlessViewRoot#WindowlessViewRoot(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #1: MissingNullability: android.view.SurfaceControlViewHost#SurfaceControlViewHost(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #1: MissingNullability: android.view.WindowlessViewRoot#WindowlessViewRoot(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #2: MissingNullability: android.view.SurfaceControlViewHost#SurfaceControlViewHost(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #2: MissingNullability: android.view.WindowlessViewRoot#addView(android.view.View, android.view.WindowManager.LayoutParams) parameter #0: MissingNullability: android.view.SurfaceControlViewHost#addView(android.view.View, android.view.WindowManager.LayoutParams) parameter #0: MissingNullability: android.view.WindowlessViewRoot#addView(android.view.View, android.view.WindowManager.LayoutParams) parameter #1: MissingNullability: android.view.SurfaceControlViewHost#addView(android.view.View, android.view.WindowManager.LayoutParams) parameter #1: MissingNullability: android.view.WindowlessViewRoot#relayout(android.view.WindowManager.LayoutParams) parameter #0: MissingNullability: android.view.SurfaceControlViewHost#relayout(android.view.WindowManager.LayoutParams) parameter #0: MissingNullability: android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener#onAccessibilityServicesStateChanged(android.view.accessibility.AccessibilityManager) parameter #0: MissingNullability: android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener#onAccessibilityServicesStateChanged(android.view.accessibility.AccessibilityManager) parameter #0: Loading
core/java/android/view/WindowlessViewRoot.java→core/java/android/view/SurfaceControlViewHost.java +35 −5 Original line number Original line Diff line number Diff line Loading @@ -29,25 +29,55 @@ import android.os.IBinder; * @hide * @hide */ */ @TestApi @TestApi public class WindowlessViewRoot { public class SurfaceControlViewHost { private ViewRootImpl mViewRoot; private ViewRootImpl mViewRoot; private WindowlessWindowManager mWm; private WindowlessWindowManager mWm; private SurfaceControl mSurfaceControl; /** * @hide */ @TestApi public class SurfacePackage { final SurfaceControl mSurfaceControl; // TODO: Accessibility ID goes here SurfacePackage(SurfaceControl sc) { mSurfaceControl = sc; } public @NonNull SurfaceControl getSurfaceControl() { return mSurfaceControl; } } /** @hide */ /** @hide */ public WindowlessViewRoot(@NonNull Context c, @NonNull Display d, public SurfaceControlViewHost(@NonNull Context c, @NonNull Display d, @NonNull WindowlessWindowManager wwm) { @NonNull WindowlessWindowManager wwm) { mWm = wwm; mWm = wwm; mViewRoot = new ViewRootImpl(c, d, mWm); mViewRoot = new ViewRootImpl(c, d, mWm); } } public WindowlessViewRoot(@NonNull Context c, @NonNull Display d, public SurfaceControlViewHost(@NonNull Context c, @NonNull Display d, @NonNull SurfaceControl rootSurface, @Nullable IBinder hostInputToken) { @Nullable IBinder hostInputToken) { mWm = new WindowlessWindowManager(c.getResources().getConfiguration(), rootSurface, mSurfaceControl = new SurfaceControl.Builder() .setContainerLayer() .setName("SurfaceControlViewHost") .build(); mWm = new WindowlessWindowManager(c.getResources().getConfiguration(), mSurfaceControl, hostInputToken); hostInputToken); mViewRoot = new ViewRootImpl(c, d, mWm); mViewRoot = new ViewRootImpl(c, d, mWm); } } public @Nullable SurfacePackage getSurfacePackage() { if (mSurfaceControl != null) { return new SurfacePackage(mSurfaceControl); } else { return null; } } public void addView(View view, WindowManager.LayoutParams attrs) { public void addView(View view, WindowManager.LayoutParams attrs) { mViewRoot.setView(view, attrs, null); mViewRoot.setView(view, attrs, null); } } Loading
packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java +5 −5 Original line number Original line Diff line number Diff line Loading @@ -42,7 +42,7 @@ import android.view.SurfaceControl; import android.view.View; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup; import android.view.WindowManager; import android.view.WindowManager; import android.view.WindowlessViewRoot; import android.view.SurfaceControlViewHost; import android.view.WindowlessWindowManager; import android.view.WindowlessWindowManager; import com.android.internal.os.IResultReceiver; import com.android.internal.os.IResultReceiver; Loading @@ -61,7 +61,7 @@ public class SystemWindows { private static final String TAG = "SystemWindows"; private static final String TAG = "SystemWindows"; private final SparseArray<PerDisplay> mPerDisplay = new SparseArray<>(); private final SparseArray<PerDisplay> mPerDisplay = new SparseArray<>(); final HashMap<View, WindowlessViewRoot> mViewRoots = new HashMap<>(); final HashMap<View, SurfaceControlViewHost> mViewRoots = new HashMap<>(); Context mContext; Context mContext; IWindowSession mSession; IWindowSession mSession; DisplayWindowController mDisplayController; DisplayWindowController mDisplayController; Loading Loading @@ -121,7 +121,7 @@ public class SystemWindows { * @param view * @param view */ */ public void removeView(View view) { public void removeView(View view) { WindowlessViewRoot root = mViewRoots.remove(view); SurfaceControlViewHost root = mViewRoots.remove(view); root.die(); root.die(); } } Loading @@ -129,7 +129,7 @@ public class SystemWindows { * Updates the layout params of a view. * Updates the layout params of a view. */ */ public void updateViewLayout(@NonNull View view, ViewGroup.LayoutParams params) { public void updateViewLayout(@NonNull View view, ViewGroup.LayoutParams params) { WindowlessViewRoot root = mViewRoots.get(view); SurfaceControlViewHost root = mViewRoots.get(view); if (root == null || !(params instanceof WindowManager.LayoutParams)) { if (root == null || !(params instanceof WindowManager.LayoutParams)) { return; return; } } Loading Loading @@ -177,7 +177,7 @@ public class SystemWindows { return; return; } } final Display display = mDisplayController.getDisplay(mDisplayId); final Display display = mDisplayController.getDisplay(mDisplayId); WindowlessViewRoot viewRoot = new WindowlessViewRoot(mContext, display, wwm); SurfaceControlViewHost viewRoot = new SurfaceControlViewHost(mContext, display, wwm); attrs.flags |= FLAG_HARDWARE_ACCELERATED; attrs.flags |= FLAG_HARDWARE_ACCELERATED; viewRoot.addView(view, attrs); viewRoot.addView(view, attrs); mViewRoots.put(view, viewRoot); mViewRoots.put(view, viewRoot); Loading
services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java +6 −8 Original line number Original line Diff line number Diff line Loading @@ -40,8 +40,8 @@ import android.text.TextUtils; import android.util.Slog; import android.util.Slog; import android.view.KeyEvent; import android.view.KeyEvent; import android.view.SurfaceControl; import android.view.SurfaceControl; import android.view.SurfaceControlViewHost; import android.view.WindowManager; import android.view.WindowManager; import android.view.WindowlessViewRoot; import android.view.autofill.AutofillId; import android.view.autofill.AutofillId; import android.view.autofill.AutofillManager; import android.view.autofill.AutofillManager; import android.view.autofill.AutofillValue; import android.view.autofill.AutofillValue; Loading Loading @@ -217,14 +217,12 @@ public final class AutoFillUI { } } final AutofillValue datasetValue = dataset.getFieldValues().get(index); final AutofillValue datasetValue = dataset.getFieldValues().get(index); final SurfaceControl sc = new SurfaceControl.Builder() // TODO(b/137800469): sanitize name .setName("af suggestion") .build(); //TODO(b/137800469): Pass in inputToken from IME. //TODO(b/137800469): Pass in inputToken from IME. final WindowlessViewRoot wvr = new WindowlessViewRoot(context, context.getDisplay(), sc, final SurfaceControlViewHost wvr = new SurfaceControlViewHost(context, context.getDisplay(), null); (IBinder) null); // TODO(b/134365580): Use the package instead of the SurfaceControl itself // for accessibility support. final SurfaceControl sc = wvr.getSurfacePackage().getSurfaceControl(); TextView textView = new TextView(context); TextView textView = new TextView(context); textView.setText(datasetValue.getTextValue()); textView.setText(datasetValue.getTextValue()); Loading