From e01635e68fc90ab65fea3bd34c8194e9fb73463a Mon Sep 17 00:00:00 2001 From: Shawn Lin Date: Mon, 22 Aug 2022 07:12:45 +0000 Subject: [PATCH] Fix NPE when leaving kids mode Do not apply leash operations if we are leaving kids mode since the root task will be deleted. Bug: 242873681 Test: 1. Select 3-button nav mode 2. enable kids mode by below command: adb shell setting put secure nav_bar_kids_mode 1 3. Swtich to gesture nav mode to exit kids mode and no crash Change-Id: I04cab6854a40bcae42b8c83db2e6866e4f558cca --- .../wm/shell/kidsmode/KidsModeTaskOrganizer.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizer.java index 2fdd12185551a..e91987dab972f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizer.java @@ -316,11 +316,13 @@ public class KidsModeTaskOrganizer extends ShellTaskOrganizer { true /* onTop */); wct.reorder(rootToken, mEnabled /* onTop */); mSyncQueue.queue(wct); - final SurfaceControl rootLeash = mLaunchRootLeash; - mSyncQueue.runInSync(t -> { - t.setPosition(rootLeash, taskBounds.left, taskBounds.top); - t.setWindowCrop(rootLeash, taskBounds.width(), taskBounds.height()); - }); + if (mEnabled) { + final SurfaceControl rootLeash = mLaunchRootLeash; + mSyncQueue.runInSync(t -> { + t.setPosition(rootLeash, taskBounds.left, taskBounds.top); + t.setWindowCrop(rootLeash, taskBounds.width(), taskBounds.height()); + }); + } } private Rect calculateBounds() {