From f0d69e7d472a71b2f17561515af1fa3945feda02 Mon Sep 17 00:00:00 2001 From: Tony Huang Date: Tue, 11 Jan 2022 14:14:42 +0800 Subject: [PATCH] Avoid NPE while drag divider bar Task topActivityInfo is nullable, we should check it is null or not before access it. Bug: 213894166 Test: pass existing tests Change-Id: Iedda57145586b6d5c2e151308ddca1e2e36035c0 --- .../wm/shell/common/split/SplitDecorManager.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java index ad9ebb2ef6aeb..36e55bae18c3f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java @@ -137,14 +137,16 @@ public class SplitDecorManager extends WindowlessWindowManager { return; } - if (mIcon == null) { - // TODO: add fade-in animation. + if (mBackgroundLeash == null) { mBackgroundLeash = SurfaceUtils.makeColorLayer(mHostLeash, RESIZING_BACKGROUND_SURFACE_NAME, mSurfaceSession); t.setColor(mBackgroundLeash, getResizingBackgroundColor(resizingTask)) .setLayer(mBackgroundLeash, SPLIT_DIVIDER_LAYER - 1) .show(mBackgroundLeash); + } + if (mIcon == null && resizingTask.topActivityInfo != null) { + // TODO: add fade-in animation. mIcon = mIconProvider.getIcon(resizingTask.topActivityInfo); mResizingIconView.setImageDrawable(mIcon); mResizingIconView.setVisibility(View.VISIBLE); @@ -168,12 +170,16 @@ public class SplitDecorManager extends WindowlessWindowManager { return; } + if (mBackgroundLeash != null) { + t.remove(mBackgroundLeash); + mBackgroundLeash = null; + } + if (mIcon != null) { mResizingIconView.setVisibility(View.GONE); mResizingIconView.setImageDrawable(null); - t.remove(mBackgroundLeash).hide(mIconLeash); + t.hide(mIconLeash); mIcon = null; - mBackgroundLeash = null; } }