diff options
| author | 2019-01-22 20:34:12 +0000 | |
|---|---|---|
| committer | 2019-01-22 20:34:12 +0000 | |
| commit | a47310fde06c41a7b41ddb59db767993e195180d (patch) | |
| tree | ca5e79d9b5945936f371a383a0837b5b84316b2b | |
| parent | 236b572a5bc6467ca653ebd8136b908d5e1f95c2 (diff) | |
| parent | 42ebe5486f9250494b3682ee53fa42c5377b0fa7 (diff) | |
Merge "Fix StatusBarWindowController initialization NPE"
2 files changed, 15 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java index 88f904882c8f..ffaa236218fb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java @@ -69,13 +69,13 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat private final WindowManager mWindowManager; private final IActivityManager mActivityManager; private final DozeParameters mDozeParameters; + private final WindowManager.LayoutParams mLpChanged; + private final boolean mKeyguardScreenRotation; private ViewGroup mStatusBarView; private WindowManager.LayoutParams mLp; - private WindowManager.LayoutParams mLpChanged; private boolean mHasTopUi; private boolean mHasTopUiChanged; private int mBarHeight; - private final boolean mKeyguardScreenRotation; private float mScreenBrightnessDoze; private final State mCurrentState = new State(); private OtherwisedCollapsedListener mListener; @@ -97,6 +97,7 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat mKeyguardScreenRotation = shouldEnableKeyguardScreenRotation(); mDozeParameters = dozeParameters; mScreenBrightnessDoze = mDozeParameters.getScreenBrightnessDoze(); + mLpChanged = new WindowManager.LayoutParams(); Dependency.get(StatusBarStateController.class).addCallback( mStateListener, StatusBarStateController.RANK_STATUS_BAR_WINDOW_CONTROLLER); Dependency.get(ConfigurationController.class).addCallback(this); @@ -138,7 +139,6 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat mStatusBarView = statusBarView; mBarHeight = barHeight; mWindowManager.addView(mStatusBarView, mLp); - mLpChanged = new WindowManager.LayoutParams(); mLpChanged.copyFrom(mLp); onThemeChanged(); } @@ -228,7 +228,9 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat private void applyHeight(State state) { boolean expanded = isExpanded(state); if (state.forcePluginOpen) { - mListener.setWouldOtherwiseCollapse(expanded); + if (mListener != null) { + mListener.setWouldOtherwiseCollapse(expanded); + } expanded = true; } if (expanded) { @@ -247,7 +249,7 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat private void applyFitsSystemWindows(State state) { boolean fitsSystemWindows = !state.isKeyguardShowingAndNotOccluded(); - if (mStatusBarView.getFitsSystemWindows() != fitsSystemWindows) { + if (mStatusBarView != null && mStatusBarView.getFitsSystemWindows() != fitsSystemWindows) { mStatusBarView.setFitsSystemWindows(fitsSystemWindows); mStatusBarView.requestApplyInsets(); } @@ -289,7 +291,7 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat applyBrightness(state); applyHasTopUi(state); applyNotTouchable(state); - if (mLp.copyFrom(mLpChanged) != 0) { + if (mLp != null && mLp.copyFrom(mLpChanged) != 0) { mWindowManager.updateViewLayout(mStatusBarView, mLp); } if (mHasTopUi != mHasTopUiChanged) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowControllerTest.java index 98d0c6b4de16..9996a9eddc02 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowControllerTest.java @@ -95,4 +95,11 @@ public class StatusBarWindowControllerTest extends SysuiTestCase { public void testAdd_updatesVisibilityFlags() { verify(mStatusBarView).setSystemUiVisibility(anyInt()); } + + @Test + public void testSetForcePluginOpen_beforeStatusBarInitialization() { + mStatusBarWindowController = new StatusBarWindowController(mContext, mWindowManager, + mActivityManager, mDozeParameters); + mStatusBarWindowController.setForcePluginOpen(true); + } } |