From 9e93fa7aff37189be943b33a08c545a27ffbb38f Mon Sep 17 00:00:00 2001 From: Chris Li Date: Thu, 27 Jan 2022 14:49:13 +0800 Subject: [PATCH] Fix NPE when calculateTransitionInfo mParent can only be organized window. Bug: 194112093 Test: cts/framework/gce-presubmit-wm-cloud-tf-1-shelltransit Change-Id: Iabe7e7998326defb7c58d31c943f2fc2531a82fe --- services/core/java/com/android/server/wm/Transition.java | 4 ++++ .../wmtests/src/com/android/server/wm/TransitionTests.java | 3 +++ 2 files changed, 7 insertions(+) diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index ded58f48b207d..d3b6f0fe8db18 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -1080,6 +1080,10 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe for (WindowContainer p = wc.getParent(); p != null; p = p.getParent()) { final ChangeInfo parentChange = changes.get(p); if (parentChange == null || !parentChange.hasChanged(p)) break; + if (p.mRemoteToken == null) { + // Intermediate parents must be those that has window to be managed by Shell. + continue; + } if (parentChange.mParent != null && !skipIntermediateReports) { changes.get(wc).mParent = p; // The chain above the parent was processed. diff --git a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java index fd523f0585c78..ba414075e4f16 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java @@ -739,6 +739,9 @@ public class TransitionTests extends WindowTestsBase { } from = from.getParent(); } + if (end.asDisplayArea() != null) { + end.asDisplayArea().mOrganizer = organizer; + } } /** Fill the change map with all the parents of top. Change maps are usually fully populated */