Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
2 /* vim: set ts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5 * You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef mozilla_dom_bluetooth_bluetoothadapter_h__
8 #define mozilla_dom_bluetooth_bluetoothadapter_h__
10 #include "mozilla/Attributes.h"
11 #include "mozilla/DOMEventTargetHelper.h"
12 #include "BluetoothCommon.h"
13 #include "BluetoothPropertyContainer.h"
14 #include "nsCOMPtr.h"
16 namespace mozilla {
17 namespace dom {
18 class DOMRequest;
19 struct MediaMetaData;
20 struct MediaPlayStatus;
21 }
22 }
24 BEGIN_BLUETOOTH_NAMESPACE
26 class BluetoothDevice;
27 class BluetoothSignal;
28 class BluetoothNamedValue;
29 class BluetoothValue;
31 class BluetoothAdapter : public DOMEventTargetHelper
32 , public BluetoothSignalObserver
33 , public BluetoothPropertyContainer
34 {
35 public:
36 NS_DECL_ISUPPORTS_INHERITED
38 NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(BluetoothAdapter,
39 DOMEventTargetHelper)
41 static already_AddRefed<BluetoothAdapter>
42 Create(nsPIDOMWindow* aOwner, const BluetoothValue& aValue);
44 void Notify(const BluetoothSignal& aParam);
46 void Unroot();
47 virtual void SetPropertyByValue(const BluetoothNamedValue& aValue) MOZ_OVERRIDE;
49 virtual void DisconnectFromOwner() MOZ_OVERRIDE;
51 void GetAddress(nsString& aAddress) const
52 {
53 aAddress = mAddress;
54 }
56 uint32_t
57 Class() const
58 {
59 return mClass;
60 }
62 void
63 GetName(nsString& aName) const
64 {
65 aName = mName;
66 }
68 bool
69 Discovering() const
70 {
71 return mDiscovering;
72 }
74 bool
75 Discoverable() const
76 {
77 return mDiscoverable;
78 }
80 uint32_t
81 DiscoverableTimeout() const
82 {
83 return mDiscoverableTimeout;
84 }
86 void GetDevices(JSContext* aContext, JS::MutableHandle<JS::Value> aDevices,
87 ErrorResult& aRv);
88 void GetUuids(JSContext* aContext, JS::MutableHandle<JS::Value> aUuids,
89 ErrorResult& aRv);
91 already_AddRefed<mozilla::dom::DOMRequest>
92 SetName(const nsAString& aName, ErrorResult& aRv);
94 already_AddRefed<DOMRequest>
95 SetDiscoverable(bool aDiscoverable, ErrorResult& aRv);
96 already_AddRefed<DOMRequest>
97 SetDiscoverableTimeout(uint32_t aTimeout, ErrorResult& aRv);
98 already_AddRefed<DOMRequest> StartDiscovery(ErrorResult& aRv);
99 already_AddRefed<DOMRequest> StopDiscovery(ErrorResult& aRv);
101 already_AddRefed<DOMRequest>
102 Pair(const nsAString& aDeviceAddress, ErrorResult& aRv);
103 already_AddRefed<DOMRequest>
104 Unpair(const nsAString& aDeviceAddress, ErrorResult& aRv);
105 already_AddRefed<DOMRequest>
106 GetPairedDevices(ErrorResult& aRv);
107 already_AddRefed<DOMRequest>
108 SetPinCode(const nsAString& aDeviceAddress, const nsAString& aPinCode,
109 ErrorResult& aRv);
110 already_AddRefed<DOMRequest>
111 SetPasskey(const nsAString& aDeviceAddress, uint32_t aPasskey,
112 ErrorResult& aRv);
113 already_AddRefed<DOMRequest>
114 SetPairingConfirmation(const nsAString& aDeviceAddress, bool aConfirmation,
115 ErrorResult& aRv);
116 already_AddRefed<DOMRequest>
117 SetAuthorization(const nsAString& aDeviceAddress, bool aAllow,
118 ErrorResult& aRv);
120 already_AddRefed<DOMRequest>
121 Connect(BluetoothDevice& aDevice,
122 const Optional<short unsigned int>& aServiceUuid, ErrorResult& aRv);
123 already_AddRefed<DOMRequest>
124 Disconnect(BluetoothDevice& aDevice,
125 const Optional<short unsigned int>& aServiceUuid,
126 ErrorResult& aRv);
127 already_AddRefed<DOMRequest>
128 GetConnectedDevices(uint16_t aServiceUuid, ErrorResult& aRv);
130 already_AddRefed<DOMRequest>
131 SendFile(const nsAString& aDeviceAddress, nsIDOMBlob* aBlob,
132 ErrorResult& aRv);
133 already_AddRefed<DOMRequest>
134 StopSendingFile(const nsAString& aDeviceAddress, ErrorResult& aRv);
135 already_AddRefed<DOMRequest>
136 ConfirmReceivingFile(const nsAString& aDeviceAddress, bool aConfirmation,
137 ErrorResult& aRv);
139 already_AddRefed<DOMRequest> ConnectSco(ErrorResult& aRv);
140 already_AddRefed<DOMRequest> DisconnectSco(ErrorResult& aRv);
141 already_AddRefed<DOMRequest> IsScoConnected(ErrorResult& aRv);
143 already_AddRefed<DOMRequest> AnswerWaitingCall(ErrorResult& aRv);
144 already_AddRefed<DOMRequest> IgnoreWaitingCall(ErrorResult& aRv);
145 already_AddRefed<DOMRequest> ToggleCalls(ErrorResult& aRv);
147 already_AddRefed<DOMRequest>
148 SendMediaMetaData(const MediaMetaData& aMediaMetaData, ErrorResult& aRv);
149 already_AddRefed<DOMRequest>
150 SendMediaPlayStatus(const MediaPlayStatus& aMediaPlayStatus, ErrorResult& aRv);
152 IMPL_EVENT_HANDLER(devicefound);
153 IMPL_EVENT_HANDLER(a2dpstatuschanged);
154 IMPL_EVENT_HANDLER(hfpstatuschanged);
155 IMPL_EVENT_HANDLER(pairedstatuschanged);
156 IMPL_EVENT_HANDLER(requestmediaplaystatus);
157 IMPL_EVENT_HANDLER(scostatuschanged);
159 nsPIDOMWindow* GetParentObject() const
160 {
161 return GetOwner();
162 }
164 virtual JSObject*
165 WrapObject(JSContext* aCx) MOZ_OVERRIDE;
167 private:
168 BluetoothAdapter(nsPIDOMWindow* aOwner, const BluetoothValue& aValue);
169 ~BluetoothAdapter();
171 void Root();
173 already_AddRefed<mozilla::dom::DOMRequest>
174 StartStopDiscovery(bool aStart, ErrorResult& aRv);
175 already_AddRefed<mozilla::dom::DOMRequest>
176 PairUnpair(bool aPair, const nsAString& aDeviceAddress, ErrorResult& aRv);
178 JS::Heap<JSObject*> mJsUuids;
179 JS::Heap<JSObject*> mJsDeviceAddresses;
180 nsString mAddress;
181 nsString mName;
182 bool mDiscoverable;
183 bool mDiscovering;
184 bool mPairable;
185 bool mPowered;
186 uint32_t mPairableTimeout;
187 uint32_t mDiscoverableTimeout;
188 uint32_t mClass;
189 nsTArray<nsString> mDeviceAddresses;
190 nsTArray<nsString> mUuids;
191 bool mIsRooted;
192 };
194 END_BLUETOOTH_NAMESPACE
196 #endif