port status bar logs to Tron V2
Bug: 33303260
Test: runtest --path frameworks/base/core/tests/coretests/src/com/android/internal/logging/legacy/ && runtest --path frameworks/base/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone
Change-Id: I7746b846247e930617f0b440217635e71ed58bb5
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
index 309559b..21c7fce 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
@@ -22,11 +22,20 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import android.metrics.LogMaker;
+import android.metrics.MetricsReader;
import android.support.test.filters.SmallTest;
+import android.support.test.metricshelper.MetricsAsserts;
import android.support.test.runner.AndroidJUnit4;
+import android.util.DisplayMetrics;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.keyguard.KeyguardHostView.OnDismissAction;
import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.ActivatableNotificationView;
+import com.android.systemui.statusbar.KeyguardIndicationController;
+import com.android.systemui.statusbar.NotificationData;
+import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
import org.junit.Before;
import org.junit.Test;
@@ -37,12 +46,22 @@
public class StatusBarTest extends SysuiTestCase {
StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
+ UnlockMethodCache mUnlockMethodCache;
+ KeyguardIndicationController mKeyguardIndicationController;
+ NotificationStackScrollLayout mStackScroller;
StatusBar mStatusBar;
+ private MetricsReader mMetricsReader;
+ private DisplayMetrics mDisplayMetrics = new DisplayMetrics();
+
@Before
public void setup() {
mStatusBarKeyguardViewManager = mock(StatusBarKeyguardViewManager.class);
- mStatusBar = new TestableStatusBar(mStatusBarKeyguardViewManager);
+ mUnlockMethodCache = mock(UnlockMethodCache.class);
+ mKeyguardIndicationController = mock(KeyguardIndicationController.class);
+ mStackScroller = mock(NotificationStackScrollLayout.class);
+ mStatusBar = new TestableStatusBar(mStatusBarKeyguardViewManager, mUnlockMethodCache,
+ mKeyguardIndicationController, mStackScroller);
doAnswer(invocation -> {
OnDismissAction onDismissAction = (OnDismissAction) invocation.getArguments()[0];
@@ -55,6 +74,11 @@
runnable.run();
return null;
}).when(mStatusBarKeyguardViewManager).addAfterKeyguardGoneRunnable(any());
+
+ when(mStackScroller.getActivatedChild()).thenReturn(null);
+
+ mMetricsReader = new MetricsReader();
+ mMetricsReader.checkpoint(); // clear out old logs
}
@Test
@@ -81,9 +105,114 @@
mStatusBar.executeRunnableDismissingKeyguard(null, null, false, false, false);
}
+ @Test
+ public void lockscreenStateMetrics_notShowing() {
+ // uninteresting state, except that fingerprint must be non-zero
+ when(mStatusBarKeyguardViewManager.isOccluded()).thenReturn(false);
+ when(mUnlockMethodCache.canSkipBouncer()).thenReturn(true);
+ // interesting state
+ when(mStatusBarKeyguardViewManager.isShowing()).thenReturn(false);
+ when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false);
+ when(mUnlockMethodCache.isMethodSecure()).thenReturn(false);
+
+ mStatusBar.onKeyguardViewManagerStatesUpdated();
+
+ MetricsAsserts.assertHasLog("missing hidden insecure lockscreen log", mMetricsReader,
+ new LogMaker(MetricsEvent.LOCKSCREEN)
+ .setType(MetricsEvent.TYPE_CLOSE)
+ .setSubtype(0));
+ }
+
+ @Test
+ public void lockscreenStateMetrics_notShowing_secure() {
+ // uninteresting state, except that fingerprint must be non-zero
+ when(mStatusBarKeyguardViewManager.isOccluded()).thenReturn(false);
+ when(mUnlockMethodCache.canSkipBouncer()).thenReturn(true);
+ // interesting state
+ when(mStatusBarKeyguardViewManager.isShowing()).thenReturn(false);
+ when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false);
+ when(mUnlockMethodCache.isMethodSecure()).thenReturn(true);
+
+ mStatusBar.onKeyguardViewManagerStatesUpdated();
+
+ MetricsAsserts.assertHasLog("missing hidden secure lockscreen log", mMetricsReader,
+ new LogMaker(MetricsEvent.LOCKSCREEN)
+ .setType(MetricsEvent.TYPE_CLOSE)
+ .setSubtype(1));
+ }
+
+ @Test
+ public void lockscreenStateMetrics_isShowing() {
+ // uninteresting state, except that fingerprint must be non-zero
+ when(mStatusBarKeyguardViewManager.isOccluded()).thenReturn(false);
+ when(mUnlockMethodCache.canSkipBouncer()).thenReturn(true);
+ // interesting state
+ when(mStatusBarKeyguardViewManager.isShowing()).thenReturn(true);
+ when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false);
+ when(mUnlockMethodCache.isMethodSecure()).thenReturn(false);
+
+ mStatusBar.onKeyguardViewManagerStatesUpdated();
+
+ MetricsAsserts.assertHasLog("missing insecure lockscreen showing", mMetricsReader,
+ new LogMaker(MetricsEvent.LOCKSCREEN)
+ .setType(MetricsEvent.TYPE_OPEN)
+ .setSubtype(0));
+ }
+
+ @Test
+ public void lockscreenStateMetrics_isShowing_secure() {
+ // uninteresting state, except that fingerprint must be non-zero
+ when(mStatusBarKeyguardViewManager.isOccluded()).thenReturn(false);
+ when(mUnlockMethodCache.canSkipBouncer()).thenReturn(true);
+ // interesting state
+ when(mStatusBarKeyguardViewManager.isShowing()).thenReturn(true);
+ when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false);
+ when(mUnlockMethodCache.isMethodSecure()).thenReturn(true);
+
+ mStatusBar.onKeyguardViewManagerStatesUpdated();
+
+ MetricsAsserts.assertHasLog("missing secure lockscreen showing log", mMetricsReader,
+ new LogMaker(MetricsEvent.LOCKSCREEN)
+ .setType(MetricsEvent.TYPE_OPEN)
+ .setSubtype(1));
+ }
+
+ @Test
+ public void lockscreenStateMetrics_isShowingBouncer() {
+ // uninteresting state, except that fingerprint must be non-zero
+ when(mStatusBarKeyguardViewManager.isOccluded()).thenReturn(false);
+ when(mUnlockMethodCache.canSkipBouncer()).thenReturn(true);
+ // interesting state
+ when(mStatusBarKeyguardViewManager.isShowing()).thenReturn(true);
+ when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(true);
+ when(mUnlockMethodCache.isMethodSecure()).thenReturn(true);
+
+ mStatusBar.onKeyguardViewManagerStatesUpdated();
+
+ MetricsAsserts.assertHasLog("missing bouncer log", mMetricsReader,
+ new LogMaker(MetricsEvent.BOUNCER)
+ .setType(MetricsEvent.TYPE_OPEN)
+ .setSubtype(1));
+ }
+
+ @Test
+ public void onActivatedMetrics() {
+ ActivatableNotificationView view = mock(ActivatableNotificationView.class);
+ mStatusBar.onActivated(view);
+
+ MetricsAsserts.assertHasLog("missing lockscreen note tap log", mMetricsReader,
+ new LogMaker(MetricsEvent.ACTION_LS_NOTE)
+ .setType(MetricsEvent.TYPE_ACTION));
+ }
+
static class TestableStatusBar extends StatusBar {
- public TestableStatusBar(StatusBarKeyguardViewManager man) {
+ public TestableStatusBar(StatusBarKeyguardViewManager man,
+ UnlockMethodCache unlock, KeyguardIndicationController key,
+ NotificationStackScrollLayout stack) {
mStatusBarKeyguardViewManager = man;
+ mUnlockMethodCache = unlock;
+ mKeyguardIndicationController = key;
+ mStackScroller = stack;
}
@Override