Add tests for MetricsLogger events.
This makes the MetricsLogger a local, mockable instance, and adds unit test
coverage for GestureLauncherService's interaction with it.
Test: ran tests.
Change-Id: I581c100be7eee4ef6e5d8218d65e694d9bf8e0a5
diff --git a/services/core/java/com/android/server/GestureLauncherService.java b/services/core/java/com/android/server/GestureLauncherService.java
index 5727cd8..13ab7c8 100644
--- a/services/core/java/com/android/server/GestureLauncherService.java
+++ b/services/core/java/com/android/server/GestureLauncherService.java
@@ -66,6 +66,7 @@
private Sensor mCameraLaunchSensor;
private Context mContext;
+ private final MetricsLogger mMetricsLogger;
/** The wake lock held when a gesture is detected. */
private WakeLock mWakeLock;
@@ -109,8 +110,14 @@
private long mLastPowerDown;
public GestureLauncherService(Context context) {
+ this(context, new MetricsLogger());
+ }
+
+ @VisibleForTesting
+ GestureLauncherService(Context context, MetricsLogger metricsLogger) {
super(context);
mContext = context;
+ mMetricsLogger = metricsLogger;
}
public void onStart() {
@@ -274,11 +281,11 @@
launched = handleCameraLaunchGesture(false /* useWakelock */,
StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP);
if (launched) {
- MetricsLogger.action(mContext, MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE,
+ mMetricsLogger.action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE,
(int) doubleTapInterval);
}
}
- MetricsLogger.histogram(mContext, "power_double_tap_interval", (int) doubleTapInterval);
+ mMetricsLogger.histogram("power_double_tap_interval", (int) doubleTapInterval);
outLaunched.value = launched;
return intercept && launched;
}
@@ -347,7 +354,7 @@
}
if (handleCameraLaunchGesture(true /* useWakelock */,
StatusBarManager.CAMERA_LAUNCH_SOURCE_WIGGLE)) {
- MetricsLogger.action(mContext, MetricsEvent.ACTION_WIGGLE_CAMERA_GESTURE);
+ mMetricsLogger.action(MetricsEvent.ACTION_WIGGLE_CAMERA_GESTURE);
trackCameraLaunchEvent(event);
}
return;
diff --git a/services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java b/services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java
index b8dc1e3..9c1f3f5 100644
--- a/services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java
@@ -19,6 +19,8 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -36,6 +38,8 @@
import android.view.KeyEvent;
import android.util.MutableBoolean;
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.util.test.FakeSettingsProvider;
import com.android.server.LocalServices;
import com.android.server.statusbar.StatusBarManagerInternal;
@@ -68,6 +72,7 @@
private @Mock Context mContext;
private @Mock Resources mResources;
private @Mock StatusBarManagerInternal mStatusBarManagerInternal;
+ private @Mock MetricsLogger mMetricsLogger;
private MockContentResolver mContentResolver;
private GestureLauncherService mGestureLauncherService;
@@ -92,7 +97,7 @@
mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
when(mContext.getContentResolver()).thenReturn(mContentResolver);
- mGestureLauncherService = new GestureLauncherService(mContext);
+ mGestureLauncherService = new GestureLauncherService(mContext, mMetricsLogger);
}
@Test
@@ -190,7 +195,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -198,6 +204,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -216,7 +225,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -224,6 +234,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -244,7 +257,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = false;
@@ -254,6 +268,8 @@
assertTrue(outLaunched.value);
verify(mStatusBarManagerInternal).onCameraLaunchGestureDetected(
StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP);
+ verify(mMetricsLogger)
+ .action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) interval);
}
@Test
@@ -274,7 +290,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -282,6 +299,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -300,7 +320,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -308,6 +329,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -326,7 +350,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -334,6 +359,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -352,7 +380,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -360,6 +389,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -380,7 +412,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
intercepted = mGestureLauncherService.interceptPowerKeyDown(keyEvent, interactive,
@@ -389,6 +422,9 @@
assertTrue(outLaunched.value);
verify(mStatusBarManagerInternal).onCameraLaunchGestureDetected(
StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP);
+ verify(mMetricsLogger)
+ .action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) interval);
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -409,7 +445,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -417,6 +454,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -435,7 +475,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -443,6 +484,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
private void withCameraDoubleTapPowerEnableConfigValue(boolean enableConfigValue) {