☠☠ backed out by eb96b66e39e1 ☠ ☠ | |
author | Thomas Zimmermann <tdz@users.sourceforge.net> |
Tue, 29 Sep 2015 14:07:01 +0200 | |
changeset 265050 | b906ed92f33a97060ae57711747f55dd789b3c70 |
parent 265049 | f03f71a3de8a647d7bfff0c1b6f42a11736f72df |
child 265051 | 02928720b1a06fea2617b1db1feb063b26a97638 |
push id | 65832 |
push user | kwierso@gmail.com |
push date | Tue, 29 Sep 2015 23:14:05 +0000 |
treeherder | mozilla-inbound@00ac696cdc86 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | brsun |
bugs | 1207649 |
milestone | 44.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/bluetooth/bluedroid/BluetoothDaemonHandsfreeInterface.cpp +++ b/dom/bluetooth/bluedroid/BluetoothDaemonHandsfreeInterface.cpp @@ -14,18 +14,18 @@ using namespace mozilla::ipc; // // Handsfree module // BluetoothHandsfreeNotificationHandler* BluetoothDaemonHandsfreeModule::sNotificationHandler; #if ANDROID_VERSION < 21 -nsString BluetoothDaemonHandsfreeModule::sConnectedDeviceAddress( - NS_ConvertUTF8toUTF16(BLUETOOTH_ADDRESS_NONE)); +BluetoothAddress BluetoothDaemonHandsfreeModule::sConnectedDeviceAddress( + BluetoothAddress::ANY); #endif void BluetoothDaemonHandsfreeModule::SetNotificationHandler( BluetoothHandsfreeNotificationHandler* aNotificationHandler) { sNotificationHandler = aNotificationHandler; } @@ -50,175 +50,168 @@ BluetoothDaemonHandsfreeModule::HandleSv (this->*(HandleOp[isNtf]))(aHeader, aPDU, aRes); } // Commands // nsresult BluetoothDaemonHandsfreeModule::ConnectCmd( - const nsAString& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_CONNECT, 6)); // Address - nsresult rv = PackPDU( - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), *pdu); + nsresult rv = PackPDU(aRemoteAddr, *pdu); if (NS_FAILED(rv)) { return rv; } rv = Send(pdu, aRes); if (NS_FAILED(rv)) { return rv; } unused << pdu.forget(); return NS_OK; } nsresult BluetoothDaemonHandsfreeModule::DisconnectCmd( - const nsAString& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_DISCONNECT, 6)); // Address - nsresult rv = PackPDU( - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), *pdu); + nsresult rv = PackPDU(aRemoteAddr, *pdu); if (NS_FAILED(rv)) { return rv; } rv = Send(pdu, aRes); if (NS_FAILED(rv)) { return rv; } unused << pdu.forget(); return NS_OK; } nsresult BluetoothDaemonHandsfreeModule::ConnectAudioCmd( - const nsAString& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_CONNECT_AUDIO, 6)); // Address - nsresult rv = PackPDU( - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), *pdu); + nsresult rv = PackPDU(aRemoteAddr, *pdu); if (NS_FAILED(rv)) { return rv; } rv = Send(pdu, aRes); if (NS_FAILED(rv)) { return rv; } unused << pdu.forget(); return NS_OK; } nsresult BluetoothDaemonHandsfreeModule::DisconnectAudioCmd( - const nsAString& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_DISCONNECT_AUDIO, 6)); // Address - nsresult rv = PackPDU( - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), *pdu); + nsresult rv = PackPDU(aRemoteAddr, *pdu); if (NS_FAILED(rv)) { return rv; } rv = Send(pdu, aRes); if (NS_FAILED(rv)) { return rv; } unused << pdu.forget(); return NS_OK; } nsresult BluetoothDaemonHandsfreeModule::StartVoiceRecognitionCmd( - const nsAString& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_START_VOICE_RECOGNITION, 6)); // Address (BlueZ 5.25) nsresult rv; #if ANDROID_VERSION >= 21 - rv = PackPDU( - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), *pdu); + rv = PackPDU(aRemoteAddr, *pdu); if (NS_FAILED(rv)) { return rv; } #endif rv = Send(pdu, aRes); if (NS_FAILED(rv)) { return rv; } unused << pdu.forget(); return NS_OK; } nsresult BluetoothDaemonHandsfreeModule::StopVoiceRecognitionCmd( - const nsAString& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_STOP_VOICE_RECOGNITION, 6)); // Address (BlueZ 5.25) nsresult rv; #if ANDROID_VERSION >= 21 - rv = PackPDU( - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), *pdu); + rv = PackPDU(aRemoteAddr, *pdu); if (NS_FAILED(rv)) { return rv; } #endif rv = Send(pdu, aRes); if (NS_FAILED(rv)) { return rv; } unused << pdu.forget(); return NS_OK; } nsresult BluetoothDaemonHandsfreeModule::VolumeControlCmd( BluetoothHandsfreeVolumeType aType, int aVolume, - const nsAString& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_VOLUME_CONTROL, 1 + // Volume type 1 + // Volume 6)); // Address (BlueZ 5.25) #if ANDROID_VERSION >= 21 nsresult rv = PackPDU( - aType, PackConversion<int, uint8_t>(aVolume), - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), *pdu); + aType, PackConversion<int, uint8_t>(aVolume), aRemoteAddr, *pdu); #else nsresult rv = PackPDU(aType, PackConversion<int, uint8_t>(aVolume), *pdu); #endif if (NS_FAILED(rv)) { return rv; } rv = Send(pdu, aRes); if (NS_FAILED(rv)) { @@ -254,30 +247,29 @@ BluetoothDaemonHandsfreeModule::DeviceSt return rv; } unused << pdu.forget(); return NS_OK; } nsresult BluetoothDaemonHandsfreeModule::CopsResponseCmd( - const char* aCops, const nsAString& aRemoteAddr, + const char* aCops, const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_COPS_RESPONSE, 0 + // Dynamically allocated 6)); // Address (BlueZ 5.25) #if ANDROID_VERSION >= 21 - nsresult rv = PackPDU( - PackCString0(nsDependentCString(aCops)), - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), *pdu); + nsresult rv = PackPDU(PackCString0(nsDependentCString(aCops)), aRemoteAddr, + *pdu); #else nsresult rv = PackPDU(PackCString0(nsDependentCString(aCops)), *pdu); #endif if (NS_FAILED(rv)) { return rv; } rv = Send(pdu, aRes); if (NS_FAILED(rv)) { @@ -287,17 +279,17 @@ BluetoothDaemonHandsfreeModule::CopsResp return NS_OK; } nsresult BluetoothDaemonHandsfreeModule::CindResponseCmd( int aSvc, int aNumActive, int aNumHeld, BluetoothHandsfreeCallState aCallSetupState, int aSignal, int aRoam, int aBattChg, - const nsAString& aRemoteAddr, + const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_CIND_RESPONSE, 1 + // Service 1 + // # Active @@ -312,17 +304,17 @@ BluetoothDaemonHandsfreeModule::CindResp nsresult rv = PackPDU( PackConversion<int, uint8_t>(aSvc), PackConversion<int, uint8_t>(aNumActive), PackConversion<int, uint8_t>(aNumHeld), aCallSetupState, PackConversion<int, uint8_t>(aSignal), PackConversion<int, uint8_t>(aRoam), PackConversion<int, uint8_t>(aBattChg), - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), *pdu); + aRemoteAddr, *pdu); #else nsresult rv = PackPDU(PackConversion<int, uint8_t>(aSvc), PackConversion<int, uint8_t>(aNumActive), PackConversion<int, uint8_t>(aNumHeld), aCallSetupState, PackConversion<int, uint8_t>(aSignal), PackConversion<int, uint8_t>(aRoam), PackConversion<int, uint8_t>(aBattChg), *pdu); @@ -335,30 +327,29 @@ BluetoothDaemonHandsfreeModule::CindResp return rv; } unused << pdu.forget(); return NS_OK; } nsresult BluetoothDaemonHandsfreeModule::FormattedAtResponseCmd( - const char* aRsp, const nsAString& aRemoteAddr, + const char* aRsp, const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_FORMATTED_AT_RESPONSE, 0 + // Dynamically allocated 6)); // Address (BlueZ 5.25) #if ANDROID_VERSION >= 21 - nsresult rv = PackPDU( - PackCString0(nsDependentCString(aRsp)), - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), *pdu); + nsresult rv = PackPDU(PackCString0(nsDependentCString(aRsp)), aRemoteAddr, + *pdu); #else nsresult rv = PackPDU(PackCString0(nsDependentCString(aRsp)), *pdu); #endif if (NS_FAILED(rv)) { return rv; } rv = Send(pdu, aRes); if (NS_FAILED(rv)) { @@ -366,30 +357,30 @@ BluetoothDaemonHandsfreeModule::Formatte } unused << pdu.forget(); return NS_OK; } nsresult BluetoothDaemonHandsfreeModule::AtResponseCmd( BluetoothHandsfreeAtResponse aResponseCode, int aErrorCode, - const nsAString& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_AT_RESPONSE, 1 + // AT Response code 1 + // Error code 6)); // Address (BlueZ 5.25) #if ANDROID_VERSION >= 21 - nsresult rv = PackPDU( - aResponseCode, PackConversion<int, uint8_t>(aErrorCode), - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), *pdu); + nsresult rv = PackPDU(aResponseCode, + PackConversion<int, uint8_t>(aErrorCode), + aRemoteAddr, *pdu); #else nsresult rv = PackPDU(aResponseCode, PackConversion<int, uint8_t>(aErrorCode), *pdu); #endif if (NS_FAILED(rv)) { return rv; } rv = Send(pdu, aRes); @@ -401,17 +392,17 @@ BluetoothDaemonHandsfreeModule::AtRespon } nsresult BluetoothDaemonHandsfreeModule::ClccResponseCmd( int aIndex, BluetoothHandsfreeCallDirection aDir, BluetoothHandsfreeCallState aState, BluetoothHandsfreeCallMode aMode, BluetoothHandsfreeCallMptyType aMpty, const nsAString& aNumber, BluetoothHandsfreeCallAddressType aType, - const nsAString& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); NS_ConvertUTF16toUTF8 number(aNumber); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_CLCC_RESPONSE, 1 + // Call index @@ -419,21 +410,19 @@ BluetoothDaemonHandsfreeModule::ClccResp 1 + // Call state 1 + // Call mode 1 + // Call MPTY 1 + // Address type number.Length() + 1 + // Number string + \0 6)); // Address (BlueZ 5.25) #if ANDROID_VERSION >= 21 - nsresult rv = PackPDU( - PackConversion<int, uint8_t>(aIndex), - aDir, aState, aMode, aMpty, aType, - PackCString0(number), - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), *pdu); + nsresult rv = PackPDU(PackConversion<int, uint8_t>(aIndex), + aDir, aState, aMode, aMpty, aType, + PackCString0(number), aRemoteAddr, *pdu); #else nsresult rv = PackPDU(PackConversion<int, uint8_t>(aIndex), aDir, aState, aMode, aMpty, aType, PackCString0(number), *pdu); #endif if (NS_FAILED(rv)) { return rv; } @@ -475,29 +464,28 @@ BluetoothDaemonHandsfreeModule::PhoneSta return rv; } unused << pdu.forget(); return NS_OK; } nsresult BluetoothDaemonHandsfreeModule::ConfigureWbsCmd( - const nsAString& aRemoteAddr, + const BluetoothAddress& aRemoteAddr, BluetoothHandsfreeWbsConfig aConfig, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(NS_IsMainThread()); nsAutoPtr<DaemonSocketPDU> pdu( new DaemonSocketPDU(SERVICE_ID, OPCODE_CONFIGURE_WBS, 6 + // Address 1)); // Config - nsresult rv = PackPDU( - PackConversion<nsAString, BluetoothAddress>(aRemoteAddr), aConfig, *pdu); + nsresult rv = PackPDU(aRemoteAddr, aConfig, *pdu); if (NS_FAILED(rv)) { return rv; } rv = Send(pdu, aRes); if (NS_FAILED(rv)) { return rv; } unused << pdu.forget(); @@ -747,38 +735,37 @@ class BluetoothDaemonHandsfreeModule::Co { public: ConnectionStateInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult operator () (BluetoothHandsfreeConnectionState& aArg1, - nsString& aArg2) const + BluetoothAddress& aArg2) const { DaemonSocketPDU& pdu = GetPDU(); /* Read state */ nsresult rv = UnpackPDU(pdu, aArg1); if (NS_FAILED(rv)) { return rv; } /* Read address */ - rv = UnpackPDU( - pdu, UnpackConversion<BluetoothAddress, nsAString>(aArg2)); + rv = UnpackPDU(pdu, aArg2); if (NS_FAILED(rv)) { return rv; } #if ANDROID_VERSION < 21 if (aArg1 == HFP_CONNECTION_STATE_CONNECTED) { sConnectedDeviceAddress = aArg2; } else if (aArg1 == HFP_CONNECTION_STATE_DISCONNECTED) { - sConnectedDeviceAddress.AssignLiteral(BLUETOOTH_ADDRESS_NONE); + sConnectedDeviceAddress = BluetoothAddress::ANY; } #endif WarnAboutTrailingData(); return NS_OK; } }; void @@ -795,29 +782,29 @@ class BluetoothDaemonHandsfreeModule::Au : private PDUInitOp { public: AudioStateInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (BluetoothHandsfreeAudioState& aArg1, nsString& aArg2) const + operator () (BluetoothHandsfreeAudioState& aArg1, + BluetoothAddress& aArg2) const { DaemonSocketPDU& pdu = GetPDU(); /* Read state */ nsresult rv = UnpackPDU(pdu, aArg1); if (NS_FAILED(rv)) { return rv; } /* Read address */ - rv = UnpackPDU( - pdu, UnpackConversion<BluetoothAddress, nsAString>(aArg2)); + rv = UnpackPDU(pdu, aArg2); if (NS_FAILED(rv)) { return rv; } WarnAboutTrailingData(); return NS_OK; } }; @@ -836,30 +823,29 @@ class BluetoothDaemonHandsfreeModule::Vo { public: VoiceRecognitionInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult operator () (BluetoothHandsfreeVoiceRecognitionState& aArg1, - nsString& aArg2) const + BluetoothAddress& aArg2) const { DaemonSocketPDU& pdu = GetPDU(); /* Read state */ nsresult rv = UnpackPDU(pdu, aArg1); if (NS_FAILED(rv)) { return rv; } /* Read address */ #if ANDROID_VERSION >= 21 - rv = UnpackPDU( - pdu, UnpackConversion<BluetoothAddress, nsAString>(aArg2)); + rv = UnpackPDU(pdu, aArg2); if (NS_FAILED(rv)) { return rv; } #else aArg2 = sConnectedDeviceAddress; #endif WarnAboutTrailingData(); return NS_OK; @@ -880,22 +866,21 @@ class BluetoothDaemonHandsfreeModule::An : private PDUInitOp { public: AnswerCallInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (nsString& aArg1) const + operator () (BluetoothAddress& aArg1) const { /* Read address */ #if ANDROID_VERSION >= 21 - nsresult rv = UnpackPDU( - GetPDU(), UnpackConversion<BluetoothAddress, nsAString>(aArg1)); + nsresult rv = UnpackPDU(GetPDU(), aArg1); if (NS_FAILED(rv)) { return rv; } #else aArg1 = sConnectedDeviceAddress; #endif WarnAboutTrailingData(); return NS_OK; @@ -916,22 +901,21 @@ class BluetoothDaemonHandsfreeModule::Ha : private PDUInitOp { public: HangupCallInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (nsString& aArg1) const + operator () (BluetoothAddress& aArg1) const { /* Read address */ #if ANDROID_VERSION >= 21 - nsresult rv = UnpackPDU( - GetPDU(), UnpackConversion<BluetoothAddress, nsAString>(aArg1)); + nsresult rv = UnpackPDU(GetPDU(), aArg1); if (NS_FAILED(rv)) { return rv; } #else aArg1 = sConnectedDeviceAddress; #endif WarnAboutTrailingData(); return NS_OK; @@ -953,17 +937,17 @@ class BluetoothDaemonHandsfreeModule::Vo { public: VolumeInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult operator () (BluetoothHandsfreeVolumeType& aArg1, int& aArg2, - nsString& aArg3) const + BluetoothAddress& aArg3) const { DaemonSocketPDU& pdu = GetPDU(); /* Read volume type */ nsresult rv = UnpackPDU(pdu, aArg1); if (NS_FAILED(rv)) { return rv; } @@ -971,18 +955,17 @@ public: /* Read volume */ rv = UnpackPDU(pdu, UnpackConversion<uint8_t, int>(aArg2)); if (NS_FAILED(rv)) { return rv; } /* Read address */ #if ANDROID_VERSION >= 21 - rv = UnpackPDU( - pdu, UnpackConversion<BluetoothAddress, nsAString>(aArg3)); + rv = UnpackPDU(pdu, aArg3); if (NS_FAILED(rv)) { return rv; } #else aArg3 = sConnectedDeviceAddress; #endif WarnAboutTrailingData(); return NS_OK; @@ -1003,28 +986,27 @@ class BluetoothDaemonHandsfreeModule::Di : private PDUInitOp { public: DialCallInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (nsString& aArg1, nsString& aArg2) const + operator () (nsString& aArg1, BluetoothAddress& aArg2) const { DaemonSocketPDU& pdu = GetPDU(); nsresult rv; /* Read address - * It's a little weird to parse aArg2(aBdAddr) before parsing - * aArg1(aNumber), but this order is defined in BlueZ 5.25 anyway. + * It's a little weird to parse aArg2 (aBdAddr) before parsing + * aArg1 (aNumber), but this order is defined in BlueZ 5.25 anyway. */ #if ANDROID_VERSION >= 21 - rv = UnpackPDU( - pdu, UnpackConversion<BluetoothAddress, nsAString>(aArg2)); + rv = UnpackPDU( pdu, aArg2); if (NS_FAILED(rv)) { return rv; } #else aArg2 = sConnectedDeviceAddress; #endif /* Read number */ @@ -1051,30 +1033,29 @@ class BluetoothDaemonHandsfreeModule::Dt : private PDUInitOp { public: DtmfInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (char& aArg1, nsString& aArg2) const + operator () (char& aArg1, BluetoothAddress& aArg2) const { DaemonSocketPDU& pdu = GetPDU(); /* Read tone */ nsresult rv = UnpackPDU(pdu, aArg1); if (NS_FAILED(rv)) { return rv; } /* Read address */ #if ANDROID_VERSION >= 21 - rv = UnpackPDU( - pdu, UnpackConversion<BluetoothAddress, nsAString>(aArg2)); + rv = UnpackPDU(pdu, aArg2); if (NS_FAILED(rv)) { return rv; } #else aArg2 = sConnectedDeviceAddress; #endif WarnAboutTrailingData(); return NS_OK; @@ -1095,30 +1076,30 @@ class BluetoothDaemonHandsfreeModule::NR : private PDUInitOp { public: NRECInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (BluetoothHandsfreeNRECState& aArg1, nsString& aArg2) const + operator () (BluetoothHandsfreeNRECState& aArg1, + BluetoothAddress& aArg2) const { DaemonSocketPDU& pdu = GetPDU(); /* Read state */ nsresult rv = UnpackPDU(pdu, aArg1); if (NS_FAILED(rv)) { return rv; } /* Read address */ #if ANDROID_VERSION >= 21 - rv = UnpackPDU( - pdu, UnpackConversion<BluetoothAddress, nsAString>(aArg2)); + rv = UnpackPDU(pdu, aArg2); if (NS_FAILED(rv)) { return rv; } #else aArg2 = sConnectedDeviceAddress; #endif WarnAboutTrailingData(); return NS_OK; @@ -1139,30 +1120,30 @@ class BluetoothDaemonHandsfreeModule::Ca : private PDUInitOp { public: CallHoldInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (BluetoothHandsfreeCallHoldType& aArg1, nsString& aArg2) const + operator () (BluetoothHandsfreeCallHoldType& aArg1, + BluetoothAddress& aArg2) const { DaemonSocketPDU& pdu = GetPDU(); /* Read type */ nsresult rv = UnpackPDU(pdu, aArg1); if (NS_FAILED(rv)) { return rv; } /* Read address */ #if ANDROID_VERSION >= 21 - rv = UnpackPDU( - pdu, UnpackConversion<BluetoothAddress, nsAString>(aArg2)); + rv = UnpackPDU(pdu, aArg2); if (NS_FAILED(rv)) { return rv; } #else aArg2 = sConnectedDeviceAddress; #endif WarnAboutTrailingData(); return NS_OK; @@ -1183,22 +1164,21 @@ class BluetoothDaemonHandsfreeModule::Cn : private PDUInitOp { public: CnumInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (nsString& aArg1) const + operator () (BluetoothAddress& aArg1) const { /* Read address */ #if ANDROID_VERSION >= 21 - nsresult rv = UnpackPDU( - GetPDU(), UnpackConversion<BluetoothAddress, nsAString>(aArg1)); + nsresult rv = UnpackPDU(GetPDU(), aArg1); if (NS_FAILED(rv)) { return rv; } #else aArg1 = sConnectedDeviceAddress; #endif WarnAboutTrailingData(); return NS_OK; @@ -1219,22 +1199,21 @@ class BluetoothDaemonHandsfreeModule::Ci : private PDUInitOp { public: CindInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (nsString& aArg1) const + operator () (BluetoothAddress& aArg1) const { /* Read address */ #if ANDROID_VERSION >= 21 - nsresult rv = UnpackPDU( - GetPDU(), UnpackConversion<BluetoothAddress, nsAString>(aArg1)); + nsresult rv = UnpackPDU(GetPDU(), aArg1); if (NS_FAILED(rv)) { return rv; } #else aArg1 = sConnectedDeviceAddress; #endif WarnAboutTrailingData(); return NS_OK; @@ -1255,22 +1234,21 @@ class BluetoothDaemonHandsfreeModule::Co : private PDUInitOp { public: CopsInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (nsString& aArg1) const + operator () (BluetoothAddress& aArg1) const { /* Read address */ #if ANDROID_VERSION >= 21 - nsresult rv = UnpackPDU( - GetPDU(), UnpackConversion<BluetoothAddress, nsAString>(aArg1)); + nsresult rv = UnpackPDU(GetPDU(), aArg1); if (NS_FAILED(rv)) { return rv; } #else aArg1 = sConnectedDeviceAddress; #endif WarnAboutTrailingData(); return NS_OK; @@ -1291,22 +1269,21 @@ class BluetoothDaemonHandsfreeModule::Cl : private PDUInitOp { public: ClccInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (nsString& aArg1) const + operator () (BluetoothAddress& aArg1) const { /* Read address */ #if ANDROID_VERSION >= 21 - nsresult rv = UnpackPDU( - GetPDU(), UnpackConversion<BluetoothAddress, nsAString>(aArg1)); + nsresult rv = UnpackPDU(GetPDU(), aArg1); if (NS_FAILED(rv)) { return rv; } #else aArg1 = sConnectedDeviceAddress; #endif WarnAboutTrailingData(); return NS_OK; @@ -1327,28 +1304,27 @@ class BluetoothDaemonHandsfreeModule::Un : private PDUInitOp { public: UnknownAtInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (nsCString& aArg1, nsString& aArg2) const + operator () (nsCString& aArg1, BluetoothAddress& aArg2) const { DaemonSocketPDU& pdu = GetPDU(); nsresult rv; /* Read address * It's a little weird to parse aArg2(aBdAddr) before parsing * aArg1(aAtString), but this order is defined in BlueZ 5.25 anyway. */ #if ANDROID_VERSION >= 21 - rv = UnpackPDU( - pdu, UnpackConversion<BluetoothAddress, nsAString>(aArg2)); + rv = UnpackPDU(pdu, aArg2); if (NS_FAILED(rv)) { return rv; } #else aArg2 = sConnectedDeviceAddress; #endif /* Read string */ @@ -1375,22 +1351,21 @@ class BluetoothDaemonHandsfreeModule::Ke : private PDUInitOp { public: KeyPressedInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (nsString& aArg1) const + operator () (BluetoothAddress& aArg1) const { /* Read address */ #if ANDROID_VERSION >= 21 - nsresult rv = UnpackPDU( - GetPDU(), UnpackConversion<BluetoothAddress, nsAString>(aArg1)); + nsresult rv = UnpackPDU(GetPDU(), aArg1); if (NS_FAILED(rv)) { return rv; } #else aArg1 = sConnectedDeviceAddress; #endif WarnAboutTrailingData(); return NS_OK; @@ -1411,29 +1386,28 @@ class BluetoothDaemonHandsfreeModule::Wb : private PDUInitOp { public: WbsInitOp(DaemonSocketPDU& aPDU) : PDUInitOp(aPDU) { } nsresult - operator () (BluetoothHandsfreeWbsConfig& aArg1, nsString& aArg2) const + operator () (BluetoothHandsfreeWbsConfig& aArg1, BluetoothAddress& aArg2) const { DaemonSocketPDU& pdu = GetPDU(); /* Read state */ nsresult rv = UnpackPDU(pdu, aArg1); if (NS_FAILED(rv)) { return rv; } /* Read address */ - rv = UnpackPDU( - pdu, UnpackConversion<BluetoothAddress, nsAString>(aArg2)); + rv = UnpackPDU(pdu, aArg2); if (NS_FAILED(rv)) { return rv; } WarnAboutTrailingData(); return NS_OK; } }; @@ -1607,93 +1581,94 @@ BluetoothDaemonHandsfreeInterface::Clean DispatchError(aRes, rv); } } /* Connect / Disconnect */ void BluetoothDaemonHandsfreeInterface::Connect( - const nsAString& aBdAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->ConnectCmd(aBdAddr, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); } } void BluetoothDaemonHandsfreeInterface::Disconnect( - const nsAString& aBdAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->DisconnectCmd(aBdAddr, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); } } void BluetoothDaemonHandsfreeInterface::ConnectAudio( - const nsAString& aBdAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->ConnectAudioCmd(aBdAddr, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); } } void BluetoothDaemonHandsfreeInterface::DisconnectAudio( - const nsAString& aBdAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->DisconnectAudioCmd(aBdAddr, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); } } /* Voice Recognition */ void BluetoothDaemonHandsfreeInterface::StartVoiceRecognition( - const nsAString& aBdAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->StartVoiceRecognitionCmd(aBdAddr, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); } } void BluetoothDaemonHandsfreeInterface::StopVoiceRecognition( - const nsAString& aBdAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->StopVoiceRecognitionCmd(aBdAddr, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); } } /* Volume */ void BluetoothDaemonHandsfreeInterface::VolumeControl( - BluetoothHandsfreeVolumeType aType, int aVolume, const nsAString& aBdAddr, + BluetoothHandsfreeVolumeType aType, int aVolume, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->VolumeControlCmd(aType, aVolume, aBdAddr, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); } @@ -1716,61 +1691,61 @@ BluetoothDaemonHandsfreeInterface::Devic DispatchError(aRes, rv); } } /* Responses */ void BluetoothDaemonHandsfreeInterface::CopsResponse( - const char* aCops, const nsAString& aBdAddr, + const char* aCops, const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->CopsResponseCmd(aCops, aBdAddr, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); } } void BluetoothDaemonHandsfreeInterface::CindResponse( int aSvc, int aNumActive, int aNumHeld, BluetoothHandsfreeCallState aCallSetupState, int aSignal, int aRoam, int aBattChg, - const nsAString& aBdAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->CindResponseCmd(aSvc, aNumActive, aNumHeld, aCallSetupState, aSignal, aRoam, aBattChg, aBdAddr, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); } } void BluetoothDaemonHandsfreeInterface::FormattedAtResponse( - const char* aRsp, const nsAString& aBdAddr, + const char* aRsp, const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->FormattedAtResponseCmd(aRsp, aBdAddr, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); } } void BluetoothDaemonHandsfreeInterface::AtResponse( BluetoothHandsfreeAtResponse aResponseCode, int aErrorCode, - const nsAString& aBdAddr, BluetoothHandsfreeResultHandler* aRes) + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->AtResponseCmd(aResponseCode, aErrorCode, aBdAddr, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); } @@ -1779,17 +1754,17 @@ BluetoothDaemonHandsfreeInterface::AtRes void BluetoothDaemonHandsfreeInterface::ClccResponse( int aIndex, BluetoothHandsfreeCallDirection aDir, BluetoothHandsfreeCallState aState, BluetoothHandsfreeCallMode aMode, BluetoothHandsfreeCallMptyType aMpty, const nsAString& aNumber, BluetoothHandsfreeCallAddressType aType, - const nsAString& aBdAddr, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->ClccResponseCmd(aIndex, aDir, aState, aMode, aMpty, aNumber, aType, aBdAddr, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); @@ -1815,17 +1790,17 @@ BluetoothDaemonHandsfreeInterface::Phone DispatchError(aRes, rv); } } /* Wide Band Speech */ void BluetoothDaemonHandsfreeInterface::ConfigureWbs( - const nsAString& aBdAddr, BluetoothHandsfreeWbsConfig aConfig, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeWbsConfig aConfig, BluetoothHandsfreeResultHandler* aRes) { MOZ_ASSERT(mModule); nsresult rv = mModule->ConfigureWbsCmd(aBdAddr, aConfig, aRes); if (NS_FAILED(rv)) { DispatchError(aRes, rv); }
--- a/dom/bluetooth/bluedroid/BluetoothDaemonHandsfreeInterface.h +++ b/dom/bluetooth/bluedroid/BluetoothDaemonHandsfreeInterface.h @@ -55,80 +55,81 @@ public: void SetNotificationHandler( BluetoothHandsfreeNotificationHandler* aNotificationHandler); // // Commands // - nsresult ConnectCmd(const nsAString& aBdAddr, + nsresult ConnectCmd(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); - nsresult DisconnectCmd(const nsAString& aBdAddr, + nsresult DisconnectCmd(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); - nsresult ConnectAudioCmd(const nsAString& aBdAddr, + nsresult ConnectAudioCmd(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); - nsresult DisconnectAudioCmd(const nsAString& aBdAddr, + nsresult DisconnectAudioCmd(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); /* Voice Recognition */ - nsresult StartVoiceRecognitionCmd(const nsAString& aBdAddr, + nsresult StartVoiceRecognitionCmd(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); - nsresult StopVoiceRecognitionCmd(const nsAString& aBdAddr, + nsresult StopVoiceRecognitionCmd(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); /* Volume */ nsresult VolumeControlCmd(BluetoothHandsfreeVolumeType aType, int aVolume, - const nsAString& aBdAddr, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); /* Device status */ nsresult DeviceStatusNotificationCmd( BluetoothHandsfreeNetworkState aNtkState, BluetoothHandsfreeServiceType aSvcType, int aSignal, int aBattChg, BluetoothHandsfreeResultHandler* aRes); /* Responses */ - nsresult CopsResponseCmd(const char* aCops, const nsAString& aBdAddr, + nsresult CopsResponseCmd(const char* aCops, const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); nsresult CindResponseCmd(int aSvc, int aNumActive, int aNumHeld, BluetoothHandsfreeCallState aCallSetupState, int aSignal, int aRoam, int aBattChg, - const nsAString& aBdAddr, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); - nsresult FormattedAtResponseCmd(const char* aRsp, const nsAString& aBdAddr, + nsresult FormattedAtResponseCmd(const char* aRsp, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); nsresult AtResponseCmd(BluetoothHandsfreeAtResponse aResponseCode, - int aErrorCode, const nsAString& aBdAddr, + int aErrorCode, const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); nsresult ClccResponseCmd(int aIndex, BluetoothHandsfreeCallDirection aDir, BluetoothHandsfreeCallState aState, BluetoothHandsfreeCallMode aMode, BluetoothHandsfreeCallMptyType aMpty, const nsAString& aNumber, BluetoothHandsfreeCallAddressType aType, - const nsAString& aBdAddr, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); /* Phone State */ nsresult PhoneStateChangeCmd(int aNumActive, int aNumHeld, BluetoothHandsfreeCallState aCallSetupState, const nsAString& aNumber, BluetoothHandsfreeCallAddressType aType, BluetoothHandsfreeResultHandler* aRes); /* Wide Band Speech */ - nsresult ConfigureWbsCmd(const nsAString& aBdAddr, + nsresult ConfigureWbsCmd(const BluetoothAddress& aBdAddr, BluetoothHandsfreeWbsConfig aConfig, BluetoothHandsfreeResultHandler* aRes); protected: void HandleSvc(const DaemonSocketPDUHeader& aHeader, DaemonSocketPDU& aPDU, DaemonSocketResultHandler* aRes); @@ -214,90 +215,107 @@ protected: // // Notifications // class NotificationHandlerWrapper; typedef mozilla::ipc::DaemonNotificationRunnable2< - NotificationHandlerWrapper, void, BluetoothHandsfreeConnectionState, - nsString, BluetoothHandsfreeConnectionState, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothHandsfreeConnectionState, BluetoothAddress, + BluetoothHandsfreeConnectionState, const BluetoothAddress&> ConnectionStateNotification; typedef mozilla::ipc::DaemonNotificationRunnable2< - NotificationHandlerWrapper, void, BluetoothHandsfreeAudioState, - nsString, BluetoothHandsfreeAudioState, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothHandsfreeAudioState, BluetoothAddress, + BluetoothHandsfreeAudioState, const BluetoothAddress&> AudioStateNotification; typedef mozilla::ipc::DaemonNotificationRunnable2< - NotificationHandlerWrapper, void, BluetoothHandsfreeVoiceRecognitionState, - nsString, BluetoothHandsfreeVoiceRecognitionState, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothHandsfreeVoiceRecognitionState, BluetoothAddress, + BluetoothHandsfreeVoiceRecognitionState, const BluetoothAddress&> VoiceRecognitionNotification; typedef mozilla::ipc::DaemonNotificationRunnable1< - NotificationHandlerWrapper, void, nsString, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothAddress, const BluetoothAddress&> AnswerCallNotification; typedef mozilla::ipc::DaemonNotificationRunnable1< - NotificationHandlerWrapper, void, nsString, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothAddress, const BluetoothAddress&> HangupCallNotification; typedef mozilla::ipc::DaemonNotificationRunnable3< - NotificationHandlerWrapper, void, BluetoothHandsfreeVolumeType, - int, nsString, BluetoothHandsfreeVolumeType, int, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothHandsfreeVolumeType, int, BluetoothAddress, + BluetoothHandsfreeVolumeType, int, const BluetoothAddress&> VolumeNotification; typedef mozilla::ipc::DaemonNotificationRunnable2< - NotificationHandlerWrapper, void, nsString, nsString, const nsAString&, - const nsAString&> + NotificationHandlerWrapper, void, + nsString, BluetoothAddress, + const nsAString&, const BluetoothAddress&> DialCallNotification; typedef mozilla::ipc::DaemonNotificationRunnable2< - NotificationHandlerWrapper, void, char, nsString, char, const nsAString&> + NotificationHandlerWrapper, void, + char, BluetoothAddress, char, const BluetoothAddress&> DtmfNotification; typedef mozilla::ipc::DaemonNotificationRunnable2< - NotificationHandlerWrapper, void, BluetoothHandsfreeNRECState, nsString, - BluetoothHandsfreeNRECState, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothHandsfreeNRECState, BluetoothAddress, + BluetoothHandsfreeNRECState, const BluetoothAddress&> NRECNotification; typedef mozilla::ipc::DaemonNotificationRunnable2< - NotificationHandlerWrapper, void, BluetoothHandsfreeCallHoldType, - nsString, BluetoothHandsfreeCallHoldType, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothHandsfreeCallHoldType, BluetoothAddress, + BluetoothHandsfreeCallHoldType, const BluetoothAddress&> CallHoldNotification; typedef mozilla::ipc::DaemonNotificationRunnable1< - NotificationHandlerWrapper, void, nsString, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothAddress, const BluetoothAddress&> CnumNotification; typedef mozilla::ipc::DaemonNotificationRunnable1< - NotificationHandlerWrapper, void, nsString, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothAddress, const BluetoothAddress&> CindNotification; typedef mozilla::ipc::DaemonNotificationRunnable1< - NotificationHandlerWrapper, void, nsString, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothAddress, const BluetoothAddress&> CopsNotification; typedef mozilla::ipc::DaemonNotificationRunnable1< - NotificationHandlerWrapper, void, nsString, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothAddress, const BluetoothAddress&> ClccNotification; typedef mozilla::ipc::DaemonNotificationRunnable2< - NotificationHandlerWrapper, void, nsCString, nsString, - const nsACString&, const nsAString&> + NotificationHandlerWrapper, void, + nsCString, BluetoothAddress, + const nsACString&, const BluetoothAddress&> UnknownAtNotification; typedef mozilla::ipc::DaemonNotificationRunnable1< - NotificationHandlerWrapper, void, nsString, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothAddress, const BluetoothAddress&> KeyPressedNotification; typedef mozilla::ipc::DaemonNotificationRunnable2< - NotificationHandlerWrapper, void, BluetoothHandsfreeWbsConfig, nsString, - BluetoothHandsfreeWbsConfig, const nsAString&> + NotificationHandlerWrapper, void, + BluetoothHandsfreeWbsConfig, BluetoothAddress, + BluetoothHandsfreeWbsConfig, const BluetoothAddress&> WbsNotification; class ConnectionStateInitOp; class AudioStateInitOp; class VoiceRecognitionInitOp; class AnswerCallInitOp; class HangupCallInitOp; class VolumeInitOp; @@ -367,21 +385,22 @@ protected: void HandleNtf(const DaemonSocketPDUHeader& aHeader, DaemonSocketPDU& aPDU, DaemonSocketResultHandler* aRes); static BluetoothHandsfreeNotificationHandler* sNotificationHandler; #if ANDROID_VERSION < 21 /* |sConnectedDeviceAddress| stores Bluetooth device address of the - * connected device. Before BlueZ 5.25, we maintain this address by ourselves - * through ConnectionStateNtf(); after BlueZ 5.25, every callback carries - * this address directly so we don't have to keep it. + * connected device. Before BlueZ 5.25, we maintain this address by + * ourselves through ConnectionStateNtf(); after BlueZ 5.25, every + * callback carries this address directly so we don't have to keep + * it. */ - static nsString sConnectedDeviceAddress; + static BluetoothAddress sConnectedDeviceAddress; #endif }; class BluetoothDaemonHandsfreeInterface final : public BluetoothHandsfreeInterface { class CleanupResultHandler; class InitResultHandler; @@ -398,78 +417,78 @@ public: void Init( BluetoothHandsfreeNotificationHandler* aNotificationHandler, int aMaxNumClients, BluetoothHandsfreeResultHandler* aRes) override; void Cleanup(BluetoothHandsfreeResultHandler* aRes) override; /* Connect / Disconnect */ - void Connect(const nsAString& aBdAddr, + void Connect(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) override; - void Disconnect(const nsAString& aBdAddr, + void Disconnect(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) override; - void ConnectAudio(const nsAString& aBdAddr, + void ConnectAudio(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) override; - void DisconnectAudio(const nsAString& aBdAddr, + void DisconnectAudio(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) override; /* Voice Recognition */ - void StartVoiceRecognition(const nsAString& aBdAddr, + void StartVoiceRecognition(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) override; - void StopVoiceRecognition(const nsAString& aBdAddr, + void StopVoiceRecognition(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) override; /* Volume */ void VolumeControl(BluetoothHandsfreeVolumeType aType, int aVolume, - const nsAString& aBdAddr, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) override; /* Device status */ void DeviceStatusNotification(BluetoothHandsfreeNetworkState aNtkState, BluetoothHandsfreeServiceType aSvcType, int aSignal, int aBattChg, BluetoothHandsfreeResultHandler* aRes) override; /* Responses */ - void CopsResponse(const char* aCops, const nsAString& aBdAddr, + void CopsResponse(const char* aCops, const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes); void CindResponse(int aSvc, int aNumActive, int aNumHeld, BluetoothHandsfreeCallState aCallSetupState, int aSignal, int aRoam, int aBattChg, - const nsAString& aBdAddr, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) override; - void FormattedAtResponse(const char* aRsp, const nsAString& aBdAddr, + void FormattedAtResponse(const char* aRsp, const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) override; void AtResponse(BluetoothHandsfreeAtResponse aResponseCode, int aErrorCode, - const nsAString& aBdAddr, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) override; void ClccResponse(int aIndex, BluetoothHandsfreeCallDirection aDir, BluetoothHandsfreeCallState aState, BluetoothHandsfreeCallMode aMode, BluetoothHandsfreeCallMptyType aMpty, const nsAString& aNumber, BluetoothHandsfreeCallAddressType aType, - const nsAString& aBdAddr, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) override; /* Phone State */ void PhoneStateChange(int aNumActive, int aNumHeld, BluetoothHandsfreeCallState aCallSetupState, const nsAString& aNumber, BluetoothHandsfreeCallAddressType aType, BluetoothHandsfreeResultHandler* aRes) override; /* Wide Band Speech */ - void ConfigureWbs(const nsAString& aBdAddr, + void ConfigureWbs(const BluetoothAddress& aBdAddr, BluetoothHandsfreeWbsConfig aConfig, BluetoothHandsfreeResultHandler* aRes) override; private: void DispatchError(BluetoothHandsfreeResultHandler* aRes, BluetoothStatus aStatus); void DispatchError(BluetoothHandsfreeResultHandler* aRes, nsresult aRv);
--- a/dom/bluetooth/bluedroid/hfp/BluetoothHfpManager.cpp +++ b/dom/bluetooth/bluedroid/hfp/BluetoothHfpManager.cpp @@ -649,19 +649,25 @@ BluetoothHfpManager::HandleVolumeChanged // Adjust volume by headset and we don't have to send volume back to headset if (mReceiveVgsFlag) { mReceiveVgsFlag = false; return; } // Only send volume back when there's a connected headset if (IsConnected()) { + BluetoothAddress deviceAddress; + nsresult rv = StringToAddress(mDeviceAddress, deviceAddress); + if (NS_FAILED(rv)) { + return; + } + NS_ENSURE_TRUE_VOID(sBluetoothHfpInterface); sBluetoothHfpInterface->VolumeControl( - HFP_VOLUME_TYPE_SPEAKER, mCurrentVgs, mDeviceAddress, + HFP_VOLUME_TYPE_SPEAKER, mCurrentVgs, deviceAddress, new VolumeControlResultHandler()); } } void BluetoothHfpManager::HandleVoiceConnectionChanged(uint32_t aClientId) { nsCOMPtr<nsIMobileConnectionService> mcService = @@ -786,20 +792,26 @@ BluetoothHfpManager::SendCLCC(Call& aCal HFP_CALL_STATE_ACTIVE; } if (callState == HFP_CALL_STATE_INCOMING && FindFirstCall(nsITelephonyService::CALL_STATE_CONNECTED)) { callState = HFP_CALL_STATE_WAITING; } + BluetoothAddress deviceAddress; + nsresult rv = StringToAddress(mDeviceAddress, deviceAddress); + if (NS_FAILED(rv)) { + return; + } + sBluetoothHfpInterface->ClccResponse( aIndex, aCall.mDirection, callState, HFP_CALL_MODE_VOICE, HFP_CALL_MPTY_TYPE_SINGLE, aCall.mNumber, - aCall.mType, mDeviceAddress, new ClccResponseResultHandler()); + aCall.mType, deviceAddress, new ClccResponseResultHandler()); } class BluetoothHfpManager::FormattedAtResponseResultHandler final : public BluetoothHandsfreeResultHandler { public: void OnError(BluetoothStatus aStatus) override { @@ -808,18 +820,24 @@ public: } }; void BluetoothHfpManager::SendLine(const char* aMessage) { NS_ENSURE_TRUE_VOID(sBluetoothHfpInterface); + BluetoothAddress deviceAddress; + nsresult rv = StringToAddress(mDeviceAddress, deviceAddress); + if (NS_FAILED(rv)) { + return; + } + sBluetoothHfpInterface->FormattedAtResponse( - aMessage, mDeviceAddress, new FormattedAtResponseResultHandler()); + aMessage, deviceAddress, new FormattedAtResponseResultHandler()); } class BluetoothHfpManager::AtResponseResultHandler final : public BluetoothHandsfreeResultHandler { public: void OnError(BluetoothStatus aStatus) override { @@ -828,18 +846,24 @@ public: } }; void BluetoothHfpManager::SendResponse(BluetoothHandsfreeAtResponse aResponseCode) { NS_ENSURE_TRUE_VOID(sBluetoothHfpInterface); + BluetoothAddress deviceAddress; + nsresult rv = StringToAddress(mDeviceAddress, deviceAddress); + if (NS_FAILED(rv)) { + return; + } + sBluetoothHfpInterface->AtResponse( - aResponseCode, 0, mDeviceAddress, new AtResponseResultHandler()); + aResponseCode, 0, deviceAddress, new AtResponseResultHandler()); } class BluetoothHfpManager::PhoneStateChangeResultHandler final : public BluetoothHandsfreeResultHandler { public: void OnError(BluetoothStatus aStatus) override { @@ -1130,23 +1154,29 @@ BluetoothHfpManager::ToggleCalls() * error. The state change triggers UI status bar update as ordinary bluetooth * turn-off sequence. */ void BluetoothHfpManager::HandleBackendError() { MOZ_ASSERT(NS_IsMainThread()); + BluetoothAddress deviceAddress; + nsresult rv = StringToAddress(mDeviceAddress, deviceAddress); + if (NS_FAILED(rv)) { + return; + } + if (mConnectionState != HFP_CONNECTION_STATE_DISCONNECTED) { ConnectionStateNotification(HFP_CONNECTION_STATE_DISCONNECTED, - mDeviceAddress); + deviceAddress); } if (mAudioState != HFP_AUDIO_STATE_DISCONNECTED) { - AudioStateNotification(HFP_AUDIO_STATE_DISCONNECTED, mDeviceAddress); + AudioStateNotification(HFP_AUDIO_STATE_DISCONNECTED, deviceAddress); } } class BluetoothHfpManager::ConnectAudioResultHandler final : public BluetoothHandsfreeResultHandler { public: void OnError(BluetoothStatus aStatus) override @@ -1160,17 +1190,23 @@ bool BluetoothHfpManager::ConnectSco() { MOZ_ASSERT(NS_IsMainThread()); NS_ENSURE_TRUE(!sInShutdown, false); NS_ENSURE_TRUE(IsConnected() && !IsScoConnected(), false); NS_ENSURE_TRUE(sBluetoothHfpInterface, false); - sBluetoothHfpInterface->ConnectAudio(mDeviceAddress, + BluetoothAddress deviceAddress; + nsresult rv = StringToAddress(mDeviceAddress, deviceAddress); + if (NS_FAILED(rv)) { + return false; + } + + sBluetoothHfpInterface->ConnectAudio(deviceAddress, new ConnectAudioResultHandler()); return true; } class BluetoothHfpManager::DisconnectAudioResultHandler final : public BluetoothHandsfreeResultHandler { @@ -1183,17 +1219,23 @@ public: }; bool BluetoothHfpManager::DisconnectSco() { NS_ENSURE_TRUE(IsScoConnected(), false); NS_ENSURE_TRUE(sBluetoothHfpInterface, false); - sBluetoothHfpInterface->DisconnectAudio(mDeviceAddress, + BluetoothAddress deviceAddress; + nsresult rv = StringToAddress(mDeviceAddress, deviceAddress); + if (NS_FAILED(rv)) { + return false; + } + + sBluetoothHfpInterface->DisconnectAudio(deviceAddress, new DisconnectAudioResultHandler()); return true; } bool BluetoothHfpManager::IsScoConnected() { @@ -1260,17 +1302,23 @@ BluetoothHfpManager::Connect(const nsASt BT_LOGR("sBluetoothHfpInterface is null"); aController->NotifyCompletion(NS_LITERAL_STRING(ERR_NO_AVAILABLE_RESOURCE)); return; } mDeviceAddress = aDeviceAddress; mController = aController; - sBluetoothHfpInterface->Connect(mDeviceAddress, + BluetoothAddress deviceAddress; + nsresult rv = StringToAddress(mDeviceAddress, deviceAddress); + if (NS_FAILED(rv)) { + return; + } + + sBluetoothHfpInterface->Connect(deviceAddress, new ConnectResultHandler(this)); } void BluetoothHfpManager::OnDisconnectError() { MOZ_ASSERT(NS_IsMainThread()); NS_ENSURE_TRUE_VOID(mController); @@ -1311,17 +1359,23 @@ BluetoothHfpManager::Disconnect(Bluetoot if (aController) { aController->NotifyCompletion(NS_LITERAL_STRING(ERR_NO_AVAILABLE_RESOURCE)); } return; } mController = aController; - sBluetoothHfpInterface->Disconnect(mDeviceAddress, + BluetoothAddress deviceAddress; + nsresult rv = StringToAddress(mDeviceAddress, deviceAddress); + if (NS_FAILED(rv)) { + return; + } + + sBluetoothHfpInterface->Disconnect(deviceAddress, new DisconnectResultHandler(this)); } void BluetoothHfpManager::OnConnect(const nsAString& aErrorStr) { MOZ_ASSERT(NS_IsMainThread()); @@ -1373,77 +1427,83 @@ BluetoothHfpManager::GetAddress(nsAStrin } // // Bluetooth notifications // void BluetoothHfpManager::ConnectionStateNotification( - BluetoothHandsfreeConnectionState aState, const nsAString& aBdAddress) + BluetoothHandsfreeConnectionState aState, const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); BT_LOGR("state %d", aState); mPrevConnectionState = mConnectionState; mConnectionState = aState; if (aState == HFP_CONNECTION_STATE_SLC_CONNECTED) { - mDeviceAddress = aBdAddress; + AddressToString(aBdAddress, mDeviceAddress); NotifyConnectionStateChanged( NS_LITERAL_STRING(BLUETOOTH_HFP_STATUS_CHANGED_ID)); } else if (aState == HFP_CONNECTION_STATE_DISCONNECTED) { DisconnectSco(); NotifyConnectionStateChanged( NS_LITERAL_STRING(BLUETOOTH_HFP_STATUS_CHANGED_ID)); } else if (aState == HFP_CONNECTION_STATE_CONNECTED) { + BluetoothAddress deviceAddress; + nsresult rv = StringToAddress(mDeviceAddress, deviceAddress); + if (NS_FAILED(rv)) { + return; + } + // Once RFCOMM is connected, enable NREC before each new SLC connection - NRECNotification(HFP_NREC_STARTED, mDeviceAddress); + NRECNotification(HFP_NREC_STARTED, deviceAddress); } } void BluetoothHfpManager::AudioStateNotification( - BluetoothHandsfreeAudioState aState, const nsAString& aBdAddress) + BluetoothHandsfreeAudioState aState, const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); BT_LOGR("state %d", aState); mAudioState = aState; if (aState == HFP_AUDIO_STATE_CONNECTED || aState == HFP_AUDIO_STATE_DISCONNECTED) { NotifyConnectionStateChanged( NS_LITERAL_STRING(BLUETOOTH_SCO_STATUS_CHANGED_ID)); } } void -BluetoothHfpManager::AnswerCallNotification(const nsAString& aBdAddress) +BluetoothHfpManager::AnswerCallNotification(const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); NotifyDialer(NS_LITERAL_STRING("ATA")); } void -BluetoothHfpManager::HangupCallNotification(const nsAString& aBdAddress) +BluetoothHfpManager::HangupCallNotification(const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); NotifyDialer(NS_LITERAL_STRING("CHUP")); } void BluetoothHfpManager::VolumeNotification( - BluetoothHandsfreeVolumeType aType, int aVolume, const nsAString& aBdAddress) + BluetoothHandsfreeVolumeType aType, int aVolume, const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); NS_ENSURE_TRUE_VOID(aVolume >= 0 && aVolume <= 15); if (aType == HFP_VOLUME_TYPE_MICROPHONE) { mCurrentVgm = aVolume; } else if (aType == HFP_VOLUME_TYPE_SPEAKER) { @@ -1460,17 +1520,17 @@ BluetoothHfpManager::VolumeNotification( nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService(); NS_ENSURE_TRUE_VOID(os); os->NotifyObservers(nullptr, "bluetooth-volume-change", data.get()); } } void -BluetoothHfpManager::DtmfNotification(char aDtmf, const nsAString& aBdAddress) +BluetoothHfpManager::DtmfNotification(char aDtmf, const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); NS_ENSURE_TRUE_VOID(IsValidDtmf(aDtmf)); nsAutoCString message("VTS="); message += aDtmf; NotifyDialer(NS_ConvertUTF8toUTF16(message)); @@ -1479,17 +1539,17 @@ BluetoothHfpManager::DtmfNotification(ch /** * NREC status will be set when: * 1. Get an AT command from HF device. * (Bluetooth HFP spec v1.6 merely defines for the "Disable" part.) * 2. Once RFCOMM is connected, enable NREC before each new SLC connection. */ void BluetoothHfpManager::NRECNotification(BluetoothHandsfreeNRECState aNrec, - const nsAString& aBdAddr) + const BluetoothAddress& aBdAddr) { MOZ_ASSERT(NS_IsMainThread()); // Notify Gecko observers nsCOMPtr<nsIObserverService> obs = services::GetObserverService(); NS_ENSURE_TRUE_VOID(obs); mNrecEnabled = static_cast<bool>(aNrec); @@ -1500,17 +1560,17 @@ BluetoothHfpManager::NRECNotification(Bl mDeviceAddress.get()))) { BT_WARNING("Failed to notify bluetooth-hfp-nrec-status-changed observsers!"); } } void BluetoothHfpManager::CallHoldNotification(BluetoothHandsfreeCallHoldType aChld, - const nsAString& aBdAddress) + const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); if (!IsSupportedChld((int)aChld)) { // We currently don't support Enhanced Call Control. // AT+CHLD=1x and AT+CHLD=2x will be ignored SendResponse(HFP_AT_RESPONSE_ERROR); return; @@ -1519,17 +1579,17 @@ BluetoothHfpManager::CallHoldNotificatio SendResponse(HFP_AT_RESPONSE_OK); nsAutoCString message("CHLD="); message.AppendInt((int)aChld); NotifyDialer(NS_ConvertUTF8toUTF16(message)); } void BluetoothHfpManager::DialCallNotification(const nsAString& aNumber, - const nsAString& aBdAddress) + const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); nsCString message = NS_ConvertUTF16toUTF8(aNumber); // There are three cases based on aNumber, // 1) Empty value: Redial, BLDN // 2) >xxx: Memory dial, ATD>xxx @@ -1560,17 +1620,17 @@ void BluetoothHfpManager::DialCallNotifi nsAutoCString newMsg("ATD"); newMsg += StringHead(message, message.Length() - 1); NotifyDialer(NS_ConvertUTF8toUTF16(newMsg)); } } void -BluetoothHfpManager::CnumNotification(const nsAString& aBdAddress) +BluetoothHfpManager::CnumNotification(const BluetoothAddress& aBdAddress) { static const uint8_t sAddressType[] { [HFP_CALL_ADDRESS_TYPE_UNKNOWN] = 0x81, [HFP_CALL_ADDRESS_TYPE_INTERNATIONAL] = 0x91 // for completeness }; MOZ_ASSERT(NS_IsMainThread()); @@ -1594,17 +1654,17 @@ public: void OnError(BluetoothStatus aStatus) override { BT_WARNING("BluetoothHandsfreeInterface::CindResponse failed: %d", (int)aStatus); } }; void -BluetoothHfpManager::CindNotification(const nsAString& aBdAddress) +BluetoothHfpManager::CindNotification(const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); NS_ENSURE_TRUE_VOID(sBluetoothHfpInterface); int numActive = GetNumberOfCalls(nsITelephonyService::CALL_STATE_CONNECTED); int numHeld = GetNumberOfCalls(nsITelephonyService::CALL_STATE_HELD); BluetoothHandsfreeCallState callState = @@ -1624,29 +1684,29 @@ public: void OnError(BluetoothStatus aStatus) override { BT_WARNING("BluetoothHandsfreeInterface::CopsResponse failed: %d", (int)aStatus); } }; void -BluetoothHfpManager::CopsNotification(const nsAString& aBdAddress) +BluetoothHfpManager::CopsNotification(const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); NS_ENSURE_TRUE_VOID(sBluetoothHfpInterface); sBluetoothHfpInterface->CopsResponse( NS_ConvertUTF16toUTF8(mOperatorName).get(), aBdAddress, new CopsResponseResultHandler()); } void -BluetoothHfpManager::ClccNotification(const nsAString& aBdAddress) +BluetoothHfpManager::ClccNotification(const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); uint32_t callNumbers = mCurrentCallArray.Length(); uint32_t i; for (i = 1; i < callNumbers; i++) { SendCLCC(mCurrentCallArray[i], i); } @@ -1658,27 +1718,27 @@ BluetoothHfpManager::ClccNotification(co SendCLCC(mCdmaSecondCall, 2); } SendResponse(HFP_AT_RESPONSE_OK); } void BluetoothHfpManager::UnknownAtNotification(const nsACString& aAtString, - const nsAString& aBdAddress) + const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); BT_LOGR("[%s]", nsCString(aAtString).get()); SendResponse(HFP_AT_RESPONSE_ERROR); } void -BluetoothHfpManager::KeyPressedNotification(const nsAString& aBdAddress) +BluetoothHfpManager::KeyPressedNotification(const BluetoothAddress& aBdAddress) { MOZ_ASSERT(NS_IsMainThread()); bool hasActiveCall = (FindFirstCall(nsITelephonyService::CALL_STATE_CONNECTED) > 0); // Refer to AOSP HeadsetStateMachine.processKeyPressed if (FindFirstCall(nsITelephonyService::CALL_STATE_INCOMING)
--- a/dom/bluetooth/bluedroid/hfp/BluetoothHfpManager.h +++ b/dom/bluetooth/bluedroid/hfp/BluetoothHfpManager.h @@ -112,39 +112,39 @@ public: // Handle unexpected backend crash void HandleBackendError(); // // Bluetooth notifications // void ConnectionStateNotification(BluetoothHandsfreeConnectionState aState, - const nsAString& aBdAddress) override; + const BluetoothAddress& aBdAddress) override; void AudioStateNotification(BluetoothHandsfreeAudioState aState, - const nsAString& aBdAddress) override; - void AnswerCallNotification(const nsAString& aBdAddress) override; - void HangupCallNotification(const nsAString& aBdAddress) override; + const BluetoothAddress& aBdAddress) override; + void AnswerCallNotification(const BluetoothAddress& aBdAddress) override; + void HangupCallNotification(const BluetoothAddress& aBdAddress) override; void VolumeNotification(BluetoothHandsfreeVolumeType aType, int aVolume, - const nsAString& aBdAddress) override; + const BluetoothAddress& aBdAddress) override; void DtmfNotification(char aDtmf, - const nsAString& aBdAddress) override; + const BluetoothAddress& aBdAddress) override; void NRECNotification(BluetoothHandsfreeNRECState aNrec, - const nsAString& aBdAddr) override; + const BluetoothAddress& aBdAddr) override; void CallHoldNotification(BluetoothHandsfreeCallHoldType aChld, - const nsAString& aBdAddress) override; + const BluetoothAddress& aBdAddress) override; void DialCallNotification(const nsAString& aNumber, - const nsAString& aBdAddress) override; - void CnumNotification(const nsAString& aBdAddress) override; - void CindNotification(const nsAString& aBdAddress) override; - void CopsNotification(const nsAString& aBdAddress) override; - void ClccNotification(const nsAString& aBdAddress) override; + const BluetoothAddress& aBdAddress) override; + void CnumNotification(const BluetoothAddress& aBdAddress) override; + void CindNotification(const BluetoothAddress& aBdAddress) override; + void CopsNotification(const BluetoothAddress& aBdAddress) override; + void ClccNotification(const BluetoothAddress& aBdAddress) override; void UnknownAtNotification(const nsACString& aAtString, - const nsAString& aBdAddress) override; - void KeyPressedNotification(const nsAString& aBdAddress) override; + const BluetoothAddress& aBdAddress) override; + void KeyPressedNotification(const BluetoothAddress& aBdAddress) override; protected: virtual ~BluetoothHfpManager(); private: class AtResponseResultHandler; class CindResponseResultHandler; class ConnectAudioResultHandler;
--- a/dom/bluetooth/common/BluetoothInterface.cpp +++ b/dom/bluetooth/common/BluetoothInterface.cpp @@ -84,97 +84,97 @@ BluetoothSocketInterface::~BluetoothSock BluetoothHandsfreeNotificationHandler::BluetoothHandsfreeNotificationHandler() { } BluetoothHandsfreeNotificationHandler::~BluetoothHandsfreeNotificationHandler() { } void BluetoothHandsfreeNotificationHandler::ConnectionStateNotification( - BluetoothHandsfreeConnectionState aState, const nsAString& aBdAddr) + BluetoothHandsfreeConnectionState aState, const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::AudioStateNotification( - BluetoothHandsfreeAudioState aState, const nsAString& aBdAddr) + BluetoothHandsfreeAudioState aState, const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::VoiceRecognitionNotification( - BluetoothHandsfreeVoiceRecognitionState aState, const nsAString& aBdAddr) + BluetoothHandsfreeVoiceRecognitionState aState, const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::AnswerCallNotification( - const nsAString& aBdAddr) + const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::HangupCallNotification( - const nsAString& aBdAddr) + const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::VolumeNotification( - BluetoothHandsfreeVolumeType aType, int aVolume, const nsAString& aBdAddr) + BluetoothHandsfreeVolumeType aType, int aVolume, const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::DialCallNotification( - const nsAString& aNumber, const nsAString& aBdAddr) + const nsAString& aNumber, const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::DtmfNotification( - char aDtmf, const nsAString& aBdAddr) + char aDtmf, const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::NRECNotification( - BluetoothHandsfreeNRECState aNrec, const nsAString& aBdAddr) + BluetoothHandsfreeNRECState aNrec, const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::WbsNotification( - BluetoothHandsfreeWbsConfig aWbs, const nsAString& aBdAddr) + BluetoothHandsfreeWbsConfig aWbs, const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::CallHoldNotification( - BluetoothHandsfreeCallHoldType aChld, const nsAString& aBdAddr) + BluetoothHandsfreeCallHoldType aChld, const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::CnumNotification( - const nsAString& aBdAddr) + const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::CindNotification( - const nsAString& aBdAddr) + const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::CopsNotification( - const nsAString& aBdAddr) + const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::ClccNotification( - const nsAString& aBdAddr) + const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::UnknownAtNotification( - const nsACString& aAtString, const nsAString& aBdAddr) + const nsACString& aAtString, const BluetoothAddress& aBdAddr) { } void BluetoothHandsfreeNotificationHandler::KeyPressedNotification( - const nsAString& aBdAddr) + const BluetoothAddress& aBdAddr) { } // Result handling // void BluetoothHandsfreeResultHandler::OnError(BluetoothStatus aStatus) {
--- a/dom/bluetooth/common/BluetoothInterface.h +++ b/dom/bluetooth/common/BluetoothInterface.h @@ -79,75 +79,75 @@ protected: // Handsfree Interface // class BluetoothHandsfreeNotificationHandler { public: virtual void ConnectionStateNotification(BluetoothHandsfreeConnectionState aState, - const nsAString& aBdAddr); + const BluetoothAddress& aBdAddr); virtual void AudioStateNotification(BluetoothHandsfreeAudioState aState, - const nsAString& aBdAddr); + const BluetoothAddress& aBdAddr); virtual void VoiceRecognitionNotification(BluetoothHandsfreeVoiceRecognitionState aState, - const nsAString& aBdAddr); + const BluetoothAddress& aBdAddr); virtual void - AnswerCallNotification(const nsAString& aBdAddr); + AnswerCallNotification(const BluetoothAddress& aBdAddr); virtual void - HangupCallNotification(const nsAString& aBdAddr); + HangupCallNotification(const BluetoothAddress& aBdAddr); virtual void VolumeNotification(BluetoothHandsfreeVolumeType aType, int aVolume, - const nsAString& aBdAddr); + const BluetoothAddress& aBdAddr); virtual void DialCallNotification(const nsAString& aNumber, - const nsAString& aBdAddr); + const BluetoothAddress& aBdAddr); virtual void DtmfNotification(char aDtmf, - const nsAString& aBdAddr); + const BluetoothAddress& aBdAddr); virtual void NRECNotification(BluetoothHandsfreeNRECState aNrec, - const nsAString& aBdAddr); + const BluetoothAddress& aBdAddr); virtual void WbsNotification(BluetoothHandsfreeWbsConfig aWbs, - const nsAString& aBdAddr); + const BluetoothAddress& aBdAddr); virtual void CallHoldNotification(BluetoothHandsfreeCallHoldType aChld, - const nsAString& aBdAddr); + const BluetoothAddress& aBdAddr); virtual void - CnumNotification(const nsAString& aBdAddr); + CnumNotification(const BluetoothAddress& aBdAddr); virtual void - CindNotification(const nsAString& aBdAddr); + CindNotification(const BluetoothAddress& aBdAddr); virtual void - CopsNotification(const nsAString& aBdAddr); + CopsNotification(const BluetoothAddress& aBdAddr); virtual void - ClccNotification(const nsAString& aBdAddr); + ClccNotification(const BluetoothAddress& aBdAddr); virtual void UnknownAtNotification(const nsACString& aAtString, - const nsAString& aBdAddr); + const BluetoothAddress& aBdAddr); virtual void - KeyPressedNotification(const nsAString& aBdAddr); + KeyPressedNotification(const BluetoothAddress& aBdAddr); protected: BluetoothHandsfreeNotificationHandler(); virtual ~BluetoothHandsfreeNotificationHandler(); }; class BluetoothHandsfreeResultHandler : public mozilla::ipc::DaemonSocketResultHandler @@ -188,78 +188,79 @@ class BluetoothHandsfreeInterface public: virtual void Init( BluetoothHandsfreeNotificationHandler* aNotificationHandler, int aMaxNumClients, BluetoothHandsfreeResultHandler* aRes) = 0; virtual void Cleanup(BluetoothHandsfreeResultHandler* aRes) = 0; /* Connect / Disconnect */ - virtual void Connect(const nsAString& aBdAddr, + virtual void Connect(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) = 0; - virtual void Disconnect(const nsAString& aBdAddr, + virtual void Disconnect(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) = 0; - virtual void ConnectAudio(const nsAString& aBdAddr, + virtual void ConnectAudio(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) = 0; - virtual void DisconnectAudio(const nsAString& aBdAddr, + virtual void DisconnectAudio(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) = 0; /* Voice Recognition */ - virtual void StartVoiceRecognition(const nsAString& aBdAddr, + virtual void StartVoiceRecognition(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) = 0; - virtual void StopVoiceRecognition(const nsAString& aBdAddr, + virtual void StopVoiceRecognition(const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) = 0; /* Volume */ virtual void VolumeControl(BluetoothHandsfreeVolumeType aType, int aVolume, - const nsAString& aBdAddr, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) = 0; /* Device status */ virtual void DeviceStatusNotification( BluetoothHandsfreeNetworkState aNtkState, BluetoothHandsfreeServiceType aSvcType, int aSignal, int aBattChg, BluetoothHandsfreeResultHandler* aRes) = 0; /* Responses */ - virtual void CopsResponse(const char* aCops, const nsAString& aBdAddr, + virtual void CopsResponse(const char* aCops, const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) = 0; virtual void CindResponse(int aSvc, int aNumActive, int aNumHeld, BluetoothHandsfreeCallState aCallSetupState, int aSignal, int aRoam, int aBattChg, - const nsAString& aBdAddr, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) = 0; - virtual void FormattedAtResponse(const char* aRsp, const nsAString& aBdAddr, + virtual void FormattedAtResponse(const char* aRsp, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) = 0; virtual void AtResponse(BluetoothHandsfreeAtResponse aResponseCode, - int aErrorCode, const nsAString& aBdAddr, + int aErrorCode, const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) = 0; virtual void ClccResponse(int aIndex, BluetoothHandsfreeCallDirection aDir, BluetoothHandsfreeCallState aState, BluetoothHandsfreeCallMode aMode, BluetoothHandsfreeCallMptyType aMpty, const nsAString& aNumber, BluetoothHandsfreeCallAddressType aType, - const nsAString& aBdAddr, + const BluetoothAddress& aBdAddr, BluetoothHandsfreeResultHandler* aRes) = 0; /* Phone State */ virtual void PhoneStateChange(int aNumActive, int aNumHeld, BluetoothHandsfreeCallState aCallSetupState, const nsAString& aNumber, BluetoothHandsfreeCallAddressType aType, BluetoothHandsfreeResultHandler* aRes) = 0; /* Wide Band Speech */ - virtual void ConfigureWbs(const nsAString& aBdAddr, + virtual void ConfigureWbs(const BluetoothAddress& aBdAddr, BluetoothHandsfreeWbsConfig aConfig, BluetoothHandsfreeResultHandler* aRes) = 0; protected: BluetoothHandsfreeInterface(); virtual ~BluetoothHandsfreeInterface(); };