From 316dca71ba5c8c121bc47b8ac24dec1799e61638 Mon Sep 17 00:00:00 2001 From: Sergey Nikolaienkov Date: Mon, 2 Nov 2020 14:51:10 +0000 Subject: [PATCH] Fix NPE when reference PipMenuActivityController on TV Check if mPipMenuAcitivityController is not null before referencing. Bug: 172227207 Test: manually on adt3 Change-Id: I2ba19d8c1795704057ff640764dc8133606e61f1 --- .../android/wm/shell/pip/PipTaskOrganizer.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 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 833924c8ee285..39772fb7b7aed 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 @@ -135,6 +135,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, private final Handler mUpdateHandler; private final PipBoundsState mPipBoundsState; private final PipBoundsHandler mPipBoundsHandler; + // TODO(b/172286265): Remove dependency on .pip.PHONE.PipMenuActivityController private final PipMenuActivityController mMenuActivityController; private final PipAnimationController mPipAnimationController; private final PipUiEventLogger mPipUiEventLoggerLogger; @@ -946,10 +947,9 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, mSurfaceTransactionHelper .crop(tx, mLeash, destinationBounds) .round(tx, mLeash, mState.isInPip()); - if (mMenuActivityController.isMenuVisible()) { - runOnMainHandler(() -> { - mMenuActivityController.resizePipMenu(mLeash, tx, destinationBounds); - }); + if (mMenuActivityController != null && mMenuActivityController.isMenuVisible()) { + runOnMainHandler(() -> + mMenuActivityController.resizePipMenu(mLeash, tx, destinationBounds)); } else { tx.apply(); } @@ -973,10 +973,9 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, final SurfaceControl.Transaction tx = mSurfaceControlTransactionFactory.getTransaction(); mSurfaceTransactionHelper.scale(tx, mLeash, startBounds, destinationBounds); - if (mMenuActivityController.isMenuVisible()) { - runOnMainHandler(() -> { - mMenuActivityController.movePipMenu(mLeash, tx, destinationBounds); - }); + if (mMenuActivityController != null && mMenuActivityController.isMenuVisible()) { + runOnMainHandler(() -> + mMenuActivityController.movePipMenu(mLeash, tx, destinationBounds)); } else { tx.apply(); } @@ -993,7 +992,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, if (direction == TRANSITION_DIRECTION_REMOVE_STACK) { removePipImmediately(); return; - } else if (isInPipDirection(direction) && type == ANIM_TYPE_ALPHA) { + } else if (isInPipDirection(direction) && type == ANIM_TYPE_ALPHA + && mMenuActivityController != null) { // TODO: Synchronize this correctly in #applyEnterPipSyncTransaction finishResizeForMenu(destinationBounds); return;