Restrict the overridden min size for PiP
Per go/cdd-proposal-pip-size, the absolute minimum size when overridden
should be 48dp.
Bug: 174302616
Test: atest PinnedStackTests#testEnterPipWithTinyMinimalSize \
WMShellUnitTests:com.android.wm.shell.pip
Merged-In: I2f0dfd9a79049aaf696fde8703994deaecce63f5
Change-Id: I2f0dfd9a79049aaf696fde8703994deaecce63f5
This commit is contained in:
@@ -690,6 +690,13 @@
|
|||||||
<!-- The default minimal size of a PiP task, in both dimensions. -->
|
<!-- The default minimal size of a PiP task, in both dimensions. -->
|
||||||
<dimen name="default_minimal_size_pip_resizable_task">108dp</dimen>
|
<dimen name="default_minimal_size_pip_resizable_task">108dp</dimen>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The overridable minimal size of a PiP task, in both dimensions.
|
||||||
|
Different from default_minimal_size_pip_resizable_task, this is to limit the dimension
|
||||||
|
when the pinned stack size is overridden by app via minWidth/minHeight.
|
||||||
|
-->
|
||||||
|
<dimen name="overridable_minimal_size_pip_resizable_task">48dp</dimen>
|
||||||
|
|
||||||
<!-- Height of a task when in minimized mode from the top when launcher is resizable. -->
|
<!-- Height of a task when in minimized mode from the top when launcher is resizable. -->
|
||||||
<dimen name="task_height_of_minimized_mode">80dp</dimen>
|
<dimen name="task_height_of_minimized_mode">80dp</dimen>
|
||||||
|
|
||||||
|
|||||||
@@ -1948,6 +1948,7 @@
|
|||||||
<java-symbol type="fraction" name="config_dimBehindFadeDuration" />
|
<java-symbol type="fraction" name="config_dimBehindFadeDuration" />
|
||||||
<java-symbol type="dimen" name="default_minimal_size_resizable_task" />
|
<java-symbol type="dimen" name="default_minimal_size_resizable_task" />
|
||||||
<java-symbol type="dimen" name="default_minimal_size_pip_resizable_task" />
|
<java-symbol type="dimen" name="default_minimal_size_pip_resizable_task" />
|
||||||
|
<java-symbol type="dimen" name="overridable_minimal_size_pip_resizable_task" />
|
||||||
<java-symbol type="dimen" name="task_height_of_minimized_mode" />
|
<java-symbol type="dimen" name="task_height_of_minimized_mode" />
|
||||||
<java-symbol type="fraction" name="config_screenAutoBrightnessDozeScaleFactor" />
|
<java-symbol type="fraction" name="config_screenAutoBrightnessDozeScaleFactor" />
|
||||||
<java-symbol type="bool" name="config_allowPriorityVibrationsInLowPowerMode" />
|
<java-symbol type="bool" name="config_allowPriorityVibrationsInLowPowerMode" />
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ public class PipBoundsAlgorithm {
|
|||||||
private float mMaxAspectRatio;
|
private float mMaxAspectRatio;
|
||||||
private int mDefaultStackGravity;
|
private int mDefaultStackGravity;
|
||||||
private int mDefaultMinSize;
|
private int mDefaultMinSize;
|
||||||
|
private int mOverridableMinSize;
|
||||||
private Point mScreenEdgeInsets;
|
private Point mScreenEdgeInsets;
|
||||||
|
|
||||||
public PipBoundsAlgorithm(Context context, @NonNull PipBoundsState pipBoundsState) {
|
public PipBoundsAlgorithm(Context context, @NonNull PipBoundsState pipBoundsState) {
|
||||||
@@ -78,6 +79,8 @@ public class PipBoundsAlgorithm {
|
|||||||
com.android.internal.R.integer.config_defaultPictureInPictureGravity);
|
com.android.internal.R.integer.config_defaultPictureInPictureGravity);
|
||||||
mDefaultMinSize = res.getDimensionPixelSize(
|
mDefaultMinSize = res.getDimensionPixelSize(
|
||||||
com.android.internal.R.dimen.default_minimal_size_pip_resizable_task);
|
com.android.internal.R.dimen.default_minimal_size_pip_resizable_task);
|
||||||
|
mOverridableMinSize = res.getDimensionPixelSize(
|
||||||
|
com.android.internal.R.dimen.overridable_minimal_size_pip_resizable_task);
|
||||||
final String screenEdgeInsetsDpString = res.getString(
|
final String screenEdgeInsetsDpString = res.getString(
|
||||||
com.android.internal.R.string.config_defaultPictureInPictureScreenEdgeInsets);
|
com.android.internal.R.string.config_defaultPictureInPictureScreenEdgeInsets);
|
||||||
final Size screenEdgeInsetsDp = !screenEdgeInsetsDpString.isEmpty()
|
final Size screenEdgeInsetsDp = !screenEdgeInsetsDpString.isEmpty()
|
||||||
@@ -155,7 +158,10 @@ public class PipBoundsAlgorithm {
|
|||||||
// -1 will be populated if an activity specifies defaultWidth/defaultHeight in <layout>
|
// -1 will be populated if an activity specifies defaultWidth/defaultHeight in <layout>
|
||||||
// without minWidth/minHeight
|
// without minWidth/minHeight
|
||||||
if (windowLayout.minWidth > 0 && windowLayout.minHeight > 0) {
|
if (windowLayout.minWidth > 0 && windowLayout.minHeight > 0) {
|
||||||
return new Size(windowLayout.minWidth, windowLayout.minHeight);
|
// If either dimension is smaller than the allowed minimum, adjust them
|
||||||
|
// according to mOverridableMinSize
|
||||||
|
return new Size(Math.max(windowLayout.minWidth, mOverridableMinSize),
|
||||||
|
Math.max(windowLayout.minHeight, mOverridableMinSize));
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ import com.android.wm.shell.ShellTestCase;
|
|||||||
import com.android.wm.shell.TestShellExecutor;
|
import com.android.wm.shell.TestShellExecutor;
|
||||||
import com.android.wm.shell.common.DisplayController;
|
import com.android.wm.shell.common.DisplayController;
|
||||||
import com.android.wm.shell.common.DisplayLayout;
|
import com.android.wm.shell.common.DisplayLayout;
|
||||||
import com.android.wm.shell.legacysplitscreen.LegacySplitScreen;
|
|
||||||
import com.android.wm.shell.legacysplitscreen.LegacySplitScreenController;
|
import com.android.wm.shell.legacysplitscreen.LegacySplitScreenController;
|
||||||
import com.android.wm.shell.pip.phone.PhonePipMenuController;
|
import com.android.wm.shell.pip.phone.PhonePipMenuController;
|
||||||
|
|
||||||
@@ -125,7 +124,7 @@ public class PipTaskOrganizerTest extends ShellTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void startSwipePipToHome_updatesOverrideMinSize() {
|
public void startSwipePipToHome_updatesOverrideMinSize() {
|
||||||
final Size minSize = new Size(100, 80);
|
final Size minSize = new Size(400, 320);
|
||||||
|
|
||||||
mSpiedPipTaskOrganizer.startSwipePipToHome(mComponent1, createActivityInfo(minSize),
|
mSpiedPipTaskOrganizer.startSwipePipToHome(mComponent1, createActivityInfo(minSize),
|
||||||
createPipParams(null));
|
createPipParams(null));
|
||||||
@@ -153,7 +152,7 @@ public class PipTaskOrganizerTest extends ShellTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onTaskAppeared_updatesOverrideMinSize() {
|
public void onTaskAppeared_updatesOverrideMinSize() {
|
||||||
final Size minSize = new Size(100, 80);
|
final Size minSize = new Size(400, 320);
|
||||||
|
|
||||||
mSpiedPipTaskOrganizer.onTaskAppeared(
|
mSpiedPipTaskOrganizer.onTaskAppeared(
|
||||||
createTaskInfo(mComponent1, createPipParams(null), minSize),
|
createTaskInfo(mComponent1, createPipParams(null), minSize),
|
||||||
@@ -191,7 +190,7 @@ public class PipTaskOrganizerTest extends ShellTestCase {
|
|||||||
mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1,
|
mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1,
|
||||||
createPipParams(null)), null /* leash */);
|
createPipParams(null)), null /* leash */);
|
||||||
|
|
||||||
final Size minSize = new Size(100, 80);
|
final Size minSize = new Size(400, 320);
|
||||||
mSpiedPipTaskOrganizer.onTaskInfoChanged(createTaskInfo(mComponent2,
|
mSpiedPipTaskOrganizer.onTaskInfoChanged(createTaskInfo(mComponent2,
|
||||||
createPipParams(null), minSize));
|
createPipParams(null), minSize));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user