Merge changes I4bcf2f7c,I2f15cac0 into main
* changes:
[Ongoing call] Don't animate hide of notifs when showing chip
[Status bar] Use a real view in tests
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java
index e2a4714..90e52d0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java
@@ -86,6 +86,8 @@
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;
@@ -96,8 +98,6 @@
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
@@ -606,7 +606,7 @@
// 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);
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java
index 9a77f0c..ed99961 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java
@@ -24,13 +24,8 @@
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;
@@ -42,8 +37,6 @@
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;
@@ -283,15 +276,15 @@
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
@@ -323,7 +316,7 @@
// 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());
}
@@ -339,7 +332,7 @@
// 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());
}
@@ -356,7 +349,7 @@
// 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
@@ -367,7 +360,7 @@
// 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());
}
@@ -381,7 +374,7 @@
// 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());
}
@@ -395,7 +388,7 @@
// 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());
}
@@ -409,7 +402,7 @@
// 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
@@ -418,7 +411,7 @@
// 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());
}
@@ -451,7 +444,7 @@
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
@@ -507,6 +500,20 @@
}
@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();
when(mStatusBarStateController.isDozing()).thenReturn(true);
@@ -729,18 +736,7 @@
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);