Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java +3 −3 Original line number Diff line number Diff line Loading @@ -86,6 +86,8 @@ import com.android.systemui.util.CarrierConfigTracker.CarrierConfigChangedListen import com.android.systemui.util.CarrierConfigTracker.DefaultDataSubscriptionChangedListener; import com.android.systemui.util.settings.SecureSettings; import kotlin.Unit; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; Loading @@ -96,8 +98,6 @@ import java.util.concurrent.Executor; import javax.inject.Inject; import kotlin.Unit; /** * Contains the collapsed status bar and handles hiding/showing based on disable flags * and keyguard state. Also manages lifecycle to make sure the views it contains are being Loading Loading @@ -606,7 +606,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue // Hide notifications if the disable flag is set or we have an ongoing call. if (disableNotifications || hasOngoingCall) { hideNotificationIconArea(animate); hideNotificationIconArea(animate && !hasOngoingCall); } else { showNotificationIconArea(animate); } Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java +27 −31 Original line number Diff line number Diff line Loading @@ -24,13 +24,8 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Fragment; Loading @@ -42,8 +37,6 @@ import android.provider.Settings; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper.RunWithLooper; import android.view.View; import android.view.ViewPropertyAnimator; import android.widget.FrameLayout; import androidx.test.filters.SmallTest; Loading Loading @@ -283,15 +276,15 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); fragment.disable(DEFAULT_DISPLAY, 0, 0, false); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE)); assertEquals(View.VISIBLE, mNotificationAreaInner.getVisibility()); fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); } @Test Loading Loading @@ -323,7 +316,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are hidden assertEquals(View.INVISIBLE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.INVISIBLE, getEndSideContentView().getVisibility()); } Loading @@ -339,7 +332,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are shown assertEquals(View.VISIBLE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE)); assertEquals(View.VISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.VISIBLE, getEndSideContentView().getVisibility()); } Loading @@ -356,7 +349,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are hidden assertEquals(View.INVISIBLE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.INVISIBLE, getEndSideContentView().getVisibility()); // WHEN the shade is updated to no longer be open Loading @@ -367,7 +360,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are shown assertEquals(View.VISIBLE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE)); assertEquals(View.VISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.VISIBLE, getEndSideContentView().getVisibility()); } Loading @@ -381,7 +374,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are shown assertEquals(View.VISIBLE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE)); assertEquals(View.VISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.VISIBLE, getEndSideContentView().getVisibility()); } Loading @@ -395,7 +388,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are hidden assertEquals(View.GONE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.INVISIBLE, getEndSideContentView().getVisibility()); } Loading @@ -409,7 +402,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are hidden assertEquals(View.GONE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.INVISIBLE, getEndSideContentView().getVisibility()); // WHEN the transition has finished Loading @@ -418,7 +411,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are shown assertEquals(View.VISIBLE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE)); assertEquals(View.VISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.VISIBLE, getEndSideContentView().getVisibility()); } Loading Loading @@ -451,7 +444,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.ongoing_call_chip).getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); } @Test Loading Loading @@ -506,6 +499,20 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { mFragment.getView().findViewById(R.id.ongoing_call_chip).getVisibility()); } @Test public void disable_hasOngoingCall_hidesNotifsWithoutAnimation() { CollapsedStatusBarFragment fragment = resumeAndGetFragment(); fragment.disable(DEFAULT_DISPLAY, 0, 0, false); // Ongoing call started when(mOngoingCallController.hasOngoingCall()).thenReturn(true); fragment.disable(DEFAULT_DISPLAY, 0, 0, true); // Notification area is hidden without delay assertEquals(0f, mNotificationAreaInner.getAlpha(), 0.01); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); } @Test public void disable_isDozing_clockAndSystemInfoVisible() { CollapsedStatusBarFragment fragment = resumeAndGetFragment(); Loading Loading @@ -729,18 +736,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { private void setUpNotificationIconAreaController() { mMockNotificationAreaController = mock(NotificationIconAreaController.class); mNotificationAreaInner = mock(View.class); when(mNotificationAreaInner.getLayoutParams()).thenReturn( new FrameLayout.LayoutParams(100, 100)); // We should probably start using a real view so that we don't need to mock these methods. ViewPropertyAnimator viewPropertyAnimator = mock(ViewPropertyAnimator.class); when(mNotificationAreaInner.animate()).thenReturn(viewPropertyAnimator); when(viewPropertyAnimator.alpha(anyFloat())).thenReturn(viewPropertyAnimator); when(viewPropertyAnimator.setDuration(anyLong())).thenReturn(viewPropertyAnimator); when(viewPropertyAnimator.setInterpolator(any())).thenReturn(viewPropertyAnimator); when(viewPropertyAnimator.setStartDelay(anyLong())).thenReturn(viewPropertyAnimator); when(viewPropertyAnimator.withEndAction(any())).thenReturn(viewPropertyAnimator); mNotificationAreaInner = new View(mContext); when(mMockNotificationAreaController.getNotificationInnerAreaView()).thenReturn( mNotificationAreaInner); Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java +3 −3 Original line number Diff line number Diff line Loading @@ -86,6 +86,8 @@ import com.android.systemui.util.CarrierConfigTracker.CarrierConfigChangedListen import com.android.systemui.util.CarrierConfigTracker.DefaultDataSubscriptionChangedListener; import com.android.systemui.util.settings.SecureSettings; import kotlin.Unit; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; Loading @@ -96,8 +98,6 @@ import java.util.concurrent.Executor; import javax.inject.Inject; import kotlin.Unit; /** * Contains the collapsed status bar and handles hiding/showing based on disable flags * and keyguard state. Also manages lifecycle to make sure the views it contains are being Loading Loading @@ -606,7 +606,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue // Hide notifications if the disable flag is set or we have an ongoing call. if (disableNotifications || hasOngoingCall) { hideNotificationIconArea(animate); hideNotificationIconArea(animate && !hasOngoingCall); } else { showNotificationIconArea(animate); } Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java +27 −31 Original line number Diff line number Diff line Loading @@ -24,13 +24,8 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Fragment; Loading @@ -42,8 +37,6 @@ import android.provider.Settings; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper.RunWithLooper; import android.view.View; import android.view.ViewPropertyAnimator; import android.widget.FrameLayout; import androidx.test.filters.SmallTest; Loading Loading @@ -283,15 +276,15 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); fragment.disable(DEFAULT_DISPLAY, 0, 0, false); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE)); assertEquals(View.VISIBLE, mNotificationAreaInner.getVisibility()); fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); } @Test Loading Loading @@ -323,7 +316,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are hidden assertEquals(View.INVISIBLE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.INVISIBLE, getEndSideContentView().getVisibility()); } Loading @@ -339,7 +332,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are shown assertEquals(View.VISIBLE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE)); assertEquals(View.VISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.VISIBLE, getEndSideContentView().getVisibility()); } Loading @@ -356,7 +349,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are hidden assertEquals(View.INVISIBLE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.INVISIBLE, getEndSideContentView().getVisibility()); // WHEN the shade is updated to no longer be open Loading @@ -367,7 +360,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are shown assertEquals(View.VISIBLE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE)); assertEquals(View.VISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.VISIBLE, getEndSideContentView().getVisibility()); } Loading @@ -381,7 +374,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are shown assertEquals(View.VISIBLE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE)); assertEquals(View.VISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.VISIBLE, getEndSideContentView().getVisibility()); } Loading @@ -395,7 +388,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are hidden assertEquals(View.GONE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.INVISIBLE, getEndSideContentView().getVisibility()); } Loading @@ -409,7 +402,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are hidden assertEquals(View.GONE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.INVISIBLE, getEndSideContentView().getVisibility()); // WHEN the transition has finished Loading @@ -418,7 +411,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // THEN all views are shown assertEquals(View.VISIBLE, getClockView().getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE)); assertEquals(View.VISIBLE, mNotificationAreaInner.getVisibility()); assertEquals(View.VISIBLE, getEndSideContentView().getVisibility()); } Loading Loading @@ -451,7 +444,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.ongoing_call_chip).getVisibility()); verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.INVISIBLE)); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); } @Test Loading Loading @@ -506,6 +499,20 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { mFragment.getView().findViewById(R.id.ongoing_call_chip).getVisibility()); } @Test public void disable_hasOngoingCall_hidesNotifsWithoutAnimation() { CollapsedStatusBarFragment fragment = resumeAndGetFragment(); fragment.disable(DEFAULT_DISPLAY, 0, 0, false); // Ongoing call started when(mOngoingCallController.hasOngoingCall()).thenReturn(true); fragment.disable(DEFAULT_DISPLAY, 0, 0, true); // Notification area is hidden without delay assertEquals(0f, mNotificationAreaInner.getAlpha(), 0.01); assertEquals(View.INVISIBLE, mNotificationAreaInner.getVisibility()); } @Test public void disable_isDozing_clockAndSystemInfoVisible() { CollapsedStatusBarFragment fragment = resumeAndGetFragment(); Loading Loading @@ -729,18 +736,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { private void setUpNotificationIconAreaController() { mMockNotificationAreaController = mock(NotificationIconAreaController.class); mNotificationAreaInner = mock(View.class); when(mNotificationAreaInner.getLayoutParams()).thenReturn( new FrameLayout.LayoutParams(100, 100)); // We should probably start using a real view so that we don't need to mock these methods. ViewPropertyAnimator viewPropertyAnimator = mock(ViewPropertyAnimator.class); when(mNotificationAreaInner.animate()).thenReturn(viewPropertyAnimator); when(viewPropertyAnimator.alpha(anyFloat())).thenReturn(viewPropertyAnimator); when(viewPropertyAnimator.setDuration(anyLong())).thenReturn(viewPropertyAnimator); when(viewPropertyAnimator.setInterpolator(any())).thenReturn(viewPropertyAnimator); when(viewPropertyAnimator.setStartDelay(anyLong())).thenReturn(viewPropertyAnimator); when(viewPropertyAnimator.withEndAction(any())).thenReturn(viewPropertyAnimator); mNotificationAreaInner = new View(mContext); when(mMockNotificationAreaController.getNotificationInnerAreaView()).thenReturn( mNotificationAreaInner); Loading