Loading android/app/src/com/android/bluetooth/gatt/AppScanStats.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -394,6 +394,15 @@ import java.util.Objects; } } } } @GuardedBy("sLock") private static void recordScreenOnOffMetrics(boolean isScreenOn) { if (isScreenOn) { MetricsLogger.getInstance().cacheCount(BluetoothProtoEnums.SCREEN_ON_EVENT, 1); } else { MetricsLogger.getInstance().cacheCount(BluetoothProtoEnums.SCREEN_OFF_EVENT, 1); } } private static int getScanWeight(int scanMode) { private static int getScanWeight(int scanMode) { switch (scanMode) { switch (scanMode) { case ScanSettings.SCAN_MODE_OPPORTUNISTIC: case ScanSettings.SCAN_MODE_OPPORTUNISTIC: Loading Loading @@ -439,6 +448,7 @@ import java.util.Objects; recordScanRadioDurationMetrics(); recordScanRadioDurationMetrics(); sRadioStartTime = SystemClock.elapsedRealtime(); sRadioStartTime = SystemClock.elapsedRealtime(); } } recordScreenOnOffMetrics(isScreenOn); sIsScreenOn = isScreenOn; sIsScreenOn = isScreenOn; } } } } Loading android/app/tests/unit/src/com/android/bluetooth/gatt/ScanManagerTest.java +22 −3 Original line number Original line Diff line number Diff line Loading @@ -37,6 +37,7 @@ import static org.mockito.Mockito.atMost; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.Mockito.when; Loading Loading @@ -1054,7 +1055,6 @@ public class ScanManagerTest { final boolean isFiltered = true; final boolean isFiltered = true; // Turn on screen // Turn on screen sendMessageWaitForProcessed(createScreenOnOffMessage(true)); sendMessageWaitForProcessed(createScreenOnOffMessage(true)); verify(mMetricsLogger, never()).cacheCount(anyInt(), anyLong()); Mockito.clearInvocations(mMetricsLogger); Mockito.clearInvocations(mMetricsLogger); // Create scan client // Create scan client ScanClient client = createScanClient(0, isFiltered, SCAN_MODE_LOW_POWER); ScanClient client = createScanClient(0, isFiltered, SCAN_MODE_LOW_POWER); Loading Loading @@ -1085,7 +1085,6 @@ public class ScanManagerTest { final boolean isFiltered = true; final boolean isFiltered = true; // Turn on screen // Turn on screen sendMessageWaitForProcessed(createScreenOnOffMessage(true)); sendMessageWaitForProcessed(createScreenOnOffMessage(true)); verify(mMetricsLogger, never()).cacheCount(anyInt(), anyLong()); Mockito.clearInvocations(mMetricsLogger); Mockito.clearInvocations(mMetricsLogger); // Create scan client // Create scan client ScanClient client = createScanClient(0, isFiltered, SCAN_MODE_LOW_POWER); ScanClient client = createScanClient(0, isFiltered, SCAN_MODE_LOW_POWER); Loading Loading @@ -1136,7 +1135,6 @@ public class ScanManagerTest { final boolean isFiltered = true; final boolean isFiltered = true; // Turn on screen // Turn on screen sendMessageWaitForProcessed(createScreenOnOffMessage(true)); sendMessageWaitForProcessed(createScreenOnOffMessage(true)); verify(mMetricsLogger, never()).cacheCount(anyInt(), anyLong()); Mockito.clearInvocations(mMetricsLogger); Mockito.clearInvocations(mMetricsLogger); // Create scan clients with different duty cycles // Create scan clients with different duty cycles ScanClient client = createScanClient(0, isFiltered, SCAN_MODE_LOW_POWER); ScanClient client = createScanClient(0, isFiltered, SCAN_MODE_LOW_POWER); Loading Loading @@ -1217,4 +1215,25 @@ public class ScanManagerTest { Mockito.clearInvocations(mMetricsLogger); Mockito.clearInvocations(mMetricsLogger); } } } } @Test public void testMetricsScreenOnOff() { // Turn off screen initially sendMessageWaitForProcessed(createScreenOnOffMessage(false)); Mockito.clearInvocations(mMetricsLogger); // Turn on screen sendMessageWaitForProcessed(createScreenOnOffMessage(true)); verify(mMetricsLogger, never()).cacheCount( eq(BluetoothProtoEnums.SCREEN_OFF_EVENT), anyLong()); verify(mMetricsLogger, times(1)).cacheCount( eq(BluetoothProtoEnums.SCREEN_ON_EVENT), anyLong()); Mockito.clearInvocations(mMetricsLogger); // Turn off screen sendMessageWaitForProcessed(createScreenOnOffMessage(false)); verify(mMetricsLogger, never()).cacheCount( eq(BluetoothProtoEnums.SCREEN_ON_EVENT), anyLong()); verify(mMetricsLogger, times(1)).cacheCount( eq(BluetoothProtoEnums.SCREEN_OFF_EVENT), anyLong()); Mockito.clearInvocations(mMetricsLogger); } } } Loading
android/app/src/com/android/bluetooth/gatt/AppScanStats.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -394,6 +394,15 @@ import java.util.Objects; } } } } @GuardedBy("sLock") private static void recordScreenOnOffMetrics(boolean isScreenOn) { if (isScreenOn) { MetricsLogger.getInstance().cacheCount(BluetoothProtoEnums.SCREEN_ON_EVENT, 1); } else { MetricsLogger.getInstance().cacheCount(BluetoothProtoEnums.SCREEN_OFF_EVENT, 1); } } private static int getScanWeight(int scanMode) { private static int getScanWeight(int scanMode) { switch (scanMode) { switch (scanMode) { case ScanSettings.SCAN_MODE_OPPORTUNISTIC: case ScanSettings.SCAN_MODE_OPPORTUNISTIC: Loading Loading @@ -439,6 +448,7 @@ import java.util.Objects; recordScanRadioDurationMetrics(); recordScanRadioDurationMetrics(); sRadioStartTime = SystemClock.elapsedRealtime(); sRadioStartTime = SystemClock.elapsedRealtime(); } } recordScreenOnOffMetrics(isScreenOn); sIsScreenOn = isScreenOn; sIsScreenOn = isScreenOn; } } } } Loading
android/app/tests/unit/src/com/android/bluetooth/gatt/ScanManagerTest.java +22 −3 Original line number Original line Diff line number Diff line Loading @@ -37,6 +37,7 @@ import static org.mockito.Mockito.atMost; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.Mockito.when; Loading Loading @@ -1054,7 +1055,6 @@ public class ScanManagerTest { final boolean isFiltered = true; final boolean isFiltered = true; // Turn on screen // Turn on screen sendMessageWaitForProcessed(createScreenOnOffMessage(true)); sendMessageWaitForProcessed(createScreenOnOffMessage(true)); verify(mMetricsLogger, never()).cacheCount(anyInt(), anyLong()); Mockito.clearInvocations(mMetricsLogger); Mockito.clearInvocations(mMetricsLogger); // Create scan client // Create scan client ScanClient client = createScanClient(0, isFiltered, SCAN_MODE_LOW_POWER); ScanClient client = createScanClient(0, isFiltered, SCAN_MODE_LOW_POWER); Loading Loading @@ -1085,7 +1085,6 @@ public class ScanManagerTest { final boolean isFiltered = true; final boolean isFiltered = true; // Turn on screen // Turn on screen sendMessageWaitForProcessed(createScreenOnOffMessage(true)); sendMessageWaitForProcessed(createScreenOnOffMessage(true)); verify(mMetricsLogger, never()).cacheCount(anyInt(), anyLong()); Mockito.clearInvocations(mMetricsLogger); Mockito.clearInvocations(mMetricsLogger); // Create scan client // Create scan client ScanClient client = createScanClient(0, isFiltered, SCAN_MODE_LOW_POWER); ScanClient client = createScanClient(0, isFiltered, SCAN_MODE_LOW_POWER); Loading Loading @@ -1136,7 +1135,6 @@ public class ScanManagerTest { final boolean isFiltered = true; final boolean isFiltered = true; // Turn on screen // Turn on screen sendMessageWaitForProcessed(createScreenOnOffMessage(true)); sendMessageWaitForProcessed(createScreenOnOffMessage(true)); verify(mMetricsLogger, never()).cacheCount(anyInt(), anyLong()); Mockito.clearInvocations(mMetricsLogger); Mockito.clearInvocations(mMetricsLogger); // Create scan clients with different duty cycles // Create scan clients with different duty cycles ScanClient client = createScanClient(0, isFiltered, SCAN_MODE_LOW_POWER); ScanClient client = createScanClient(0, isFiltered, SCAN_MODE_LOW_POWER); Loading Loading @@ -1217,4 +1215,25 @@ public class ScanManagerTest { Mockito.clearInvocations(mMetricsLogger); Mockito.clearInvocations(mMetricsLogger); } } } } @Test public void testMetricsScreenOnOff() { // Turn off screen initially sendMessageWaitForProcessed(createScreenOnOffMessage(false)); Mockito.clearInvocations(mMetricsLogger); // Turn on screen sendMessageWaitForProcessed(createScreenOnOffMessage(true)); verify(mMetricsLogger, never()).cacheCount( eq(BluetoothProtoEnums.SCREEN_OFF_EVENT), anyLong()); verify(mMetricsLogger, times(1)).cacheCount( eq(BluetoothProtoEnums.SCREEN_ON_EVENT), anyLong()); Mockito.clearInvocations(mMetricsLogger); // Turn off screen sendMessageWaitForProcessed(createScreenOnOffMessage(false)); verify(mMetricsLogger, never()).cacheCount( eq(BluetoothProtoEnums.SCREEN_ON_EVENT), anyLong()); verify(mMetricsLogger, times(1)).cacheCount( eq(BluetoothProtoEnums.SCREEN_OFF_EVENT), anyLong()); Mockito.clearInvocations(mMetricsLogger); } } }