[Status Bar Refactor] Have NotificationShadeWindowViewController query

the window state directly instead of going through StatusBar.java.

Bug: 212424936
Test: NotificationShadeWindowViewControllerTest
Change-Id: I91fc2063185882c837fa4ba9e102b974003a710a
This commit is contained in:
Caitlin Cassidy
2021-12-29 16:48:23 +00:00
parent 06a2da0b98
commit 9bed7dc0ca
5 changed files with 20 additions and 13 deletions

View File

@@ -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.SysuiStatusBarStateController;
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 @@ public class NotificationShadeWindowViewController {
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 @@ public class NotificationShadeWindowViewController {
PanelExpansionStateManager panelExpansionStateManager,
NotificationStackScrollLayoutController notificationStackScrollLayoutController,
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
StatusBarWindowStateController statusBarWindowStateController,
LockIconViewController lockIconViewController) {
mLockscreenShadeTransitionController = transitionController;
mFalsingCollector = falsingCollector;
@@ -112,6 +113,7 @@ public class NotificationShadeWindowViewController {
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 @@ public class NotificationShadeWindowViewController {
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.

View File

@@ -2111,10 +2111,6 @@ public class StatusBar extends CoreStartable implements
}
}
boolean isSameStatusBarState(int state) {
return mStatusBarWindowState == state;
}
public GestureRecorder getGestureRecorder() {
return mGestureRec;
}

View File

@@ -61,6 +61,9 @@ class StatusBarWindowStateController @Inject constructor(
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,

View File

@@ -31,6 +31,7 @@ import com.android.systemui.statusbar.SysuiStatusBarStateController
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.ArgumentCaptor
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 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
@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 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
PanelExpansionStateManager(),
stackScrollLayoutController,
mStatusBarKeyguardViewManager,
mStatusBarWindowStateController,
mLockIconViewController
)
mController.setupExpandedStatusBar()
@@ -155,7 +158,7 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
@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 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
@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 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
@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 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
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 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
@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)

View File

@@ -45,6 +45,7 @@ import com.android.systemui.statusbar.SysuiStatusBarStateController;
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 @@ public class NotificationShadeWindowViewTest extends SysuiTestCase {
@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 @@ public class NotificationShadeWindowViewTest extends SysuiTestCase {
new PanelExpansionStateManager(),
mNotificationStackScrollLayoutController,
mStatusBarKeyguardViewManager,
mStatusBarWindowStateController,
mLockIconViewController);
mController.setupExpandedStatusBar();
mController.setService(mStatusBar, mNotificationShadeWindowController);