Merge "Schedule new transition on aspect ratio change only" into rvc-dev
diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
index 1566877..836485a 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
@@ -219,12 +219,28 @@
 
     @Override
     public void onTaskInfoChanged(ActivityManager.RunningTaskInfo info) {
+        final PictureInPictureParams newParams = info.pictureInPictureParams;
+        if (!shouldUpdateDestinationBounds(newParams)) {
+            Log.d(TAG, "Ignored onTaskInfoChanged with PiP param: " + newParams);
+            return;
+        }
         final Rect destinationBounds = mPipBoundsHandler.getDestinationBounds(
-                getAspectRatioOrDefault(info.pictureInPictureParams), null /* bounds */);
+                getAspectRatioOrDefault(newParams), null /* bounds */);
         Objects.requireNonNull(destinationBounds, "Missing destination bounds");
         animateResizePip(destinationBounds, DURATION_DEFAULT_MS);
     }
 
+    /**
+     * @return {@code true} if the aspect ratio is changed since no other parameters within
+     * {@link PictureInPictureParams} would affect the bounds.
+     */
+    private boolean shouldUpdateDestinationBounds(PictureInPictureParams params) {
+        if (params == null || mTaskInfo.pictureInPictureParams == null) {
+            return params != mTaskInfo.pictureInPictureParams;
+        }
+        return !Objects.equals(mTaskInfo.pictureInPictureParams.getAspectRatioRational(),
+                params.getAspectRatioRational());
+    }
 
     /**
      * Directly perform manipulation/resize on the leash. This will not perform any