From 2a18b15dfbb8c494ab58679c4aceb83da9683441 Mon Sep 17 00:00:00 2001 From: Hongwei Wang Date: Tue, 2 Mar 2021 09:21:22 -0800 Subject: [PATCH] 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 Merged-In: I2f0dfd9a79049aaf696fde8703994deaecce63f5 Change-Id: I2f0dfd9a79049aaf696fde8703994deaecce63f5 --- core/res/res/values/dimens.xml | 7 +++++++ core/res/res/values/symbols.xml | 1 + .../com/android/systemui/pip/PipTaskOrganizer.java | 13 ++++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index ebaf85c64a142..d165930d3c942 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -632,6 +632,13 @@ 108dp + + 48dp + 80dp diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 871924255e663..45a4cee8c5ef2 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1927,6 +1927,7 @@ + diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java index 0141dee040860..ae3269fbc19b5 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java +++ b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java @@ -45,6 +45,7 @@ import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.RemoteException; +import android.util.EventLog; import android.util.Log; import android.util.Size; import android.view.SurfaceControl; @@ -193,6 +194,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory mSurfaceControlTransactionFactory; private PictureInPictureParams mPictureInPictureParams; + private int mOverridableMinSize; /** * If set to {@code true}, the entering animation will be skipped and we will wait for @@ -211,6 +213,8 @@ public class PipTaskOrganizer extends TaskOrganizer implements mPipBoundsHandler = boundsHandler; mEnterExitAnimationDuration = context.getResources() .getInteger(R.integer.config_pipResizeAnimationDuration); + mOverridableMinSize = context.getResources().getDimensionPixelSize( + com.android.internal.R.dimen.overridable_minimal_size_pip_resizable_task); mSurfaceTransactionHelper = surfaceTransactionHelper; mPipAnimationController = pipAnimationController; mSurfaceControlTransactionFactory = SurfaceControl.Transaction::new; @@ -887,7 +891,14 @@ public class PipTaskOrganizer extends TaskOrganizer implements // -1 will be populated if an activity specifies defaultWidth/defaultHeight in // without minWidth/minHeight 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 and log to SafeNet + if (windowLayout.minWidth < mOverridableMinSize + || windowLayout.minHeight < mOverridableMinSize) { + EventLog.writeEvent(0x534e4554, "174302616", -1, ""); + } + return new Size(Math.max(windowLayout.minWidth, mOverridableMinSize), + Math.max(windowLayout.minHeight, mOverridableMinSize)); } return null; }