Track USI session with bluetooth stylus position.

Bug: 273734196
Test: StylusManagerTest
Change-Id: Ifb5a66b60718719143b1866ada2420e0e0973f3e
This commit is contained in:
Vania Januar
2023-03-20 10:36:54 +00:00
parent f2c1506ea0
commit bc56e730f7
2 changed files with 34 additions and 10 deletions

View File

@@ -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
}

View File

@@ -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
)
}