diff --git a/libs/WindowManager/Shell/res/drawable/desktop_mode_decor_menu_background.xml b/libs/WindowManager/Shell/res/drawable/desktop_mode_decor_menu_background.xml index 9167382d08982..c6e634c6622c3 100644 --- a/libs/WindowManager/Shell/res/drawable/desktop_mode_decor_menu_background.xml +++ b/libs/WindowManager/Shell/res/drawable/desktop_mode_decor_menu_background.xml @@ -17,6 +17,6 @@ - + diff --git a/libs/WindowManager/Shell/res/layout/desktop_mode_decor_handle_menu.xml b/libs/WindowManager/Shell/res/layout/desktop_mode_decor_handle_menu.xml index c53ddd78cea66..f9aeb6a8448aa 100644 --- a/libs/WindowManager/Shell/res/layout/desktop_mode_decor_handle_menu.xml +++ b/libs/WindowManager/Shell/res/layout/desktop_mode_decor_handle_menu.xml @@ -21,7 +21,6 @@ android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/desktop_mode_decor_menu_background" - android:elevation="@dimen/caption_menu_elevation" android:divider="?android:attr/dividerHorizontal" android:showDividers="middle" android:dividerPadding="18dip"> diff --git a/libs/WindowManager/Shell/res/values/dimen.xml b/libs/WindowManager/Shell/res/values/dimen.xml index 336c156e831a8..680ad5101366b 100644 --- a/libs/WindowManager/Shell/res/values/dimen.xml +++ b/libs/WindowManager/Shell/res/values/dimen.xml @@ -370,6 +370,10 @@ 44dp - 4dp + + 4dp + + + 20dp diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java index 0779f1d725510..72da1089c91cf 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java @@ -74,6 +74,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration { transaction.merge(t); t.close(); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java index ae685ad4b8d9a..133826f3e69b7 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java @@ -391,11 +391,12 @@ public abstract class WindowDecoration * @param yPos y position of new window * @param width width of new window * @param height height of new window - * @param cropPadding padding to add to window crop to ensure shadows display properly - * @return + * @param shadowRadius radius of the shadow of the new window + * @param cornerRadius radius of the corners of the new window + * @return the {@link AdditionalWindow} that was added. */ AdditionalWindow addWindow(int layoutId, String namePrefix, SurfaceControl.Transaction t, - int xPos, int yPos, int width, int height, int cropPadding) { + int xPos, int yPos, int width, int height, int shadowRadius, int cornerRadius) { final SurfaceControl.Builder builder = mSurfaceControlBuilderSupplier.get(); SurfaceControl windowSurfaceControl = builder .setName(namePrefix + " of Task=" + mTaskInfo.taskId) @@ -404,9 +405,10 @@ public abstract class WindowDecoration .build(); View v = LayoutInflater.from(mDecorWindowContext).inflate(layoutId, null); - t.setPosition( - windowSurfaceControl, xPos, yPos) - .setWindowCrop(windowSurfaceControl, width + cropPadding, height + cropPadding) + t.setPosition(windowSurfaceControl, xPos, yPos) + .setWindowCrop(windowSurfaceControl, width, height) + .setShadowRadius(windowSurfaceControl, shadowRadius) + .setCornerRadius(windowSurfaceControl, cornerRadius) .show(windowSurfaceControl); final WindowManager.LayoutParams lp = new WindowManager.LayoutParams(width, height, diff --git a/libs/WindowManager/Shell/tests/unittest/res/values/dimen.xml b/libs/WindowManager/Shell/tests/unittest/res/values/dimen.xml index 27d40b2b25b27..aa1b24189274d 100644 --- a/libs/WindowManager/Shell/tests/unittest/res/values/dimen.xml +++ b/libs/WindowManager/Shell/tests/unittest/res/values/dimen.xml @@ -24,4 +24,6 @@ 40dp 5dp 10dp + 4dp + 20dp \ No newline at end of file diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java index b80edcece512e..7e39b5b8f2ce8 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java @@ -108,6 +108,8 @@ public class WindowDecorationTests extends ShellTestCase { private SurfaceControl.Transaction mMockSurfaceControlAddWindowT; private WindowDecoration.RelayoutParams mRelayoutParams = new WindowDecoration.RelayoutParams(); private int mCaptionMenuWidthId; + private int mCaptionMenuShadowRadiusId; + private int mCaptionMenuCornerRadiusId; @Before public void setUp() { @@ -118,6 +120,8 @@ public class WindowDecorationTests extends ShellTestCase { mRelayoutParams.mLayoutResId = 0; mRelayoutParams.mCaptionHeightId = R.dimen.test_freeform_decor_caption_height; mCaptionMenuWidthId = R.dimen.test_freeform_decor_caption_menu_width; + mCaptionMenuShadowRadiusId = R.dimen.test_caption_menu_shadow_radius; + mCaptionMenuCornerRadiusId = R.dimen.test_caption_menu_corner_radius; mRelayoutParams.mShadowRadiusId = R.dimen.test_window_decor_shadow_radius; doReturn(mMockSurfaceControlViewHost).when(mMockSurfaceControlViewHostFactory) @@ -431,7 +435,19 @@ public class WindowDecorationTests extends ShellTestCase { verify(additionalWindowSurfaceBuilder).setParent(decorContainerSurface); verify(additionalWindowSurfaceBuilder).build(); verify(mMockSurfaceControlAddWindowT).setPosition(additionalWindowSurface, 20, 40); - verify(mMockSurfaceControlAddWindowT).setWindowCrop(additionalWindowSurface, 442, 74); + final int width = WindowDecoration.loadDimensionPixelSize( + mContext.getResources(), mCaptionMenuWidthId); + final int height = WindowDecoration.loadDimensionPixelSize( + mContext.getResources(), mRelayoutParams.mCaptionHeightId); + verify(mMockSurfaceControlAddWindowT).setWindowCrop(additionalWindowSurface, width, height); + final int shadowRadius = WindowDecoration.loadDimensionPixelSize(mContext.getResources(), + mCaptionMenuShadowRadiusId); + verify(mMockSurfaceControlAddWindowT) + .setShadowRadius(additionalWindowSurface, shadowRadius); + final int cornerRadius = WindowDecoration.loadDimensionPixelSize(mContext.getResources(), + mCaptionMenuCornerRadiusId); + verify(mMockSurfaceControlAddWindowT) + .setCornerRadius(additionalWindowSurface, cornerRadius); verify(mMockSurfaceControlAddWindowT).show(additionalWindowSurface); verify(mMockSurfaceControlViewHostFactory, Mockito.times(2)) .create(any(), eq(defaultDisplay), any()); @@ -559,13 +575,15 @@ public class WindowDecorationTests extends ShellTestCase { int y = mRelayoutParams.mCaptionY; int width = loadDimensionPixelSize(resources, mCaptionMenuWidthId); int height = loadDimensionPixelSize(resources, mRelayoutParams.mCaptionHeightId); + int shadowRadius = loadDimensionPixelSize(resources, mCaptionMenuShadowRadiusId); + int cornerRadius = loadDimensionPixelSize(resources, mCaptionMenuCornerRadiusId); String name = "Test Window"; WindowDecoration.AdditionalWindow additionalWindow = addWindow(R.layout.desktop_mode_decor_handle_menu, name, mMockSurfaceControlAddWindowT, x - mRelayoutResult.mDecorContainerOffsetX, y - mRelayoutResult.mDecorContainerOffsetY, - width, height, 10); + width, height, shadowRadius, cornerRadius); return additionalWindow; } }