void BluetoothPairingListener::Notify(const BluetoothSignal& aData) { InfallibleTArray<BluetoothNamedValue> arr; BluetoothValue value = aData.value(); if (aData.name().EqualsLiteral("PairingRequest")) { MOZ_ASSERT(value.type() == BluetoothValue::TArrayOfBluetoothNamedValue); const InfallibleTArray<BluetoothNamedValue>& arr = value.get_ArrayOfBluetoothNamedValue(); MOZ_ASSERT(arr.Length() == 4 && arr[0].value().type() == BluetoothValue::TnsString && // address arr[1].value().type() == BluetoothValue::TnsString && // name arr[2].value().type() == BluetoothValue::TnsString && // passkey arr[3].value().type() == BluetoothValue::TnsString); // type nsString address = arr[0].value().get_nsString(); nsString name = arr[1].value().get_nsString(); nsString passkey = arr[2].value().get_nsString(); nsString type = arr[3].value().get_nsString(); // Notify pairing listener of pairing requests DispatchPairingEvent(name, address, passkey, type); } else { BT_WARNING("Not handling pairing listener signal: %s", NS_ConvertUTF16toUTF8(aData.name()).get()); } }
void BluetoothPairingListener::Notify(const BluetoothSignal& aData) { InfallibleTArray<BluetoothNamedValue> arr; BluetoothValue value = aData.value(); if (aData.name().EqualsLiteral("PairingRequest")) { MOZ_ASSERT(value.type() == BluetoothValue::TArrayOfBluetoothNamedValue); const InfallibleTArray<BluetoothNamedValue>& arr = value.get_ArrayOfBluetoothNamedValue(); MOZ_ASSERT(arr.Length() == 4 && arr[0].value().type() == BluetoothValue::TnsString && // address arr[1].value().type() == BluetoothValue::TnsString && // name arr[2].value().type() == BluetoothValue::TnsString && // passkey arr[3].value().type() == BluetoothValue::TnsString); // type nsString deviceAddress = arr[0].value().get_nsString(); nsString deviceName = arr[1].value().get_nsString(); nsString passkey = arr[2].value().get_nsString(); nsString type = arr[3].value().get_nsString(); // Create a temporary device with deviceAddress and deviceName InfallibleTArray<BluetoothNamedValue> props; BT_APPEND_NAMED_VALUE(props, "Address", deviceAddress); BT_APPEND_NAMED_VALUE(props, "Name", deviceName); nsRefPtr<BluetoothDevice> device = BluetoothDevice::Create(GetOwner(), props); // Notify pairing listener of pairing requests DispatchPairingEvent(device, passkey, type); } else { BT_WARNING("Not handling pairing listener signal: %s", NS_ConvertUTF16toUTF8(aData.name()).get()); } }