From 1a9f73878fc4e84aaaddc87e1eda389a91693d63 Mon Sep 17 00:00:00 2001 From: Ming-Shin Lu Date: Wed, 17 Jun 2020 16:02:25 +0800 Subject: [PATCH] Fix NPE on WindowContainer#isOnTop RecentsAnimationController#removeTask will use WC#isOnTop to check if can accept the remote animation task target removal. However, it may hit the timing that the parent of the task might be removed prior than removeTask called, so caued exception during WC#getParent(). Add null check in WC#inOnTop to return false when WC#getParent is null. Bug: 158937083 Test: atest WindowContainerTests Change-Id: I17b1f709722f573af6efcd00523d434766bca800 --- services/core/java/com/android/server/wm/WindowContainer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index 6406f0ae51a6f..dd08f4208eca3 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -1032,7 +1032,8 @@ class WindowContainer extends ConfigurationContainer< * @return Whether this child is on top of the window hierarchy. */ boolean isOnTop() { - return getParent().getTopChild() == this && getParent().isOnTop(); + final WindowContainer parent = getParent(); + return parent != null && parent.getTopChild() == this && parent.isOnTop(); } /** Returns the top child container. */