summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/test-current.txt19
-rw-r--r--api/test-lint-baseline.txt12
-rw-r--r--core/java/android/view/SurfaceControlViewHost.java (renamed from core/java/android/view/WindowlessViewRoot.java)40
-rw-r--r--packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java10
-rw-r--r--services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java14
-rw-r--r--tests/SurfaceControlViewHostTest/Android.bp (renamed from tests/WindowlessWmTest/Android.bp)2
-rw-r--r--tests/SurfaceControlViewHostTest/AndroidManifest.xml (renamed from tests/WindowlessWmTest/AndroidManifest.xml)2
-rw-r--r--tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceControlViewHostTest.java (renamed from tests/WindowlessWmTest/src/com/android/test/viewembed/WindowlessWmTest.java)13
8 files changed, 75 insertions, 37 deletions
diff --git a/api/test-current.txt b/api/test-current.txt
index 219258ef50b0..4b17eb8c03b4 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -4424,6 +4424,18 @@ package android.view {
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 {
method @Nullable public android.os.IBinder getInputToken();
}
@@ -4474,13 +4486,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;
}
- 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 {
diff --git a/api/test-lint-baseline.txt b/api/test-lint-baseline.txt
index ef8165fc6edb..6d1f29122b71 100644
--- a/api/test-lint-baseline.txt
+++ b/api/test-lint-baseline.txt
@@ -2079,17 +2079,17 @@ MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android
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:
diff --git a/core/java/android/view/WindowlessViewRoot.java b/core/java/android/view/SurfaceControlViewHost.java
index 68f2bde9c265..4f8aecd08f6d 100644
--- a/core/java/android/view/WindowlessViewRoot.java
+++ b/core/java/android/view/SurfaceControlViewHost.java
@@ -29,25 +29,55 @@ import android.os.IBinder;
* @hide
*/
@TestApi
-public class WindowlessViewRoot {
+public class SurfaceControlViewHost {
private ViewRootImpl mViewRoot;
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 */
- public WindowlessViewRoot(@NonNull Context c, @NonNull Display d,
+ public SurfaceControlViewHost(@NonNull Context c, @NonNull Display d,
@NonNull WindowlessWindowManager wwm) {
mWm = wwm;
mViewRoot = new ViewRootImpl(c, d, mWm);
}
- public WindowlessViewRoot(@NonNull Context c, @NonNull Display d,
- @NonNull SurfaceControl rootSurface,
+ public SurfaceControlViewHost(@NonNull Context c, @NonNull Display d,
@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);
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) {
mViewRoot.setView(view, attrs, null);
}
diff --git a/packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java b/packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java
index 5ec61c3313f0..02c7857f0cfd 100644
--- a/packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java
+++ b/packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java
@@ -42,7 +42,7 @@ import android.view.SurfaceControl;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
-import android.view.WindowlessViewRoot;
+import android.view.SurfaceControlViewHost;
import android.view.WindowlessWindowManager;
import com.android.internal.os.IResultReceiver;
@@ -61,7 +61,7 @@ public class SystemWindows {
private static final String TAG = "SystemWindows";
private final SparseArray<PerDisplay> mPerDisplay = new SparseArray<>();
- final HashMap<View, WindowlessViewRoot> mViewRoots = new HashMap<>();
+ final HashMap<View, SurfaceControlViewHost> mViewRoots = new HashMap<>();
Context mContext;
IWindowSession mSession;
DisplayWindowController mDisplayController;
@@ -121,7 +121,7 @@ public class SystemWindows {
* @param view
*/
public void removeView(View view) {
- WindowlessViewRoot root = mViewRoots.remove(view);
+ SurfaceControlViewHost root = mViewRoots.remove(view);
root.die();
}
@@ -129,7 +129,7 @@ public class SystemWindows {
* Updates the layout params of a view.
*/
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)) {
return;
}
@@ -177,7 +177,7 @@ public class SystemWindows {
return;
}
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;
viewRoot.addView(view, attrs);
mViewRoots.put(view, viewRoot);
diff --git a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java
index eadfd31c27bf..e57b7b3d6d32 100644
--- a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java
+++ b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java
@@ -40,8 +40,8 @@ import android.text.TextUtils;
import android.util.Slog;
import android.view.KeyEvent;
import android.view.SurfaceControl;
+import android.view.SurfaceControlViewHost;
import android.view.WindowManager;
-import android.view.WindowlessViewRoot;
import android.view.autofill.AutofillId;
import android.view.autofill.AutofillManager;
import android.view.autofill.AutofillValue;
@@ -217,14 +217,12 @@ public final class AutoFillUI {
}
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.
- final WindowlessViewRoot wvr = new WindowlessViewRoot(context, context.getDisplay(), sc,
- null);
+ final SurfaceControlViewHost wvr = new SurfaceControlViewHost(context, context.getDisplay(),
+ (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.setText(datasetValue.getTextValue());
diff --git a/tests/WindowlessWmTest/Android.bp b/tests/SurfaceControlViewHostTest/Android.bp
index 2ace3f363ef9..e4e060010eea 100644
--- a/tests/WindowlessWmTest/Android.bp
+++ b/tests/SurfaceControlViewHostTest/Android.bp
@@ -15,7 +15,7 @@
//
android_test {
- name: "WindowlessWmTest",
+ name: "SurfaceControlViewHostTest",
srcs: ["**/*.java"],
platform_apis: true,
certificate: "platform",
diff --git a/tests/WindowlessWmTest/AndroidManifest.xml b/tests/SurfaceControlViewHostTest/AndroidManifest.xml
index babfd76d91e8..ee95763453f7 100644
--- a/tests/WindowlessWmTest/AndroidManifest.xml
+++ b/tests/SurfaceControlViewHostTest/AndroidManifest.xml
@@ -16,7 +16,7 @@
package="com.android.test.viewembed">
<application>
- <activity android:name="WindowlessWmTest" android:label="View Embedding Test">
+ <activity android:name="SurfaceControlViewHostTest" android:label="View Embedding Test">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
diff --git a/tests/WindowlessWmTest/src/com/android/test/viewembed/WindowlessWmTest.java b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceControlViewHostTest.java
index 5c1e830e1382..6687f83ad0db 100644
--- a/tests/WindowlessWmTest/src/com/android/test/viewembed/WindowlessWmTest.java
+++ b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceControlViewHostTest.java
@@ -22,18 +22,19 @@ import android.graphics.Color;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.Gravity;
+import android.view.SurfaceControl;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;
-import android.view.WindowlessViewRoot;
+import android.view.SurfaceControlViewHost;
import android.widget.Button;
import android.widget.FrameLayout;
-public class WindowlessWmTest extends Activity implements SurfaceHolder.Callback{
+public class SurfaceControlViewHostTest extends Activity implements SurfaceHolder.Callback{
SurfaceView mView;
- WindowlessViewRoot mVr;
+ SurfaceControlViewHost mVr;
protected void onCreate(Bundle savedInstanceState) {
FrameLayout content = new FrameLayout(this);
@@ -49,8 +50,12 @@ public class WindowlessWmTest extends Activity implements SurfaceHolder.Callback
@Override
public void surfaceCreated(SurfaceHolder holder) {
- mVr = new WindowlessViewRoot(this, this.getDisplay(), mView.getSurfaceControl(),
+ mVr = new SurfaceControlViewHost(this, this.getDisplay(),
mView.getInputToken());
+
+ final SurfaceControl.Transaction t = new SurfaceControl.Transaction();
+ t.reparent(mVr.getSurfacePackage().getSurfaceControl(), mView.getSurfaceControl()).apply();
+
Button v = new Button(this);
v.setBackgroundColor(Color.BLUE);
v.setOnClickListener(new View.OnClickListener() {