[Status Bar Refactor] Have NotificationShadeWindowViewController query
the window state directly instead of going through StatusBar.java.
Bug: 212424936
Test: NotificationShadeWindowViewControllerTest
Change-Id: I91fc2063185882c837fa4ba9e102b974003a710a
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
index 879e694..4e2eb6a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
@@ -16,8 +16,6 @@
package com.android.systemui.statusbar.phone;
-import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
-
import android.app.StatusBarManager;
import android.hardware.display.AmbientDisplayConfiguration;
import android.media.AudioManager;
@@ -46,6 +44,7 @@
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
+import com.android.systemui.statusbar.window.StatusBarWindowStateController;
import com.android.systemui.tuner.TunerService;
import java.io.FileDescriptor;
@@ -67,6 +66,7 @@
private final LockscreenShadeTransitionController mLockscreenShadeTransitionController;
private final LockIconViewController mLockIconViewController;
private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
+ private final StatusBarWindowStateController mStatusBarWindowStateController;
private GestureDetector mGestureDetector;
private View mBrightnessMirror;
@@ -100,6 +100,7 @@
PanelExpansionStateManager panelExpansionStateManager,
NotificationStackScrollLayoutController notificationStackScrollLayoutController,
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
+ StatusBarWindowStateController statusBarWindowStateController,
LockIconViewController lockIconViewController) {
mLockscreenShadeTransitionController = transitionController;
mFalsingCollector = falsingCollector;
@@ -112,6 +113,7 @@
mDepthController = depthController;
mNotificationStackScrollLayoutController = notificationStackScrollLayoutController;
mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
+ mStatusBarWindowStateController = statusBarWindowStateController;
mLockIconViewController = lockIconViewController;
// This view is not part of the newly inflated expanded status bar.
@@ -248,7 +250,7 @@
float x = ev.getRawX();
float y = ev.getRawY();
if (mStatusBarViewController.touchIsWithinView(x, y)) {
- if (mService.isSameStatusBarState(WINDOW_STATE_SHOWING)) {
+ if (mStatusBarWindowStateController.windowIsShowing()) {
mIsTrackingBarGesture = true;
return mStatusBarViewController.sendTouchToView(ev);
} else { // it's hidden or hiding, don't send to notification shade.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 4ecbb7c..6499e23 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -2111,10 +2111,6 @@
}
}
- boolean isSameStatusBarState(int state) {
- return mStatusBarWindowState == state;
- }
-
public GestureRecorder getGestureRecorder() {
return mGestureRec;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowStateController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowStateController.kt
index facbe8a..3a14914 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowStateController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowStateController.kt
@@ -61,6 +61,9 @@
listeners.add(listener)
}
+ /** Returns true if the window is currently showing. */
+ fun windowIsShowing() = windowState == WINDOW_STATE_SHOWING
+
private fun setWindowState(
displayId: Int,
@StatusBarManager.WindowType window: Int,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt
index adb76e1..12e71af 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt
@@ -31,6 +31,7 @@
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
import com.android.systemui.statusbar.phone.NotificationShadeWindowView.InteractionEventHandler
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager
+import com.android.systemui.statusbar.window.StatusBarWindowStateController
import com.android.systemui.tuner.TunerService
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -40,7 +41,6 @@
import org.mockito.Mock
import org.mockito.MockitoAnnotations
import org.mockito.Mockito.anyFloat
-import org.mockito.Mockito.anyInt
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
@@ -72,6 +72,8 @@
@Mock
private lateinit var mStatusBarKeyguardViewManager: StatusBarKeyguardViewManager
@Mock
+ private lateinit var mStatusBarWindowStateController: StatusBarWindowStateController
+ @Mock
private lateinit var mLockscreenShadeTransitionController: LockscreenShadeTransitionController
@Mock
private lateinit var mLockIconViewController: LockIconViewController
@@ -98,6 +100,7 @@
PanelExpansionStateManager(),
stackScrollLayoutController,
mStatusBarKeyguardViewManager,
+ mStatusBarWindowStateController,
mLockIconViewController
)
mController.setupExpandedStatusBar()
@@ -155,7 +158,7 @@
@Test
fun handleDispatchTouchEvent_downAndPanelCollapsedAndInSbBoundAndSbWindowShow_sendsTouchToSb() {
mController.setStatusBarViewController(mPhoneStatusBarViewController)
- whenever(mStatusBar.isSameStatusBarState(anyInt())).thenReturn(true)
+ whenever(mStatusBarWindowStateController.windowIsShowing()).thenReturn(true)
whenever(mNotificationPanelViewController.isFullyCollapsed).thenReturn(true)
whenever(mPhoneStatusBarViewController.touchIsWithinView(anyFloat(), anyFloat()))
.thenReturn(true)
@@ -170,7 +173,7 @@
@Test
fun handleDispatchTouchEvent_panelNotCollapsed_returnsNull() {
mController.setStatusBarViewController(mPhoneStatusBarViewController)
- whenever(mStatusBar.isSameStatusBarState(anyInt())).thenReturn(true)
+ whenever(mStatusBarWindowStateController.windowIsShowing()).thenReturn(true)
whenever(mPhoneStatusBarViewController.touchIsWithinView(anyFloat(), anyFloat()))
.thenReturn(true)
// Item we're testing
@@ -185,7 +188,7 @@
@Test
fun handleDispatchTouchEvent_touchNotInSbBounds_returnsNull() {
mController.setStatusBarViewController(mPhoneStatusBarViewController)
- whenever(mStatusBar.isSameStatusBarState(anyInt())).thenReturn(true)
+ whenever(mStatusBarWindowStateController.windowIsShowing()).thenReturn(true)
whenever(mNotificationPanelViewController.isFullyCollapsed).thenReturn(true)
// Item we're testing
whenever(mPhoneStatusBarViewController.touchIsWithinView(anyFloat(), anyFloat()))
@@ -204,7 +207,7 @@
whenever(mPhoneStatusBarViewController.touchIsWithinView(anyFloat(), anyFloat()))
.thenReturn(true)
// Item we're testing
- whenever(mStatusBar.isSameStatusBarState(anyInt())).thenReturn(false)
+ whenever(mStatusBarWindowStateController.windowIsShowing()).thenReturn(false)
val returnVal = mInteractionEventHandler.handleDispatchTouchEvent(downEv)
@@ -215,7 +218,7 @@
@Test
fun handleDispatchTouchEvent_downEventSentToSbThenAnotherEvent_sendsTouchToSb() {
mController.setStatusBarViewController(mPhoneStatusBarViewController)
- whenever(mStatusBar.isSameStatusBarState(anyInt())).thenReturn(true)
+ whenever(mStatusBarWindowStateController.windowIsShowing()).thenReturn(true)
whenever(mNotificationPanelViewController.isFullyCollapsed).thenReturn(true)
whenever(mPhoneStatusBarViewController.touchIsWithinView(anyFloat(), anyFloat()))
.thenReturn(true)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java
index aaf051c..d885da8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java
@@ -45,6 +45,7 @@
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
+import com.android.systemui.statusbar.window.StatusBarWindowStateController;
import com.android.systemui.tuner.TunerService;
import org.junit.Before;
@@ -75,6 +76,7 @@
@Mock private NotificationShadeWindowController mNotificationShadeWindowController;
@Mock private NotificationStackScrollLayoutController mNotificationStackScrollLayoutController;
@Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
+ @Mock private StatusBarWindowStateController mStatusBarWindowStateController;
@Mock private LockscreenShadeTransitionController mLockscreenShadeTransitionController;
@Mock private LockIconViewController mLockIconViewController;
@@ -107,6 +109,7 @@
new PanelExpansionStateManager(),
mNotificationStackScrollLayoutController,
mStatusBarKeyguardViewManager,
+ mStatusBarWindowStateController,
mLockIconViewController);
mController.setupExpandedStatusBar();
mController.setService(mStatusBar, mNotificationShadeWindowController);