diff options
2 files changed, 214 insertions, 195 deletions
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java index 4559a23a4f5c..9e23d548e5b5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java @@ -82,19 +82,14 @@ import org.mockito.junit.MockitoRule; import java.util.Arrays; import java.util.List; +import java.util.function.Consumer; @SmallTest @RunWith(AndroidTestingRunner.class) @RunWithLooper public class ExpandableNotificationRowTest extends SysuiTestCase { - private ExpandableNotificationRow mGroupRow; - private ExpandableNotificationRow mNotifRow; - private ExpandableNotificationRow mPublicRow; - private NotificationTestHelper mNotificationTestHelper; - boolean mHeadsUpAnimatingAway = false; - @Rule public MockitoRule mockito = MockitoJUnit.rule(); @Before @@ -105,112 +100,108 @@ public class ExpandableNotificationRowTest extends SysuiTestCase { mDependency, TestableLooper.get(this)); mNotificationTestHelper.setDefaultInflationFlags(FLAG_CONTENT_VIEW_ALL); + FakeFeatureFlags fakeFeatureFlags = new FakeFeatureFlags(); fakeFeatureFlags.set(Flags.NOTIFICATION_ANIMATE_BIG_PICTURE, true); mNotificationTestHelper.setFeatureFlags(fakeFeatureFlags); - // create a standard private notification row - Notification normalNotif = mNotificationTestHelper.createNotification(); - normalNotif.publicVersion = null; - mNotifRow = mNotificationTestHelper.createRow(normalNotif); - // create a notification row whose public version is identical - Notification publicNotif = mNotificationTestHelper.createNotification(); - publicNotif.publicVersion = mNotificationTestHelper.createNotification(); - mPublicRow = mNotificationTestHelper.createRow(publicNotif); - // create a group row - mGroupRow = mNotificationTestHelper.createGroup(); - mGroupRow.setHeadsUpAnimatingAwayListener( - animatingAway -> mHeadsUpAnimatingAway = animatingAway); - } @Test - public void testUpdateBackgroundColors_isRecursive() { - mGroupRow.setTintColor(Color.RED); - mGroupRow.getChildNotificationAt(0).setTintColor(Color.GREEN); - mGroupRow.getChildNotificationAt(1).setTintColor(Color.BLUE); + public void testUpdateBackgroundColors_isRecursive() throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + group.setTintColor(Color.RED); + group.getChildNotificationAt(0).setTintColor(Color.GREEN); + group.getChildNotificationAt(1).setTintColor(Color.BLUE); - assertThat(mGroupRow.getCurrentBackgroundTint()).isEqualTo(Color.RED); - assertThat(mGroupRow.getChildNotificationAt(0).getCurrentBackgroundTint()) + assertThat(group.getCurrentBackgroundTint()).isEqualTo(Color.RED); + assertThat(group.getChildNotificationAt(0).getCurrentBackgroundTint()) .isEqualTo(Color.GREEN); - assertThat(mGroupRow.getChildNotificationAt(1).getCurrentBackgroundTint()) + assertThat(group.getChildNotificationAt(1).getCurrentBackgroundTint()) .isEqualTo(Color.BLUE); - mGroupRow.updateBackgroundColors(); + group.updateBackgroundColors(); - int resetTint = mGroupRow.getCurrentBackgroundTint(); + int resetTint = group.getCurrentBackgroundTint(); assertThat(resetTint).isNotEqualTo(Color.RED); - assertThat(mGroupRow.getChildNotificationAt(0).getCurrentBackgroundTint()) + assertThat(group.getChildNotificationAt(0).getCurrentBackgroundTint()) .isEqualTo(resetTint); - assertThat(mGroupRow.getChildNotificationAt(1).getCurrentBackgroundTint()) + assertThat(group.getChildNotificationAt(1).getCurrentBackgroundTint()) .isEqualTo(resetTint); } @Test - public void testSetSensitiveOnNotifRowNotifiesOfHeightChange() throws InterruptedException { + public void testSetSensitiveOnNotifRowNotifiesOfHeightChange() throws Exception { // GIVEN a sensitive notification row that's currently redacted - measureAndLayout(mNotifRow); - mNotifRow.setHideSensitiveForIntrinsicHeight(true); - mNotifRow.setSensitive(true, true); - assertThat(mNotifRow.getShowingLayout()).isSameInstanceAs(mNotifRow.getPublicLayout()); - assertThat(mNotifRow.getIntrinsicHeight()).isGreaterThan(0); + ExpandableNotificationRow row = mNotificationTestHelper.createRow(); + measureAndLayout(row); + row.setHideSensitiveForIntrinsicHeight(true); + row.setSensitive(true, true); + assertThat(row.getShowingLayout()).isSameInstanceAs(row.getPublicLayout()); + assertThat(row.getIntrinsicHeight()).isGreaterThan(0); // GIVEN that the row has a height change listener OnHeightChangedListener listener = mock(OnHeightChangedListener.class); - mNotifRow.setOnHeightChangedListener(listener); + row.setOnHeightChangedListener(listener); // WHEN the row is set to no longer be sensitive - mNotifRow.setSensitive(false, true); + row.setSensitive(false, true); // VERIFY that the height change listener is invoked - assertThat(mNotifRow.getShowingLayout()).isSameInstanceAs(mNotifRow.getPrivateLayout()); - assertThat(mNotifRow.getIntrinsicHeight()).isGreaterThan(0); - verify(listener).onHeightChanged(eq(mNotifRow), eq(false)); + assertThat(row.getShowingLayout()).isSameInstanceAs(row.getPrivateLayout()); + assertThat(row.getIntrinsicHeight()).isGreaterThan(0); + verify(listener).onHeightChanged(eq(row), eq(false)); } @Test - public void testSetSensitiveOnGroupRowNotifiesOfHeightChange() { + public void testSetSensitiveOnGroupRowNotifiesOfHeightChange() throws Exception { // GIVEN a sensitive group row that's currently redacted - measureAndLayout(mGroupRow); - mGroupRow.setHideSensitiveForIntrinsicHeight(true); - mGroupRow.setSensitive(true, true); - assertThat(mGroupRow.getShowingLayout()).isSameInstanceAs(mGroupRow.getPublicLayout()); - assertThat(mGroupRow.getIntrinsicHeight()).isGreaterThan(0); + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + measureAndLayout(group); + group.setHideSensitiveForIntrinsicHeight(true); + group.setSensitive(true, true); + assertThat(group.getShowingLayout()).isSameInstanceAs(group.getPublicLayout()); + assertThat(group.getIntrinsicHeight()).isGreaterThan(0); // GIVEN that the row has a height change listener OnHeightChangedListener listener = mock(OnHeightChangedListener.class); - mGroupRow.setOnHeightChangedListener(listener); + group.setOnHeightChangedListener(listener); // WHEN the row is set to no longer be sensitive - mGroupRow.setSensitive(false, true); + group.setSensitive(false, true); // VERIFY that the height change listener is invoked - assertThat(mGroupRow.getShowingLayout()).isSameInstanceAs(mGroupRow.getPrivateLayout()); - assertThat(mGroupRow.getIntrinsicHeight()).isGreaterThan(0); - verify(listener).onHeightChanged(eq(mGroupRow), eq(false)); + assertThat(group.getShowingLayout()).isSameInstanceAs(group.getPrivateLayout()); + assertThat(group.getIntrinsicHeight()).isGreaterThan(0); + verify(listener).onHeightChanged(eq(group), eq(false)); } @Test - public void testSetSensitiveOnPublicRowDoesNotNotifyOfHeightChange() { + public void testSetSensitiveOnPublicRowDoesNotNotifyOfHeightChange() throws Exception { + // create a notification row whose public version is identical + Notification publicNotif = mNotificationTestHelper.createNotification(); + publicNotif.publicVersion = mNotificationTestHelper.createNotification(); + ExpandableNotificationRow publicRow = mNotificationTestHelper.createRow(publicNotif); + // GIVEN a sensitive public row that's currently redacted - measureAndLayout(mPublicRow); - mPublicRow.setHideSensitiveForIntrinsicHeight(true); - mPublicRow.setSensitive(true, true); - assertThat(mPublicRow.getShowingLayout()).isSameInstanceAs(mPublicRow.getPublicLayout()); - assertThat(mPublicRow.getIntrinsicHeight()).isGreaterThan(0); + measureAndLayout(publicRow); + publicRow.setHideSensitiveForIntrinsicHeight(true); + publicRow.setSensitive(true, true); + assertThat(publicRow.getShowingLayout()).isSameInstanceAs(publicRow.getPublicLayout()); + assertThat(publicRow.getIntrinsicHeight()).isGreaterThan(0); // GIVEN that the row has a height change listener OnHeightChangedListener listener = mock(OnHeightChangedListener.class); - mPublicRow.setOnHeightChangedListener(listener); + publicRow.setOnHeightChangedListener(listener); // WHEN the row is set to no longer be sensitive - mPublicRow.setSensitive(false, true); + publicRow.setSensitive(false, true); // VERIFY that the height change listener is not invoked, because the height didn't change - assertThat(mPublicRow.getShowingLayout()).isSameInstanceAs(mPublicRow.getPrivateLayout()); - assertThat(mPublicRow.getIntrinsicHeight()).isGreaterThan(0); - assertThat(mPublicRow.getPrivateLayout().getMinHeight()) - .isEqualTo(mPublicRow.getPublicLayout().getMinHeight()); - verify(listener, never()).onHeightChanged(eq(mPublicRow), eq(false)); + assertThat(publicRow.getShowingLayout()).isSameInstanceAs(publicRow.getPrivateLayout()); + assertThat(publicRow.getIntrinsicHeight()).isGreaterThan(0); + assertThat(publicRow.getPrivateLayout().getMinHeight()) + .isEqualTo(publicRow.getPublicLayout().getMinHeight()); + verify(listener, never()).onHeightChanged(eq(publicRow), eq(false)); } private void measureAndLayout(ExpandableNotificationRow row) { @@ -227,36 +218,43 @@ public class ExpandableNotificationRowTest extends SysuiTestCase { } @Test - public void testGroupSummaryNotShowingIconWhenPublic() { - mGroupRow.setSensitive(true, true); - mGroupRow.setHideSensitiveForIntrinsicHeight(true); - assertTrue(mGroupRow.isSummaryWithChildren()); - assertFalse(mGroupRow.isShowingIcon()); + public void testGroupSummaryNotShowingIconWhenPublic() throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + + group.setSensitive(true, true); + group.setHideSensitiveForIntrinsicHeight(true); + assertTrue(group.isSummaryWithChildren()); + assertFalse(group.isShowingIcon()); } @Test - public void testNotificationHeaderVisibleWhenAnimating() { - mGroupRow.setSensitive(true, true); - mGroupRow.setHideSensitive(true, false, 0, 0); - mGroupRow.setHideSensitive(false, true, 0, 0); - assertEquals(View.VISIBLE, mGroupRow.getChildrenContainer().getVisibleWrapper() + public void testNotificationHeaderVisibleWhenAnimating() throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + + group.setSensitive(true, true); + group.setHideSensitive(true, false, 0, 0); + group.setHideSensitive(false, true, 0, 0); + assertEquals(View.VISIBLE, group.getChildrenContainer().getVisibleWrapper() .getNotificationHeader().getVisibility()); } @Test - public void testUserLockedResetEvenWhenNoChildren() { - mGroupRow.setUserLocked(true); - mGroupRow.setUserLocked(false); + public void testUserLockedResetEvenWhenNoChildren() throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + + group.setUserLocked(true); + group.setUserLocked(false); assertFalse("The childrencontainer should not be userlocked but is, the state " - + "seems out of sync.", mGroupRow.getChildrenContainer().isUserLocked()); + + "seems out of sync.", group.getChildrenContainer().isUserLocked()); } @Test - public void testReinflatedOnDensityChange() { + public void testReinflatedOnDensityChange() throws Exception { + ExpandableNotificationRow row = mNotificationTestHelper.createRow(); NotificationChildrenContainer mockContainer = mock(NotificationChildrenContainer.class); - mNotifRow.setChildrenContainer(mockContainer); + row.setChildrenContainer(mockContainer); - mNotifRow.onDensityOrFontScaleChanged(); + row.onDensityOrFontScaleChanged(); verify(mockContainer).reInflateViews(any(), any()); } @@ -299,64 +297,73 @@ public class ExpandableNotificationRowTest extends SysuiTestCase { @Test public void testAboveShelfChangedListenerCalledWhenGoingBelow() throws Exception { ExpandableNotificationRow row = mNotificationTestHelper.createRow(); - row.setHeadsUp(true); AboveShelfChangedListener listener = mock(AboveShelfChangedListener.class); row.setAboveShelfChangedListener(listener); + Mockito.reset(listener); + row.setHeadsUp(true); row.setAboveShelf(false); verify(listener).onAboveShelfStateChanged(false); } @Test public void testClickSound() throws Exception { - assertTrue("Should play sounds by default.", mGroupRow.isSoundEffectsEnabled()); + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + + assertTrue("Should play sounds by default.", group.isSoundEffectsEnabled()); StatusBarStateController mock = mNotificationTestHelper.getStatusBarStateController(); when(mock.isDozing()).thenReturn(true); - mGroupRow.setSecureStateProvider(()-> false); + group.setSecureStateProvider(()-> false); assertFalse("Shouldn't play sounds when dark and trusted.", - mGroupRow.isSoundEffectsEnabled()); - mGroupRow.setSecureStateProvider(()-> true); + group.isSoundEffectsEnabled()); + group.setSecureStateProvider(()-> true); assertTrue("Should always play sounds when not trusted.", - mGroupRow.isSoundEffectsEnabled()); + group.isSoundEffectsEnabled()); } @Test - public void testSetDismissed_longPressListenerRemoved() { + public void testSetDismissed_longPressListenerRemoved() throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + ExpandableNotificationRow.LongPressListener listener = mock(ExpandableNotificationRow.LongPressListener.class); - mGroupRow.setLongPressListener(listener); - mGroupRow.doLongClickCallback(0,0); - verify(listener, times(1)).onLongPress(eq(mGroupRow), eq(0), eq(0), + group.setLongPressListener(listener); + group.doLongClickCallback(0, 0); + verify(listener, times(1)).onLongPress(eq(group), eq(0), eq(0), any(NotificationMenuRowPlugin.MenuItem.class)); reset(listener); - mGroupRow.dismiss(true); - mGroupRow.doLongClickCallback(0,0); - verify(listener, times(0)).onLongPress(eq(mGroupRow), eq(0), eq(0), + group.dismiss(true); + group.doLongClickCallback(0, 0); + verify(listener, times(0)).onLongPress(eq(group), eq(0), eq(0), any(NotificationMenuRowPlugin.MenuItem.class)); } @Test - public void testFeedback_noHeader() { + public void testFeedback_noHeader() throws Exception { + ExpandableNotificationRow groupRow = mNotificationTestHelper.createGroup(); + // public notification is custom layout - no header - mGroupRow.setSensitive(true, true); - mGroupRow.setOnFeedbackClickListener(null); - mGroupRow.setFeedbackIcon(null); + groupRow.setSensitive(true, true); + groupRow.setOnFeedbackClickListener(null); + groupRow.setFeedbackIcon(null); } @Test - public void testFeedback_header() { + public void testFeedback_header() throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + NotificationContentView publicLayout = mock(NotificationContentView.class); - mGroupRow.setPublicLayout(publicLayout); + group.setPublicLayout(publicLayout); NotificationContentView privateLayout = mock(NotificationContentView.class); - mGroupRow.setPrivateLayout(privateLayout); + group.setPrivateLayout(privateLayout); NotificationChildrenContainer mockContainer = mock(NotificationChildrenContainer.class); when(mockContainer.getNotificationChildCount()).thenReturn(1); - mGroupRow.setChildrenContainer(mockContainer); + group.setChildrenContainer(mockContainer); final boolean show = true; final FeedbackIcon icon = new FeedbackIcon( R.drawable.ic_feedback_alerted, R.string.notification_feedback_indicator_alerted); - mGroupRow.setFeedbackIcon(icon); + group.setFeedbackIcon(icon); verify(mockContainer, times(1)).setFeedbackIcon(icon); verify(privateLayout, times(1)).setFeedbackIcon(icon); @@ -364,43 +371,60 @@ public class ExpandableNotificationRowTest extends SysuiTestCase { } @Test - public void testFeedbackOnClick() { + public void testFeedbackOnClick() throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + ExpandableNotificationRow.CoordinateOnClickListener l = mock( ExpandableNotificationRow.CoordinateOnClickListener.class); View view = mock(View.class); - mGroupRow.setOnFeedbackClickListener(l); + group.setOnFeedbackClickListener(l); - mGroupRow.getFeedbackOnClickListener().onClick(view); + group.getFeedbackOnClickListener().onClick(view); verify(l, times(1)).onClick(any(), anyInt(), anyInt(), any()); } @Test - public void testHeadsUpAnimatingAwayListener() { - mGroupRow.setHeadsUpAnimatingAway(true); - Assert.assertEquals(true, mHeadsUpAnimatingAway); - mGroupRow.setHeadsUpAnimatingAway(false); - Assert.assertEquals(false, mHeadsUpAnimatingAway); + public void testHeadsUpAnimatingAwayListener() throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + Consumer<Boolean> headsUpListener = mock(Consumer.class); + AboveShelfChangedListener aboveShelfChangedListener = mock(AboveShelfChangedListener.class); + group.setHeadsUpAnimatingAwayListener(headsUpListener); + group.setAboveShelfChangedListener(aboveShelfChangedListener); + + group.setHeadsUpAnimatingAway(true); + verify(headsUpListener).accept(true); + verify(aboveShelfChangedListener).onAboveShelfStateChanged(true); + + group.setHeadsUpAnimatingAway(false); + verify(headsUpListener).accept(false); + verify(aboveShelfChangedListener).onAboveShelfStateChanged(false); } @Test - public void testIsBlockingHelperShowing_isCorrectlyUpdated() { - mGroupRow.setBlockingHelperShowing(true); - assertTrue(mGroupRow.isBlockingHelperShowing()); + public void testIsBlockingHelperShowing_isCorrectlyUpdated() throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); - mGroupRow.setBlockingHelperShowing(false); - assertFalse(mGroupRow.isBlockingHelperShowing()); + group.setBlockingHelperShowing(true); + assertTrue(group.isBlockingHelperShowing()); + + group.setBlockingHelperShowing(false); + assertFalse(group.isBlockingHelperShowing()); } @Test - public void testGetNumUniqueChildren_defaultChannel() { - assertEquals(1, mGroupRow.getNumUniqueChannels()); + public void testGetNumUniqueChildren_defaultChannel() throws Exception { + ExpandableNotificationRow groupRow = mNotificationTestHelper.createGroup(); + + assertEquals(1, groupRow.getNumUniqueChannels()); } @Test - public void testGetNumUniqueChildren_multiChannel() { + public void testGetNumUniqueChildren_multiChannel() throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + List<ExpandableNotificationRow> childRows = - mGroupRow.getChildrenContainer().getAttachedChildren(); + group.getChildrenContainer().getAttachedChildren(); // Give each child a unique channel id/name. int i = 0; for (ExpandableNotificationRow childRow : childRows) { @@ -412,25 +436,29 @@ public class ExpandableNotificationRowTest extends SysuiTestCase { i++; } - assertEquals(3, mGroupRow.getNumUniqueChannels()); + assertEquals(3, group.getNumUniqueChannels()); } @Test public void testIconScrollXAfterTranslationAndReset() throws Exception { - mGroupRow.setDismissUsingRowTranslationX(false); - mGroupRow.setTranslation(50); - assertEquals(50, -mGroupRow.getEntry().getIcons().getShelfIcon().getScrollX()); + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + + group.setDismissUsingRowTranslationX(false); + group.setTranslation(50); + assertEquals(50, -group.getEntry().getIcons().getShelfIcon().getScrollX()); - mGroupRow.resetTranslation(); - assertEquals(0, mGroupRow.getEntry().getIcons().getShelfIcon().getScrollX()); + group.resetTranslation(); + assertEquals(0, group.getEntry().getIcons().getShelfIcon().getScrollX()); } @Test - public void testIsExpanded_userExpanded() { - mGroupRow.setExpandable(true); - Assert.assertFalse(mGroupRow.isExpanded()); - mGroupRow.setUserExpanded(true); - Assert.assertTrue(mGroupRow.isExpanded()); + public void testIsExpanded_userExpanded() throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + + group.setExpandable(true); + Assert.assertFalse(group.isExpanded()); + group.setUserExpanded(true); + Assert.assertTrue(group.isExpanded()); } @Test @@ -549,72 +577,80 @@ public class ExpandableNotificationRowTest extends SysuiTestCase { } @Test - public void applyRoundnessAndInv_should_be_immediately_applied_on_childrenContainer_legacy() { - mGroupRow.useRoundnessSourceTypes(false); - Assert.assertEquals(0f, mGroupRow.getBottomRoundness(), 0.001f); - Assert.assertEquals(0f, mGroupRow.getChildrenContainer().getBottomRoundness(), 0.001f); + public void applyRoundnessAndInv_should_be_immediately_applied_on_childrenContainer_legacy() + throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + group.useRoundnessSourceTypes(false); + Assert.assertEquals(0f, group.getBottomRoundness(), 0.001f); + Assert.assertEquals(0f, group.getChildrenContainer().getBottomRoundness(), 0.001f); - mGroupRow.requestBottomRoundness(1f, SourceType.from(""), false); + group.requestBottomRoundness(1f, SourceType.from(""), false); - Assert.assertEquals(1f, mGroupRow.getBottomRoundness(), 0.001f); - Assert.assertEquals(1f, mGroupRow.getChildrenContainer().getBottomRoundness(), 0.001f); + Assert.assertEquals(1f, group.getBottomRoundness(), 0.001f); + Assert.assertEquals(1f, group.getChildrenContainer().getBottomRoundness(), 0.001f); } @Test - public void applyRoundnessAndInvalidate_should_be_immediately_applied_on_childrenContainer() { - mGroupRow.useRoundnessSourceTypes(true); - Assert.assertEquals(0f, mGroupRow.getBottomRoundness(), 0.001f); - Assert.assertEquals(0f, mGroupRow.getChildrenContainer().getBottomRoundness(), 0.001f); + public void applyRoundnessAndInvalidate_should_be_immediately_applied_on_childrenContainer() + throws Exception { + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + group.useRoundnessSourceTypes(true); + Assert.assertEquals(0f, group.getBottomRoundness(), 0.001f); + Assert.assertEquals(0f, group.getChildrenContainer().getBottomRoundness(), 0.001f); - mGroupRow.requestBottomRoundness(1f, SourceType.from(""), false); + group.requestBottomRoundness(1f, SourceType.from(""), false); - Assert.assertEquals(1f, mGroupRow.getBottomRoundness(), 0.001f); - Assert.assertEquals(1f, mGroupRow.getChildrenContainer().getBottomRoundness(), 0.001f); + Assert.assertEquals(1f, group.getBottomRoundness(), 0.001f); + Assert.assertEquals(1f, group.getChildrenContainer().getBottomRoundness(), 0.001f); } @Test public void testSetContentAnimationRunning_Run() throws Exception { // Create views for the notification row. + ExpandableNotificationRow row = mNotificationTestHelper.createRow(); NotificationContentView publicLayout = mock(NotificationContentView.class); - mNotifRow.setPublicLayout(publicLayout); + row.setPublicLayout(publicLayout); NotificationContentView privateLayout = mock(NotificationContentView.class); - mNotifRow.setPrivateLayout(privateLayout); + row.setPrivateLayout(privateLayout); - mNotifRow.setAnimationRunning(true); + row.setAnimationRunning(true); verify(publicLayout, times(1)).setContentAnimationRunning(true); verify(privateLayout, times(1)).setContentAnimationRunning(true); } @Test - public void testSetContentAnimationRunning_Stop() { + public void testSetContentAnimationRunning_Stop() throws Exception { // Create views for the notification row. + ExpandableNotificationRow row = mNotificationTestHelper.createRow(); NotificationContentView publicLayout = mock(NotificationContentView.class); - mNotifRow.setPublicLayout(publicLayout); + row.setPublicLayout(publicLayout); NotificationContentView privateLayout = mock(NotificationContentView.class); - mNotifRow.setPrivateLayout(privateLayout); + row.setPrivateLayout(privateLayout); - mNotifRow.setAnimationRunning(false); + row.setAnimationRunning(false); verify(publicLayout, times(1)).setContentAnimationRunning(false); verify(privateLayout, times(1)).setContentAnimationRunning(false); } @Test - public void testSetContentAnimationRunningInGroupChild_Run() { - // Creates parent views on mGroupRow. + public void testSetContentAnimationRunningInGroupChild_Run() throws Exception { + // Creates parent views on groupRow. + ExpandableNotificationRow groupRow = mNotificationTestHelper.createGroup(); NotificationContentView publicParentLayout = mock(NotificationContentView.class); - mGroupRow.setPublicLayout(publicParentLayout); + groupRow.setPublicLayout(publicParentLayout); NotificationContentView privateParentLayout = mock(NotificationContentView.class); - mGroupRow.setPrivateLayout(privateParentLayout); + groupRow.setPrivateLayout(privateParentLayout); - // Create child views on mNotifRow. + // Create child views on row. + ExpandableNotificationRow row = mNotificationTestHelper.createRow(); NotificationContentView publicChildLayout = mock(NotificationContentView.class); - mNotifRow.setPublicLayout(publicChildLayout); + row.setPublicLayout(publicChildLayout); NotificationContentView privateChildLayout = mock(NotificationContentView.class); - mNotifRow.setPrivateLayout(privateChildLayout); - when(mNotifRow.isGroupExpanded()).thenReturn(true); - setMockChildrenContainer(mGroupRow, mNotifRow); + row.setPrivateLayout(privateChildLayout); + when(row.isGroupExpanded()).thenReturn(true); + setMockChildrenContainer(groupRow, row); - mGroupRow.setAnimationRunning(true); + groupRow.setAnimationRunning(true); verify(publicParentLayout, times(1)).setContentAnimationRunning(true); verify(privateParentLayout, times(1)).setContentAnimationRunning(true); // The child layouts should be started too. @@ -624,23 +660,25 @@ public class ExpandableNotificationRowTest extends SysuiTestCase { @Test - public void testSetIconAnimationRunningGroup_Run() { + public void testSetIconAnimationRunningGroup_Run() throws Exception { // Create views for a group row. + ExpandableNotificationRow group = mNotificationTestHelper.createGroup(); + ExpandableNotificationRow child = mNotificationTestHelper.createRow(); NotificationContentView publicParentLayout = mock(NotificationContentView.class); - mGroupRow.setPublicLayout(publicParentLayout); + group.setPublicLayout(publicParentLayout); NotificationContentView privateParentLayout = mock(NotificationContentView.class); - mGroupRow.setPrivateLayout(privateParentLayout); - when(mGroupRow.isGroupExpanded()).thenReturn(true); + group.setPrivateLayout(privateParentLayout); + when(group.isGroupExpanded()).thenReturn(true); - // Sets up mNotifRow as a child ExpandableNotificationRow. + // Add the child to the group. NotificationContentView publicChildLayout = mock(NotificationContentView.class); - mNotifRow.setPublicLayout(publicChildLayout); + child.setPublicLayout(publicChildLayout); NotificationContentView privateChildLayout = mock(NotificationContentView.class); - mNotifRow.setPrivateLayout(privateChildLayout); - when(mNotifRow.isGroupExpanded()).thenReturn(true); + child.setPrivateLayout(privateChildLayout); + when(child.isGroupExpanded()).thenReturn(true); NotificationChildrenContainer mockContainer = - setMockChildrenContainer(mGroupRow, mNotifRow); + setMockChildrenContainer(group, child); // Mock the children view wrappers, and give them each an icon. NotificationViewWrapper mockViewWrapper = mock(NotificationViewWrapper.class); @@ -663,7 +701,7 @@ public class ExpandableNotificationRowTest extends SysuiTestCase { AnimatedVectorDrawable lowPriVectorDrawable = mock(AnimatedVectorDrawable.class); setDrawableIconsInImageView(mockLowPriorityIcon, lowPriDrawable, lowPriVectorDrawable); - mGroupRow.setAnimationRunning(true); + group.setAnimationRunning(true); verify(drawable, times(1)).start(); verify(vectorDrawable, times(1)).start(); verify(lowPriDrawable, times(1)).start(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java index e6f6a8d696b8..aca9c563de04 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java @@ -40,7 +40,6 @@ import android.content.Context; import android.content.Intent; import android.content.pm.LauncherApps; import android.graphics.drawable.Icon; -import android.os.Handler; import android.os.UserHandle; import android.service.notification.StatusBarNotification; import android.testing.TestableLooper; @@ -49,7 +48,6 @@ import android.view.LayoutInflater; import android.widget.RemoteViews; import com.android.internal.logging.MetricsLogger; -import com.android.internal.logging.UiEventLogger; import com.android.systemui.TestableDependency; import com.android.systemui.classifier.FalsingCollectorFake; import com.android.systemui.classifier.FalsingManagerFake; @@ -57,7 +55,6 @@ import com.android.systemui.flags.FeatureFlags; import com.android.systemui.media.controls.util.MediaFeatureFlag; import com.android.systemui.media.dialog.MediaOutputDialogFactory; import com.android.systemui.plugins.statusbar.StatusBarStateController; -import com.android.systemui.shade.ShadeExpansionStateManager; import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.NotificationRemoteInputManager; import com.android.systemui.statusbar.NotificationShadeWindowController; @@ -68,7 +65,6 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection; import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener; -import com.android.systemui.statusbar.notification.collection.provider.VisualStabilityProvider; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager; import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager; import com.android.systemui.statusbar.notification.icon.IconBuilder; @@ -77,11 +73,8 @@ import com.android.systemui.statusbar.notification.people.PeopleNotificationIden import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.ExpandableNotificationRowLogger; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.OnExpandClickListener; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag; -import com.android.systemui.statusbar.phone.ConfigurationControllerImpl; import com.android.systemui.statusbar.phone.HeadsUpManagerPhone; import com.android.systemui.statusbar.phone.KeyguardBypassController; -import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; -import com.android.systemui.statusbar.policy.HeadsUpManagerLogger; import com.android.systemui.statusbar.policy.InflatedSmartReplyState; import com.android.systemui.statusbar.policy.InflatedSmartReplyViewHolder; import com.android.systemui.statusbar.policy.SmartReplyConstants; @@ -121,12 +114,12 @@ public class NotificationTestHelper { private final GroupMembershipManager mGroupMembershipManager; private final GroupExpansionManager mGroupExpansionManager; private ExpandableNotificationRow mRow; - private HeadsUpManagerPhone mHeadsUpManager; + private final HeadsUpManagerPhone mHeadsUpManager; private final NotifBindPipeline mBindPipeline; private final NotifCollectionListener mBindPipelineEntryListener; private final RowContentBindStage mBindStage; private final IconManager mIconManager; - private StatusBarStateController mStatusBarStateController; + private final StatusBarStateController mStatusBarStateController; private final PeopleNotificationIdentifier mPeopleNotificationIdentifier; public final OnUserInteractionCallback mOnUserInteractionCallback; public final Runnable mFutureDismissalRunnable; @@ -146,19 +139,7 @@ public class NotificationTestHelper { mStatusBarStateController = mock(StatusBarStateController.class); mGroupMembershipManager = mock(GroupMembershipManager.class); mGroupExpansionManager = mock(GroupExpansionManager.class); - mHeadsUpManager = new HeadsUpManagerPhone( - mContext, - mock(HeadsUpManagerLogger.class), - mStatusBarStateController, - mock(KeyguardBypassController.class), - mock(GroupMembershipManager.class), - mock(VisualStabilityProvider.class), - mock(ConfigurationControllerImpl.class), - new Handler(mTestLooper.getLooper()), - mock(AccessibilityManagerWrapper.class), - mock(UiEventLogger.class), - mock(ShadeExpansionStateManager.class) - ); + mHeadsUpManager = mock(HeadsUpManagerPhone.class); mIconManager = new IconManager( mock(CommonNotifCollection.class), mock(LauncherApps.class), |