diff options
| author | 2024-03-01 00:47:52 +0000 | |
|---|---|---|
| committer | 2024-03-01 00:47:52 +0000 | |
| commit | 675c606ac7ba64530258f6a2e8d88abd8016c20f (patch) | |
| tree | cbac49a23b39073f7adef13cc32d2595cd00aa44 | |
| parent | c6e5b9ea557abfb882480dbcfa56bbbdf03b96f4 (diff) | |
| parent | aebde404bb9c5a68e34a99aae45c307e9b99f569 (diff) | |
Merge "Validate aspect ratio if source rect hint is provided" into main
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java index c7daf561f682..87e372cc304c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java @@ -63,6 +63,7 @@ import android.content.res.Configuration; import android.graphics.Rect; import android.os.RemoteException; import android.os.SystemProperties; +import android.util.Rational; import android.view.Choreographer; import android.view.Display; import android.view.Surface; @@ -126,6 +127,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, SystemProperties.getInt( "persist.wm.debug.extra_content_overlay_fade_out_delay_ms", 400); + private static final float PIP_ASPECT_RATIO_MISMATCH_THRESHOLD = 0.005f; + private final Context mContext; private final SyncTransactionQueue mSyncTransactionQueue; private final PipBoundsState mPipBoundsState; @@ -767,6 +770,37 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, mPictureInPictureParams.getTitle()); mPipParamsChangedForwarder.notifySubtitleChanged( mPictureInPictureParams.getSubtitle()); + + if (mPictureInPictureParams.hasSourceBoundsHint() + && mPictureInPictureParams.hasSetAspectRatio()) { + Rational sourceRectHintAspectRatio = new Rational( + mPictureInPictureParams.getSourceRectHint().width(), + mPictureInPictureParams.getSourceRectHint().height()); + if (sourceRectHintAspectRatio.compareTo( + mPictureInPictureParams.getAspectRatio()) != 0) { + ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, + "Aspect ratio of source rect hint (%d/%d) does not match the provided " + + "aspect ratio value (%d/%d). Consider matching them for " + + "improved animation. Future releases might override the " + + "value to match.", + mPictureInPictureParams.getSourceRectHint().width(), + mPictureInPictureParams.getSourceRectHint().height(), + mPictureInPictureParams.getAspectRatio().getNumerator(), + mPictureInPictureParams.getAspectRatio().getDenominator()); + } + if (Math.abs(sourceRectHintAspectRatio.floatValue() + - mPictureInPictureParams.getAspectRatioFloat()) + > PIP_ASPECT_RATIO_MISMATCH_THRESHOLD) { + ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, + "Aspect ratio of source rect hint (%f) does not match the provided " + + "aspect ratio value (%f) and is above threshold of %f. " + + "Consider matching them for improved animation. Future " + + "releases might override the value to match.", + sourceRectHintAspectRatio.floatValue(), + mPictureInPictureParams.getAspectRatioFloat(), + PIP_ASPECT_RATIO_MISMATCH_THRESHOLD); + } + } } mPipUiEventLoggerLogger.setTaskInfo(mTaskInfo); |