OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/api/bluetooth/bluetooth_private_api.h" | 5 #include "chrome/browser/extensions/api/bluetooth/bluetooth_private_api.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "chrome/browser/extensions/api/bluetooth/bluetooth_api.h" | 10 #include "chrome/browser/extensions/api/bluetooth/bluetooth_api.h" |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 } | 113 } |
114 | 114 |
115 } // namespace | 115 } // namespace |
116 | 116 |
117 BluetoothPrivateSetAdapterStateFunction:: | 117 BluetoothPrivateSetAdapterStateFunction:: |
118 BluetoothPrivateSetAdapterStateFunction() {} | 118 BluetoothPrivateSetAdapterStateFunction() {} |
119 | 119 |
120 BluetoothPrivateSetAdapterStateFunction:: | 120 BluetoothPrivateSetAdapterStateFunction:: |
121 ~BluetoothPrivateSetAdapterStateFunction() {} | 121 ~BluetoothPrivateSetAdapterStateFunction() {} |
122 | 122 |
123 bool BluetoothPrivateSetAdapterStateFunction::DoWork( | 123 void BluetoothPrivateSetAdapterStateFunction::DoWork( |
124 scoped_refptr<device::BluetoothAdapter> adapter) { | 124 scoped_refptr<device::BluetoothAdapter> adapter) { |
125 scoped_ptr<bt_private::SetAdapterState::Params> params( | 125 scoped_ptr<bt_private::SetAdapterState::Params> params( |
126 bt_private::SetAdapterState::Params::Create(*args_)); | 126 bt_private::SetAdapterState::Params::Create(*args_)); |
127 EXTENSION_FUNCTION_VALIDATE(params.get()); | 127 EXTENSION_FUNCTION_VALIDATE(params.get()); |
128 | 128 |
129 if (!adapter->IsPresent()) { | 129 if (!adapter->IsPresent()) { |
130 SetError(kAdapterNotPresent); | 130 SetError(kAdapterNotPresent); |
131 SendResponse(false); | 131 SendResponse(false); |
132 return true; | 132 return; |
133 } | 133 } |
134 | 134 |
135 const bt_private::NewAdapterState& new_state = params->adapter_state; | 135 const bt_private::NewAdapterState& new_state = params->adapter_state; |
136 | 136 |
137 // These properties are not owned. | 137 // These properties are not owned. |
138 std::string* name = new_state.name.get(); | 138 std::string* name = new_state.name.get(); |
139 bool* powered = new_state.powered.get(); | 139 bool* powered = new_state.powered.get(); |
140 bool* discoverable = new_state.discoverable.get(); | 140 bool* discoverable = new_state.discoverable.get(); |
141 | 141 |
142 if (name && adapter->GetName() != *name) { | 142 if (name && adapter->GetName() != *name) { |
(...skipping 13 matching lines...) Expand all Loading... |
156 if (discoverable && adapter->IsDiscoverable() != *discoverable) { | 156 if (discoverable && adapter->IsDiscoverable() != *discoverable) { |
157 pending_properties_.insert(kDiscoverableProperty); | 157 pending_properties_.insert(kDiscoverableProperty); |
158 adapter->SetDiscoverable( | 158 adapter->SetDiscoverable( |
159 *discoverable, | 159 *discoverable, |
160 CreatePropertySetCallback(kDiscoverableProperty), | 160 CreatePropertySetCallback(kDiscoverableProperty), |
161 CreatePropertyErrorCallback(kDiscoverableProperty)); | 161 CreatePropertyErrorCallback(kDiscoverableProperty)); |
162 } | 162 } |
163 | 163 |
164 if (pending_properties_.empty()) | 164 if (pending_properties_.empty()) |
165 SendResponse(true); | 165 SendResponse(true); |
166 return true; | |
167 } | 166 } |
168 | 167 |
169 base::Closure | 168 base::Closure |
170 BluetoothPrivateSetAdapterStateFunction::CreatePropertySetCallback( | 169 BluetoothPrivateSetAdapterStateFunction::CreatePropertySetCallback( |
171 const std::string& property_name) { | 170 const std::string& property_name) { |
172 return base::Bind( | 171 return base::Bind( |
173 &BluetoothPrivateSetAdapterStateFunction::OnAdapterPropertySet, | 172 &BluetoothPrivateSetAdapterStateFunction::OnAdapterPropertySet, |
174 this, | 173 this, |
175 property_name); | 174 property_name); |
176 } | 175 } |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 SetError(error); | 224 SetError(error); |
226 SendResponse(false); | 225 SendResponse(false); |
227 } | 226 } |
228 | 227 |
229 BluetoothPrivateSetPairingResponseFunction:: | 228 BluetoothPrivateSetPairingResponseFunction:: |
230 BluetoothPrivateSetPairingResponseFunction() {} | 229 BluetoothPrivateSetPairingResponseFunction() {} |
231 | 230 |
232 BluetoothPrivateSetPairingResponseFunction:: | 231 BluetoothPrivateSetPairingResponseFunction:: |
233 ~BluetoothPrivateSetPairingResponseFunction() {} | 232 ~BluetoothPrivateSetPairingResponseFunction() {} |
234 | 233 |
235 bool BluetoothPrivateSetPairingResponseFunction::DoWork( | 234 void BluetoothPrivateSetPairingResponseFunction::DoWork( |
236 scoped_refptr<device::BluetoothAdapter> adapter) { | 235 scoped_refptr<device::BluetoothAdapter> adapter) { |
237 scoped_ptr<bt_private::SetPairingResponse::Params> params( | 236 scoped_ptr<bt_private::SetPairingResponse::Params> params( |
238 bt_private::SetPairingResponse::Params::Create(*args_)); | 237 bt_private::SetPairingResponse::Params::Create(*args_)); |
239 EXTENSION_FUNCTION_VALIDATE(params.get()); | 238 EXTENSION_FUNCTION_VALIDATE(params.get()); |
240 const bt_private::SetPairingResponseOptions& options = params->options; | 239 const bt_private::SetPairingResponseOptions& options = params->options; |
241 | 240 |
242 BluetoothEventRouter* router = | 241 BluetoothEventRouter* router = |
243 BluetoothAPI::Get(browser_context())->event_router(); | 242 BluetoothAPI::Get(browser_context())->event_router(); |
244 if (!router->GetPairingDelegate(extension_id())) { | 243 if (!router->GetPairingDelegate(extension_id())) { |
245 SetError(kPairingNotEnabled); | 244 SetError(kPairingNotEnabled); |
246 SendResponse(false); | 245 SendResponse(false); |
247 return true; | 246 return; |
248 } | 247 } |
249 | 248 |
250 const std::string& device_address = options.device.address; | 249 const std::string& device_address = options.device.address; |
251 device::BluetoothDevice* device = adapter->GetDevice(device_address); | 250 device::BluetoothDevice* device = adapter->GetDevice(device_address); |
252 if (!device) { | 251 if (!device) { |
253 SetError(kDeviceNotFoundError); | 252 SetError(kDeviceNotFoundError); |
254 SendResponse(false); | 253 SendResponse(false); |
255 return true; | 254 return; |
256 } | 255 } |
257 | 256 |
258 if (!ValidatePairingResponseOptions(device, options)) { | 257 if (!ValidatePairingResponseOptions(device, options)) { |
259 SetError(kInvalidPairingResponseOptions); | 258 SetError(kInvalidPairingResponseOptions); |
260 SendResponse(false); | 259 SendResponse(false); |
261 return true; | 260 return; |
262 } | 261 } |
263 | 262 |
264 if (options.pincode.get()) { | 263 if (options.pincode.get()) { |
265 device->SetPinCode(*options.pincode.get()); | 264 device->SetPinCode(*options.pincode.get()); |
266 } else if (options.passkey.get()) { | 265 } else if (options.passkey.get()) { |
267 device->SetPasskey(*options.passkey.get()); | 266 device->SetPasskey(*options.passkey.get()); |
268 } else { | 267 } else { |
269 switch (options.response) { | 268 switch (options.response) { |
270 case bt_private::PAIRING_RESPONSE_CONFIRM: | 269 case bt_private::PAIRING_RESPONSE_CONFIRM: |
271 device->ConfirmPairing(); | 270 device->ConfirmPairing(); |
272 break; | 271 break; |
273 case bt_private::PAIRING_RESPONSE_REJECT: | 272 case bt_private::PAIRING_RESPONSE_REJECT: |
274 device->RejectPairing(); | 273 device->RejectPairing(); |
275 break; | 274 break; |
276 case bt_private::PAIRING_RESPONSE_CANCEL: | 275 case bt_private::PAIRING_RESPONSE_CANCEL: |
277 device->CancelPairing(); | 276 device->CancelPairing(); |
278 break; | 277 break; |
279 default: | 278 default: |
280 NOTREACHED(); | 279 NOTREACHED(); |
281 } | 280 } |
282 } | 281 } |
283 | 282 |
284 SendResponse(true); | 283 SendResponse(true); |
285 return true; | |
286 } | 284 } |
287 | 285 |
288 } // namespace api | 286 } // namespace api |
289 | 287 |
290 } // namespace extensions | 288 } // namespace extensions |
OLD | NEW |