diff --git a/packages/SystemUI/src/com/android/systemui/stylus/StylusManager.kt b/packages/SystemUI/src/com/android/systemui/stylus/StylusManager.kt index 9952cfd4e85bb..3805019d597ff 100644 --- a/packages/SystemUI/src/com/android/systemui/stylus/StylusManager.kt +++ b/packages/SystemUI/src/com/android/systemui/stylus/StylusManager.kt @@ -261,22 +261,26 @@ constructor( private fun trackAndLogUsiSession(deviceId: Int, batteryStateValid: Boolean) { // TODO(b/268618918) handle cases where an invalid battery callback from a previous stylus // is sent after the actual valid callback + val hasBtConnection = if (inputDeviceBtSessionIdMap.isEmpty()) 0 else 1 + if (batteryStateValid && usiSessionId == null) { logDebug { "USI battery newly present, entering new USI session: $deviceId" } usiSessionId = instanceIdSequence.newInstanceId() - uiEventLogger.logWithInstanceId( + uiEventLogger.logWithInstanceIdAndPosition( StylusUiEvent.USI_STYLUS_BATTERY_PRESENCE_FIRST_DETECTED, 0, null, - usiSessionId + usiSessionId, + hasBtConnection, ) } else if (!batteryStateValid && usiSessionId != null) { logDebug { "USI battery newly absent, exiting USI session: $deviceId" } - uiEventLogger.logWithInstanceId( + uiEventLogger.logWithInstanceIdAndPosition( StylusUiEvent.USI_STYLUS_BATTERY_PRESENCE_REMOVED, 0, null, - usiSessionId + usiSessionId, + hasBtConnection, ) usiSessionId = null } diff --git a/packages/SystemUI/tests/src/com/android/systemui/stylus/StylusManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/stylus/StylusManagerTest.kt index 4525ad27b7492..17f8ec2136a42 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/stylus/StylusManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/stylus/StylusManagerTest.kt @@ -507,11 +507,29 @@ class StylusManagerTest : SysuiTestCase() { stylusManager.onBatteryStateChanged(STYLUS_DEVICE_ID, 1, batteryState) verify(uiEventLogger, times(1)) - .logWithInstanceId( + .logWithInstanceIdAndPosition( StylusUiEvent.USI_STYLUS_BATTERY_PRESENCE_FIRST_DETECTED, 0, null, - InstanceId.fakeInstanceId(instanceIdSequenceFake.lastInstanceId) + InstanceId.fakeInstanceId(instanceIdSequenceFake.lastInstanceId), + 0, + ) + } + + @Test + fun onBatteryStateChanged_batteryPresent_btStylusPresent_logsSessionStart() { + whenever(batteryState.isPresent).thenReturn(true) + stylusManager.onInputDeviceAdded(BT_STYLUS_DEVICE_ID) + + stylusManager.onBatteryStateChanged(STYLUS_DEVICE_ID, 1, batteryState) + + verify(uiEventLogger, times(1)) + .logWithInstanceIdAndPosition( + StylusUiEvent.USI_STYLUS_BATTERY_PRESENCE_FIRST_DETECTED, + 0, + null, + InstanceId.fakeInstanceId(instanceIdSequenceFake.lastInstanceId), + 1, ) } @@ -545,19 +563,21 @@ class StylusManagerTest : SysuiTestCase() { stylusManager.onBatteryStateChanged(STYLUS_DEVICE_ID, 1, batteryState) verify(uiEventLogger, times(1)) - .logWithInstanceId( + .logWithInstanceIdAndPosition( StylusUiEvent.USI_STYLUS_BATTERY_PRESENCE_FIRST_DETECTED, 0, null, - instanceId + instanceId, + 0 ) verify(uiEventLogger, times(1)) - .logWithInstanceId( + .logWithInstanceIdAndPosition( StylusUiEvent.USI_STYLUS_BATTERY_PRESENCE_REMOVED, 0, null, - instanceId + instanceId, + 0 ) }