From 5544394a619def6e4bf86b1c16d2d68132746407 Mon Sep 17 00:00:00 2001 From: Jeff DeCew Date: Wed, 22 Jun 2022 13:42:34 +0000 Subject: [PATCH] Add KeyguardCoordinatorTest cases Also includes code cleanup and formatting to keep in sync with master Fixes: 224771204 Test: atest KeyguardCoordinatorTest Change-Id: I25b1e5fefe6d7a8bf9a4b2be95c7b06fe5d7dd9b Merged-In: I25b1e5fefe6d7a8bf9a4b2be95c7b06fe5d7dd9b --- .../coordinator/KeyguardCoordinator.java | 28 +++--- .../coordinator/RowAppearanceCoordinator.kt | 2 +- .../SectionHeaderVisibilityProvider.kt | 2 +- .../provider/SectionStyleProvider.kt | 2 +- .../collection/render/NodeSpecBuilder.kt | 2 +- .../coordinator/KeyguardCoordinatorTest.java | 89 ------------------- .../coordinator/KeyguardCoordinatorTest.kt | 82 +++++++++++++++++ .../RowAppearanceCoordinatorTest.kt | 2 +- .../collection/render/NodeSpecBuilderTest.kt | 2 +- 9 files changed, 99 insertions(+), 112 deletions(-) delete mode 100644 packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.java create mode 100644 packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.kt diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java index 05e8ec563f204..ef63be0633bf3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java @@ -16,16 +16,16 @@ package com.android.systemui.statusbar.notification.collection.coordinator; -import com.android.keyguard.KeyguardUpdateMonitor; +import androidx.annotation.NonNull; + import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.collection.NotifPipeline; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope; import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter; -import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider; -import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider; import com.android.systemui.statusbar.notification.collection.provider.SectionHeaderVisibilityProvider; +import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider; import javax.inject.Inject; @@ -36,27 +36,21 @@ import javax.inject.Inject; @CoordinatorScope public class KeyguardCoordinator implements Coordinator { private static final String TAG = "KeyguardCoordinator"; - private final StatusBarStateController mStatusBarStateController; - private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; - private final HighPriorityProvider mHighPriorityProvider; - private final SectionHeaderVisibilityProvider mSectionHeaderVisibilityProvider; private final KeyguardNotificationVisibilityProvider mKeyguardNotificationVisibilityProvider; + private final SectionHeaderVisibilityProvider mSectionHeaderVisibilityProvider; private final SharedCoordinatorLogger mLogger; + private final StatusBarStateController mStatusBarStateController; @Inject public KeyguardCoordinator( - StatusBarStateController statusBarStateController, - KeyguardUpdateMonitor keyguardUpdateMonitor, - HighPriorityProvider highPriorityProvider, - SectionHeaderVisibilityProvider sectionHeaderVisibilityProvider, KeyguardNotificationVisibilityProvider keyguardNotificationVisibilityProvider, - SharedCoordinatorLogger logger) { - mStatusBarStateController = statusBarStateController; - mKeyguardUpdateMonitor = keyguardUpdateMonitor; - mHighPriorityProvider = highPriorityProvider; - mSectionHeaderVisibilityProvider = sectionHeaderVisibilityProvider; + SectionHeaderVisibilityProvider sectionHeaderVisibilityProvider, + SharedCoordinatorLogger logger, + StatusBarStateController statusBarStateController) { mKeyguardNotificationVisibilityProvider = keyguardNotificationVisibilityProvider; + mSectionHeaderVisibilityProvider = sectionHeaderVisibilityProvider; mLogger = logger; + mStatusBarStateController = statusBarStateController; } @Override @@ -72,7 +66,7 @@ public class KeyguardCoordinator implements Coordinator { private final NotifFilter mNotifFilter = new NotifFilter(TAG) { @Override - public boolean shouldFilterOut(NotificationEntry entry, long now) { + public boolean shouldFilterOut(@NonNull NotificationEntry entry, long now) { return mKeyguardNotificationVisibilityProvider.shouldHideNotification(entry); } }; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAppearanceCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAppearanceCoordinator.kt index 9e8b35af1bce8..1494574b26f01 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAppearanceCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAppearanceCoordinator.kt @@ -68,4 +68,4 @@ class RowAppearanceCoordinator @Inject internal constructor( // Show the "alerted" bell icon controller.setLastAudiblyAlertedMs(entry.lastAudiblyAlertedMs) } -} \ No newline at end of file +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SectionHeaderVisibilityProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SectionHeaderVisibilityProvider.kt index 2148d3bb336a7..82c7aae08f6ab 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SectionHeaderVisibilityProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SectionHeaderVisibilityProvider.kt @@ -17,8 +17,8 @@ package com.android.systemui.statusbar.notification.collection.provider import android.content.Context -import com.android.systemui.dagger.SysUISingleton import com.android.systemui.R +import com.android.systemui.dagger.SysUISingleton import javax.inject.Inject /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SectionStyleProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SectionStyleProvider.kt index 50e7d1ce4ba0b..7b9483022fd80 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SectionStyleProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SectionStyleProvider.kt @@ -43,4 +43,4 @@ class SectionStyleProvider @Inject constructor() { fun isMinimizedSection(section: NotifSection): Boolean { return lowPrioritySections.contains(section.sectioner) } -} \ No newline at end of file +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilder.kt index 34d25cf9c3be3..d234e54e6725c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilder.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilder.kt @@ -107,4 +107,4 @@ class NodeSpecBuilder( .apply { entry.children.forEach { children.add(buildNotifNode(this, it)) } } else -> throw RuntimeException("Unexpected entry: $entry") } -} \ No newline at end of file +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.java deleted file mode 100644 index 193d76dccf0c5..0000000000000 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.systemui.statusbar.notification.collection.coordinator; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -import android.os.Handler; -import android.os.UserHandle; -import android.testing.AndroidTestingRunner; - -import androidx.test.filters.SmallTest; - -import com.android.keyguard.KeyguardUpdateMonitor; -import com.android.systemui.SysuiTestCase; -import com.android.systemui.broadcast.BroadcastDispatcher; -import com.android.systemui.plugins.statusbar.StatusBarStateController; -import com.android.systemui.statusbar.notification.collection.NotifPipeline; -import com.android.systemui.statusbar.notification.collection.NotificationEntry; -import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; -import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter; -import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider; -import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider; -import com.android.systemui.statusbar.notification.collection.provider.SectionHeaderVisibilityProvider; -import com.android.systemui.statusbar.policy.KeyguardStateController; - -import org.junit.Before; -import org.junit.Ignore; -import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -/** - * TODO(b/224771204) Create test cases - */ -@SmallTest -@RunWith(AndroidTestingRunner.class) -@Ignore -public class KeyguardCoordinatorTest extends SysuiTestCase { - private static final int NOTIF_USER_ID = 0; - private static final int CURR_USER_ID = 1; - - @Mock private Handler mMainHandler; - @Mock private KeyguardStateController mKeyguardStateController; - @Mock private BroadcastDispatcher mBroadcastDispatcher; - @Mock private StatusBarStateController mStatusBarStateController; - @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor; - @Mock private HighPriorityProvider mHighPriorityProvider; - @Mock private SectionHeaderVisibilityProvider mSectionHeaderVisibilityProvider; - @Mock private NotifPipeline mNotifPipeline; - @Mock private KeyguardNotificationVisibilityProvider mKeyguardNotificationVisibilityProvider; - - private NotificationEntry mEntry; - private NotifFilter mKeyguardFilter; - - @Before - public void setup() { - MockitoAnnotations.initMocks(this); - KeyguardCoordinator keyguardCoordinator = new KeyguardCoordinator( - mStatusBarStateController, - mKeyguardUpdateMonitor, mHighPriorityProvider, mSectionHeaderVisibilityProvider, - mKeyguardNotificationVisibilityProvider, mock(SharedCoordinatorLogger.class)); - - mEntry = new NotificationEntryBuilder() - .setUser(new UserHandle(NOTIF_USER_ID)) - .build(); - - ArgumentCaptor filterCaptor = ArgumentCaptor.forClass(NotifFilter.class); - keyguardCoordinator.attach(mNotifPipeline); - verify(mNotifPipeline, times(1)).addFinalizeFilter(filterCaptor.capture()); - mKeyguardFilter = filterCaptor.getValue(); - } -} diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.kt new file mode 100644 index 0000000000000..8c506a6d16aed --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.kt @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.systemui.statusbar.notification.collection.coordinator + +import android.testing.AndroidTestingRunner +import androidx.test.filters.SmallTest +import com.android.systemui.SysuiTestCase +import com.android.systemui.plugins.statusbar.StatusBarStateController +import com.android.systemui.statusbar.StatusBarState +import com.android.systemui.statusbar.notification.collection.NotifPipeline +import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter +import com.android.systemui.statusbar.notification.collection.provider.SectionHeaderVisibilityProvider +import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider +import com.android.systemui.util.mockito.eq +import com.android.systemui.util.mockito.mock +import com.android.systemui.util.mockito.withArgCaptor +import java.util.function.Consumer +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mockito.clearInvocations +import org.mockito.Mockito.verify +import org.mockito.Mockito.`when` as whenever + +@SmallTest +@RunWith(AndroidTestingRunner::class) +class KeyguardCoordinatorTest : SysuiTestCase() { + private val notifPipeline: NotifPipeline = mock() + private val keyguardNotifVisibilityProvider: KeyguardNotificationVisibilityProvider = mock() + private val sectionHeaderVisibilityProvider: SectionHeaderVisibilityProvider = mock() + private val sharedCoordinatorLogger: SharedCoordinatorLogger = mock() + private val statusBarStateController: StatusBarStateController = mock() + + private lateinit var onStateChangeListener: Consumer + private lateinit var keyguardFilter: NotifFilter + + @Before + fun setup() { + val keyguardCoordinator = KeyguardCoordinator( + keyguardNotifVisibilityProvider, + sectionHeaderVisibilityProvider, + sharedCoordinatorLogger, + statusBarStateController + ) + keyguardCoordinator.attach(notifPipeline) + onStateChangeListener = withArgCaptor { + verify(keyguardNotifVisibilityProvider).addOnStateChangedListener(capture()) + } + keyguardFilter = withArgCaptor { + verify(notifPipeline).addFinalizeFilter(capture()) + } + } + + @Test + fun testSetSectionHeadersVisibleInShade() { + clearInvocations(sectionHeaderVisibilityProvider) + whenever(statusBarStateController.state).thenReturn(StatusBarState.SHADE) + onStateChangeListener.accept("state change") + verify(sectionHeaderVisibilityProvider).sectionHeadersVisible = eq(true) + } + + @Test + fun testSetSectionHeadersNotVisibleOnKeyguard() { + clearInvocations(sectionHeaderVisibilityProvider) + whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD) + onStateChangeListener.accept("state change") + verify(sectionHeaderVisibilityProvider).sectionHeadersVisible = eq(false) + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAppearanceCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAppearanceCoordinatorTest.kt index 40859d0e63048..3f3de009fb04f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAppearanceCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAppearanceCoordinatorTest.kt @@ -37,8 +37,8 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito.verify -import org.mockito.MockitoAnnotations.initMocks import org.mockito.Mockito.`when` as whenever +import org.mockito.MockitoAnnotations.initMocks @SmallTest @RunWith(AndroidTestingRunner::class) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt index ff601938d5443..ac254abe60b46 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt @@ -413,4 +413,4 @@ private fun buildSection( return nodeController } }, index) -} \ No newline at end of file +}