Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(260)

Side by Side Diff: device/bluetooth/dbus/bluetooth_gatt_descriptor_service_provider.cc

Issue 1544323002: Convert Pass()→std::move() in //device (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "device/bluetooth/dbus/bluetooth_gatt_descriptor_service_provider.h" 5 #include "device/bluetooth/dbus/bluetooth_gatt_descriptor_service_provider.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility>
8 9
9 #include "base/bind.h" 10 #include "base/bind.h"
10 #include "base/logging.h" 11 #include "base/logging.h"
11 #include "base/macros.h" 12 #include "base/macros.h"
12 #include "base/memory/weak_ptr.h" 13 #include "base/memory/weak_ptr.h"
13 #include "base/strings/string_util.h" 14 #include "base/strings/string_util.h"
14 #include "base/threading/platform_thread.h" 15 #include "base/threading/platform_thread.h"
15 #include "dbus/exported_object.h" 16 #include "dbus/exported_object.h"
16 #include "dbus/message.h" 17 #include "dbus/message.h"
17 #include "device/bluetooth/dbus/bluez_dbus_manager.h" 18 #include "device/bluetooth/dbus/bluez_dbus_manager.h"
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 133
133 dbus::MessageReader reader(method_call); 134 dbus::MessageReader reader(method_call);
134 135
135 std::string interface_name; 136 std::string interface_name;
136 std::string property_name; 137 std::string property_name;
137 if (!reader.PopString(&interface_name) || 138 if (!reader.PopString(&interface_name) ||
138 !reader.PopString(&property_name) || reader.HasMoreData()) { 139 !reader.PopString(&property_name) || reader.HasMoreData()) {
139 scoped_ptr<dbus::ErrorResponse> error_response = 140 scoped_ptr<dbus::ErrorResponse> error_response =
140 dbus::ErrorResponse::FromMethodCall(method_call, kErrorInvalidArgs, 141 dbus::ErrorResponse::FromMethodCall(method_call, kErrorInvalidArgs,
141 "Expected 'ss'."); 142 "Expected 'ss'.");
142 response_sender.Run(error_response.Pass()); 143 response_sender.Run(std::move(error_response));
143 return; 144 return;
144 } 145 }
145 146
146 // Only the GATT descriptor interface is supported. 147 // Only the GATT descriptor interface is supported.
147 if (interface_name != 148 if (interface_name !=
148 bluetooth_gatt_descriptor::kBluetoothGattDescriptorInterface) { 149 bluetooth_gatt_descriptor::kBluetoothGattDescriptorInterface) {
149 scoped_ptr<dbus::ErrorResponse> error_response = 150 scoped_ptr<dbus::ErrorResponse> error_response =
150 dbus::ErrorResponse::FromMethodCall( 151 dbus::ErrorResponse::FromMethodCall(
151 method_call, kErrorInvalidArgs, 152 method_call, kErrorInvalidArgs,
152 "No such interface: '" + interface_name + "'."); 153 "No such interface: '" + interface_name + "'.");
153 response_sender.Run(error_response.Pass()); 154 response_sender.Run(std::move(error_response));
154 return; 155 return;
155 } 156 }
156 157
157 // If getting the "Value" property, obtain the value from the delegate. 158 // If getting the "Value" property, obtain the value from the delegate.
158 if (property_name == bluetooth_gatt_descriptor::kValueProperty) { 159 if (property_name == bluetooth_gatt_descriptor::kValueProperty) {
159 DCHECK(delegate_); 160 DCHECK(delegate_);
160 delegate_->GetDescriptorValue( 161 delegate_->GetDescriptorValue(
161 base::Bind(&BluetoothGattDescriptorServiceProviderImpl::OnGet, 162 base::Bind(&BluetoothGattDescriptorServiceProviderImpl::OnGet,
162 weak_ptr_factory_.GetWeakPtr(), method_call, 163 weak_ptr_factory_.GetWeakPtr(), method_call,
163 response_sender), 164 response_sender),
(...skipping 17 matching lines...) Expand all
181 bluetooth_gatt_descriptor::kCharacteristicProperty) { 182 bluetooth_gatt_descriptor::kCharacteristicProperty) {
182 writer.OpenVariant("o", &variant_writer); 183 writer.OpenVariant("o", &variant_writer);
183 variant_writer.AppendObjectPath(characteristic_path_); 184 variant_writer.AppendObjectPath(characteristic_path_);
184 writer.CloseContainer(&variant_writer); 185 writer.CloseContainer(&variant_writer);
185 } else { 186 } else {
186 response = dbus::ErrorResponse::FromMethodCall( 187 response = dbus::ErrorResponse::FromMethodCall(
187 method_call, kErrorInvalidArgs, 188 method_call, kErrorInvalidArgs,
188 "No such property: '" + property_name + "'."); 189 "No such property: '" + property_name + "'.");
189 } 190 }
190 191
191 response_sender.Run(response.Pass()); 192 response_sender.Run(std::move(response));
192 } 193 }
193 194
194 // Called by dbus:: when the Bluetooth daemon sets a single property of the 195 // Called by dbus:: when the Bluetooth daemon sets a single property of the
195 // descriptor. 196 // descriptor.
196 void Set(dbus::MethodCall* method_call, 197 void Set(dbus::MethodCall* method_call,
197 dbus::ExportedObject::ResponseSender response_sender) { 198 dbus::ExportedObject::ResponseSender response_sender) {
198 VLOG(2) << "BluetoothGattDescriptorServiceProvider::Set: " 199 VLOG(2) << "BluetoothGattDescriptorServiceProvider::Set: "
199 << object_path_.value(); 200 << object_path_.value();
200 DCHECK(OnOriginThread()); 201 DCHECK(OnOriginThread());
201 202
202 dbus::MessageReader reader(method_call); 203 dbus::MessageReader reader(method_call);
203 204
204 std::string interface_name; 205 std::string interface_name;
205 std::string property_name; 206 std::string property_name;
206 dbus::MessageReader variant_reader(NULL); 207 dbus::MessageReader variant_reader(NULL);
207 if (!reader.PopString(&interface_name) || 208 if (!reader.PopString(&interface_name) ||
208 !reader.PopString(&property_name) || 209 !reader.PopString(&property_name) ||
209 !reader.PopVariant(&variant_reader) || reader.HasMoreData()) { 210 !reader.PopVariant(&variant_reader) || reader.HasMoreData()) {
210 scoped_ptr<dbus::ErrorResponse> error_response = 211 scoped_ptr<dbus::ErrorResponse> error_response =
211 dbus::ErrorResponse::FromMethodCall(method_call, kErrorInvalidArgs, 212 dbus::ErrorResponse::FromMethodCall(method_call, kErrorInvalidArgs,
212 "Expected 'ssv'."); 213 "Expected 'ssv'.");
213 response_sender.Run(error_response.Pass()); 214 response_sender.Run(std::move(error_response));
214 return; 215 return;
215 } 216 }
216 217
217 // Only the GATT descriptor interface is allowed. 218 // Only the GATT descriptor interface is allowed.
218 if (interface_name != 219 if (interface_name !=
219 bluetooth_gatt_descriptor::kBluetoothGattDescriptorInterface) { 220 bluetooth_gatt_descriptor::kBluetoothGattDescriptorInterface) {
220 scoped_ptr<dbus::ErrorResponse> error_response = 221 scoped_ptr<dbus::ErrorResponse> error_response =
221 dbus::ErrorResponse::FromMethodCall( 222 dbus::ErrorResponse::FromMethodCall(
222 method_call, kErrorInvalidArgs, 223 method_call, kErrorInvalidArgs,
223 "No such interface: '" + interface_name + "'."); 224 "No such interface: '" + interface_name + "'.");
224 response_sender.Run(error_response.Pass()); 225 response_sender.Run(std::move(error_response));
225 return; 226 return;
226 } 227 }
227 228
228 // Only the "Value" property is writeable. 229 // Only the "Value" property is writeable.
229 if (property_name != bluetooth_gatt_descriptor::kValueProperty) { 230 if (property_name != bluetooth_gatt_descriptor::kValueProperty) {
230 std::string error_name; 231 std::string error_name;
231 std::string error_message; 232 std::string error_message;
232 if (property_name == bluetooth_gatt_descriptor::kUUIDProperty || 233 if (property_name == bluetooth_gatt_descriptor::kUUIDProperty ||
233 property_name == bluetooth_gatt_descriptor::kCharacteristicProperty) { 234 property_name == bluetooth_gatt_descriptor::kCharacteristicProperty) {
234 error_name = kErrorPropertyReadOnly; 235 error_name = kErrorPropertyReadOnly;
235 error_message = "Read-only property: '" + property_name + "'."; 236 error_message = "Read-only property: '" + property_name + "'.";
236 } else { 237 } else {
237 error_name = kErrorInvalidArgs; 238 error_name = kErrorInvalidArgs;
238 error_message = "No such property: '" + property_name + "'."; 239 error_message = "No such property: '" + property_name + "'.";
239 } 240 }
240 scoped_ptr<dbus::ErrorResponse> error_response = 241 scoped_ptr<dbus::ErrorResponse> error_response =
241 dbus::ErrorResponse::FromMethodCall(method_call, error_name, 242 dbus::ErrorResponse::FromMethodCall(method_call, error_name,
242 error_message); 243 error_message);
243 response_sender.Run(error_response.Pass()); 244 response_sender.Run(std::move(error_response));
244 return; 245 return;
245 } 246 }
246 247
247 // Obtain the value. 248 // Obtain the value.
248 const uint8_t* bytes = NULL; 249 const uint8_t* bytes = NULL;
249 size_t length = 0; 250 size_t length = 0;
250 if (!variant_reader.PopArrayOfBytes(&bytes, &length)) { 251 if (!variant_reader.PopArrayOfBytes(&bytes, &length)) {
251 scoped_ptr<dbus::ErrorResponse> error_response = 252 scoped_ptr<dbus::ErrorResponse> error_response =
252 dbus::ErrorResponse::FromMethodCall( 253 dbus::ErrorResponse::FromMethodCall(
253 method_call, kErrorInvalidArgs, 254 method_call, kErrorInvalidArgs,
254 "Property '" + property_name + "' has type 'ay'."); 255 "Property '" + property_name + "' has type 'ay'.");
255 response_sender.Run(error_response.Pass()); 256 response_sender.Run(std::move(error_response));
256 return; 257 return;
257 } 258 }
258 259
259 // Pass the set request onto the delegate. 260 // Pass the set request onto the delegate.
260 std::vector<uint8_t> value(bytes, bytes + length); 261 std::vector<uint8_t> value(bytes, bytes + length);
261 DCHECK(delegate_); 262 DCHECK(delegate_);
262 delegate_->SetDescriptorValue( 263 delegate_->SetDescriptorValue(
263 value, base::Bind(&BluetoothGattDescriptorServiceProviderImpl::OnSet, 264 value, base::Bind(&BluetoothGattDescriptorServiceProviderImpl::OnSet,
264 weak_ptr_factory_.GetWeakPtr(), method_call, 265 weak_ptr_factory_.GetWeakPtr(), method_call,
265 response_sender), 266 response_sender),
(...skipping 10 matching lines...) Expand all
276 << object_path_.value(); 277 << object_path_.value();
277 DCHECK(OnOriginThread()); 278 DCHECK(OnOriginThread());
278 279
279 dbus::MessageReader reader(method_call); 280 dbus::MessageReader reader(method_call);
280 281
281 std::string interface_name; 282 std::string interface_name;
282 if (!reader.PopString(&interface_name) || reader.HasMoreData()) { 283 if (!reader.PopString(&interface_name) || reader.HasMoreData()) {
283 scoped_ptr<dbus::ErrorResponse> error_response = 284 scoped_ptr<dbus::ErrorResponse> error_response =
284 dbus::ErrorResponse::FromMethodCall(method_call, kErrorInvalidArgs, 285 dbus::ErrorResponse::FromMethodCall(method_call, kErrorInvalidArgs,
285 "Expected 's'."); 286 "Expected 's'.");
286 response_sender.Run(error_response.Pass()); 287 response_sender.Run(std::move(error_response));
287 return; 288 return;
288 } 289 }
289 290
290 // Only the GATT descriptor interface is supported. 291 // Only the GATT descriptor interface is supported.
291 if (interface_name != 292 if (interface_name !=
292 bluetooth_gatt_descriptor::kBluetoothGattDescriptorInterface) { 293 bluetooth_gatt_descriptor::kBluetoothGattDescriptorInterface) {
293 scoped_ptr<dbus::ErrorResponse> error_response = 294 scoped_ptr<dbus::ErrorResponse> error_response =
294 dbus::ErrorResponse::FromMethodCall( 295 dbus::ErrorResponse::FromMethodCall(
295 method_call, kErrorInvalidArgs, 296 method_call, kErrorInvalidArgs,
296 "No such interface: '" + interface_name + "'."); 297 "No such interface: '" + interface_name + "'.");
297 response_sender.Run(error_response.Pass()); 298 response_sender.Run(std::move(error_response));
298 return; 299 return;
299 } 300 }
300 301
301 // Try to obtain the value from the delegate. We will construct the 302 // Try to obtain the value from the delegate. We will construct the
302 // response in the success callback. 303 // response in the success callback.
303 DCHECK(delegate_); 304 DCHECK(delegate_);
304 delegate_->GetDescriptorValue( 305 delegate_->GetDescriptorValue(
305 base::Bind(&BluetoothGattDescriptorServiceProviderImpl::OnGetAll, 306 base::Bind(&BluetoothGattDescriptorServiceProviderImpl::OnGetAll,
306 weak_ptr_factory_.GetWeakPtr(), method_call, 307 weak_ptr_factory_.GetWeakPtr(), method_call,
307 response_sender), 308 response_sender),
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 dict_entry_writer.AppendString(bluetooth_gatt_descriptor::kValueProperty); 352 dict_entry_writer.AppendString(bluetooth_gatt_descriptor::kValueProperty);
352 dict_entry_writer.OpenVariant("ay", &variant_writer); 353 dict_entry_writer.OpenVariant("ay", &variant_writer);
353 variant_writer.AppendArrayOfBytes(value.data(), value.size()); 354 variant_writer.AppendArrayOfBytes(value.data(), value.size());
354 dict_entry_writer.CloseContainer(&variant_writer); 355 dict_entry_writer.CloseContainer(&variant_writer);
355 array_writer.CloseContainer(&dict_entry_writer); 356 array_writer.CloseContainer(&dict_entry_writer);
356 357
357 // TODO(armansito): Process "Permissions" property. 358 // TODO(armansito): Process "Permissions" property.
358 359
359 writer.CloseContainer(&array_writer); 360 writer.CloseContainer(&array_writer);
360 361
361 response_sender.Run(response.Pass()); 362 response_sender.Run(std::move(response));
362 } 363 }
363 364
364 // Called by the Delegate in response to a successful method call to get the 365 // Called by the Delegate in response to a successful method call to get the
365 // descriptor value. 366 // descriptor value.
366 void OnGet(dbus::MethodCall* method_call, 367 void OnGet(dbus::MethodCall* method_call,
367 dbus::ExportedObject::ResponseSender response_sender, 368 dbus::ExportedObject::ResponseSender response_sender,
368 const std::vector<uint8_t>& value) { 369 const std::vector<uint8_t>& value) {
369 VLOG(2) << "Returning descriptor value obtained from delegate."; 370 VLOG(2) << "Returning descriptor value obtained from delegate.";
370 scoped_ptr<dbus::Response> response = 371 scoped_ptr<dbus::Response> response =
371 dbus::Response::FromMethodCall(method_call); 372 dbus::Response::FromMethodCall(method_call);
372 dbus::MessageWriter writer(response.get()); 373 dbus::MessageWriter writer(response.get());
373 dbus::MessageWriter variant_writer(NULL); 374 dbus::MessageWriter variant_writer(NULL);
374 375
375 writer.OpenVariant("ay", &variant_writer); 376 writer.OpenVariant("ay", &variant_writer);
376 variant_writer.AppendArrayOfBytes(value.data(), value.size()); 377 variant_writer.AppendArrayOfBytes(value.data(), value.size());
377 writer.CloseContainer(&variant_writer); 378 writer.CloseContainer(&variant_writer);
378 379
379 response_sender.Run(response.Pass()); 380 response_sender.Run(std::move(response));
380 } 381 }
381 382
382 // Called by the Delegate in response to a successful method call to set the 383 // Called by the Delegate in response to a successful method call to set the
383 // descriptor value. 384 // descriptor value.
384 void OnSet(dbus::MethodCall* method_call, 385 void OnSet(dbus::MethodCall* method_call,
385 dbus::ExportedObject::ResponseSender response_sender) { 386 dbus::ExportedObject::ResponseSender response_sender) {
386 VLOG(2) << "Successfully set descriptor value. Return success."; 387 VLOG(2) << "Successfully set descriptor value. Return success.";
387 response_sender.Run(dbus::Response::FromMethodCall(method_call)); 388 response_sender.Run(dbus::Response::FromMethodCall(method_call));
388 } 389 }
389 390
390 // Called by the Delegate in response to a failed method call to get or set 391 // Called by the Delegate in response to a failed method call to get or set
391 // the descriptor value. 392 // the descriptor value.
392 void OnFailure(dbus::MethodCall* method_call, 393 void OnFailure(dbus::MethodCall* method_call,
393 dbus::ExportedObject::ResponseSender response_sender) { 394 dbus::ExportedObject::ResponseSender response_sender) {
394 VLOG(2) << "Failed to get/set descriptor value. Report error."; 395 VLOG(2) << "Failed to get/set descriptor value. Report error.";
395 scoped_ptr<dbus::ErrorResponse> error_response = 396 scoped_ptr<dbus::ErrorResponse> error_response =
396 dbus::ErrorResponse::FromMethodCall( 397 dbus::ErrorResponse::FromMethodCall(
397 method_call, kErrorFailed, "Failed to get/set descriptor value."); 398 method_call, kErrorFailed, "Failed to get/set descriptor value.");
398 response_sender.Run(error_response.Pass()); 399 response_sender.Run(std::move(error_response));
399 } 400 }
400 401
401 // Origin thread (i.e. the UI thread in production). 402 // Origin thread (i.e. the UI thread in production).
402 base::PlatformThreadId origin_thread_id_; 403 base::PlatformThreadId origin_thread_id_;
403 404
404 // 128-bit descriptor UUID of this object. 405 // 128-bit descriptor UUID of this object.
405 std::string uuid_; 406 std::string uuid_;
406 407
407 // D-Bus bus object is exported on, not owned by this object and must 408 // D-Bus bus object is exported on, not owned by this object and must
408 // outlive it. 409 // outlive it.
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 const dbus::ObjectPath& characteristic_path) { 452 const dbus::ObjectPath& characteristic_path) {
452 if (!bluez::BluezDBusManager::Get()->IsUsingStub()) { 453 if (!bluez::BluezDBusManager::Get()->IsUsingStub()) {
453 return new BluetoothGattDescriptorServiceProviderImpl( 454 return new BluetoothGattDescriptorServiceProviderImpl(
454 bus, object_path, delegate, uuid, permissions, characteristic_path); 455 bus, object_path, delegate, uuid, permissions, characteristic_path);
455 } 456 }
456 return new FakeBluetoothGattDescriptorServiceProvider( 457 return new FakeBluetoothGattDescriptorServiceProvider(
457 object_path, delegate, uuid, permissions, characteristic_path); 458 object_path, delegate, uuid, permissions, characteristic_path);
458 } 459 }
459 460
460 } // namespace bluez 461 } // namespace bluez
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698