BluetoothAdapterObserver::DeviceChanged is a catch-all event that gets called for all events that pertain to a device. This leads to clients having to keep the state of a device themselves to understand what changed when DeviceChanged is called. Some clients just assume that the DeviceChanged is called whenever an advertisement is received causing to incorrectly dispatch events.
// Called when the result of one of the following methods of the device
// |device| changes:
// * GetAddress() // We already have DeviceAddressChanged.
// * GetAppearance() // Should be part of "AdvertisementReceived"
// * GetBluetoothClass() // Should be part of "ClassicDeviceFound"
// * GetInquiryRSSI() // Should be part of "AdvertisementReceived"
// * GetInquiryTxPower() // Ditto.
// * GetUUIDs() // Ditto.
// * GetServiceData() // Ditto.
// * GetServiceDataUUIDs() // Ditto.
// * GetServiceDataForUUID() // Ditto.
// * GetManufacturerData() // Ditto.
// * GetManufacturerDataIDs() // Ditto.
// * GetManufacturerDataForID() // Ditto.
// * GetAdvertisingDataFlags() // Ditto.
// * IsConnectable() // Ditto.
// * IsConnected() // Should be part of DeviceConnectionStateChanged
// * IsConnecting() // Ditto.
// * IsGattConnected() // Ditto.
// * IsPaired() // We already have DevicePairedChanged
Comment 1 by sheriffbot@chromium.org
, Apr 11 2018Status: Untriaged (was: Available)