When gamepad enumeration occurs, the Gamepad API checks the vendor and product IDs of enumerated devices against a list of known gamepads. When a recognized gamepad is found, an enumeration value is recorded as Gamepad.KnownGamepadConnected. The enumeration value is defined in a way that does not specify the vendor or product IDs.
Since we only record metrics when the device is found on our list and the list is publicly available, it is simple to reverse the enumeration value to find the vendor and product IDs. Using the enumeration value does not provide any additional privacy benefit beyond recording the device IDs directly.
To reduce the maintenance burden of the gamepad ID list, the Gamepad.KnownGamepadConnected enumeration should be replaced with an integer value that combines the vendor and product IDs.
The recorded value should be a 31-bit integer value that combines the 16-bit vendor and product ID. There are few enough vendor IDs with the high bit set that we should be able to treat it as a 15-bit value. See: http://www.linux-usb.org/usb.ids
This change should be made before M73 branch point (Jan 24) to avoid collecting more data with the old enum values.
Comment 1 by bugdroid
, Today (7 hours ago)