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

Side by Side Diff: chromeos/dbus/bluetooth_gatt_characteristic_service_provider.cc

Issue 660663003: Use scoped_ptr::Pass instead of scoped_ptr::PassAs<T>. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 "chromeos/dbus/bluetooth_gatt_characteristic_service_provider.h" 5 #include "chromeos/dbus/bluetooth_gatt_characteristic_service_provider.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/weak_ptr.h" 9 #include "base/memory/weak_ptr.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 dbus::MessageReader reader(method_call); 138 dbus::MessageReader reader(method_call);
139 139
140 std::string interface_name; 140 std::string interface_name;
141 std::string property_name; 141 std::string property_name;
142 if (!reader.PopString(&interface_name) || 142 if (!reader.PopString(&interface_name) ||
143 !reader.PopString(&property_name) || 143 !reader.PopString(&property_name) ||
144 reader.HasMoreData()) { 144 reader.HasMoreData()) {
145 scoped_ptr<dbus::ErrorResponse> error_response = 145 scoped_ptr<dbus::ErrorResponse> error_response =
146 dbus::ErrorResponse::FromMethodCall( 146 dbus::ErrorResponse::FromMethodCall(
147 method_call, kErrorInvalidArgs, "Expected 'ss'."); 147 method_call, kErrorInvalidArgs, "Expected 'ss'.");
148 response_sender.Run(error_response.PassAs<dbus::Response>()); 148 response_sender.Run(error_response.Pass());
149 return; 149 return;
150 } 150 }
151 151
152 // Only the GATT characteristic interface is supported. 152 // Only the GATT characteristic interface is supported.
153 if (interface_name != 153 if (interface_name !=
154 bluetooth_gatt_characteristic::kBluetoothGattCharacteristicInterface) { 154 bluetooth_gatt_characteristic::kBluetoothGattCharacteristicInterface) {
155 scoped_ptr<dbus::ErrorResponse> error_response = 155 scoped_ptr<dbus::ErrorResponse> error_response =
156 dbus::ErrorResponse::FromMethodCall( 156 dbus::ErrorResponse::FromMethodCall(
157 method_call, kErrorInvalidArgs, 157 method_call, kErrorInvalidArgs,
158 "No such interface: '" + interface_name + "'."); 158 "No such interface: '" + interface_name + "'.");
159 response_sender.Run(error_response.PassAs<dbus::Response>()); 159 response_sender.Run(error_response.Pass());
160 return; 160 return;
161 } 161 }
162 162
163 // If getting the "Value" property, obtain the value from the delegate. 163 // If getting the "Value" property, obtain the value from the delegate.
164 if (property_name == bluetooth_gatt_characteristic::kValueProperty) { 164 if (property_name == bluetooth_gatt_characteristic::kValueProperty) {
165 DCHECK(delegate_); 165 DCHECK(delegate_);
166 delegate_->GetCharacteristicValue( 166 delegate_->GetCharacteristicValue(
167 base::Bind(&BluetoothGattCharacteristicServiceProviderImpl::OnGet, 167 base::Bind(&BluetoothGattCharacteristicServiceProviderImpl::OnGet,
168 weak_ptr_factory_.GetWeakPtr(), 168 weak_ptr_factory_.GetWeakPtr(),
169 method_call, response_sender), 169 method_call, response_sender),
(...skipping 13 matching lines...) Expand all
183 writer.OpenVariant("s", &variant_writer); 183 writer.OpenVariant("s", &variant_writer);
184 variant_writer.AppendString(uuid_); 184 variant_writer.AppendString(uuid_);
185 writer.CloseContainer(&variant_writer); 185 writer.CloseContainer(&variant_writer);
186 } else if (property_name == 186 } else if (property_name ==
187 bluetooth_gatt_characteristic::kServiceProperty) { 187 bluetooth_gatt_characteristic::kServiceProperty) {
188 writer.OpenVariant("o", &variant_writer); 188 writer.OpenVariant("o", &variant_writer);
189 variant_writer.AppendObjectPath(service_path_); 189 variant_writer.AppendObjectPath(service_path_);
190 writer.CloseContainer(&variant_writer); 190 writer.CloseContainer(&variant_writer);
191 } else { 191 } else {
192 response = dbus::ErrorResponse::FromMethodCall( 192 response = dbus::ErrorResponse::FromMethodCall(
193 method_call, kErrorInvalidArgs, 193 method_call,
194 "No such property: '" + property_name + "'.") 194 kErrorInvalidArgs,
195 .PassAs<dbus::Response>(); 195 "No such property: '" + property_name + "'.");
196 } 196 }
197 197
198 response_sender.Run(response.Pass()); 198 response_sender.Run(response.Pass());
199 } 199 }
200 200
201 // Called by dbus:: when the Bluetooth daemon sets a single property of the 201 // Called by dbus:: when the Bluetooth daemon sets a single property of the
202 // characteristic. 202 // characteristic.
203 void Set(dbus::MethodCall* method_call, 203 void Set(dbus::MethodCall* method_call,
204 dbus::ExportedObject::ResponseSender response_sender) { 204 dbus::ExportedObject::ResponseSender response_sender) {
205 VLOG(2) << "BluetoothGattCharacteristicServiceProvider::Set: " 205 VLOG(2) << "BluetoothGattCharacteristicServiceProvider::Set: "
206 << object_path_.value(); 206 << object_path_.value();
207 DCHECK(OnOriginThread()); 207 DCHECK(OnOriginThread());
208 208
209 dbus::MessageReader reader(method_call); 209 dbus::MessageReader reader(method_call);
210 210
211 std::string interface_name; 211 std::string interface_name;
212 std::string property_name; 212 std::string property_name;
213 dbus::MessageReader variant_reader(NULL); 213 dbus::MessageReader variant_reader(NULL);
214 if (!reader.PopString(&interface_name) || 214 if (!reader.PopString(&interface_name) ||
215 !reader.PopString(&property_name) || 215 !reader.PopString(&property_name) ||
216 !reader.PopVariant(&variant_reader) || 216 !reader.PopVariant(&variant_reader) ||
217 reader.HasMoreData()) { 217 reader.HasMoreData()) {
218 scoped_ptr<dbus::ErrorResponse> error_response = 218 scoped_ptr<dbus::ErrorResponse> error_response =
219 dbus::ErrorResponse::FromMethodCall( 219 dbus::ErrorResponse::FromMethodCall(
220 method_call, kErrorInvalidArgs, "Expected 'ssv'."); 220 method_call, kErrorInvalidArgs, "Expected 'ssv'.");
221 response_sender.Run(error_response.PassAs<dbus::Response>()); 221 response_sender.Run(error_response.Pass());
222 return; 222 return;
223 } 223 }
224 224
225 // Only the GATT characteristic interface is allowed. 225 // Only the GATT characteristic interface is allowed.
226 if (interface_name != 226 if (interface_name !=
227 bluetooth_gatt_characteristic::kBluetoothGattCharacteristicInterface) { 227 bluetooth_gatt_characteristic::kBluetoothGattCharacteristicInterface) {
228 scoped_ptr<dbus::ErrorResponse> error_response = 228 scoped_ptr<dbus::ErrorResponse> error_response =
229 dbus::ErrorResponse::FromMethodCall( 229 dbus::ErrorResponse::FromMethodCall(
230 method_call, kErrorInvalidArgs, 230 method_call, kErrorInvalidArgs,
231 "No such interface: '" + interface_name + "'."); 231 "No such interface: '" + interface_name + "'.");
232 response_sender.Run(error_response.PassAs<dbus::Response>()); 232 response_sender.Run(error_response.Pass());
233 return; 233 return;
234 } 234 }
235 235
236 // Only the "Value" property is writeable. 236 // Only the "Value" property is writeable.
237 if (property_name != bluetooth_gatt_characteristic::kValueProperty) { 237 if (property_name != bluetooth_gatt_characteristic::kValueProperty) {
238 std::string error_name; 238 std::string error_name;
239 std::string error_message; 239 std::string error_message;
240 if (property_name == bluetooth_gatt_characteristic::kUUIDProperty || 240 if (property_name == bluetooth_gatt_characteristic::kUUIDProperty ||
241 property_name == bluetooth_gatt_characteristic::kServiceProperty) { 241 property_name == bluetooth_gatt_characteristic::kServiceProperty) {
242 error_name = kErrorPropertyReadOnly; 242 error_name = kErrorPropertyReadOnly;
243 error_message = "Read-only property: '" + property_name + "'."; 243 error_message = "Read-only property: '" + property_name + "'.";
244 } else { 244 } else {
245 error_name = kErrorInvalidArgs; 245 error_name = kErrorInvalidArgs;
246 error_message = "No such property: '" + property_name + "'."; 246 error_message = "No such property: '" + property_name + "'.";
247 } 247 }
248 scoped_ptr<dbus::ErrorResponse> error_response = 248 scoped_ptr<dbus::ErrorResponse> error_response =
249 dbus::ErrorResponse::FromMethodCall( 249 dbus::ErrorResponse::FromMethodCall(
250 method_call, error_name, error_message); 250 method_call, error_name, error_message);
251 response_sender.Run(error_response.PassAs<dbus::Response>()); 251 response_sender.Run(error_response.Pass());
252 return; 252 return;
253 } 253 }
254 254
255 // Obtain the value. 255 // Obtain the value.
256 const uint8* bytes = NULL; 256 const uint8* bytes = NULL;
257 size_t length = 0; 257 size_t length = 0;
258 if (!variant_reader.PopArrayOfBytes(&bytes, &length)) { 258 if (!variant_reader.PopArrayOfBytes(&bytes, &length)) {
259 scoped_ptr<dbus::ErrorResponse> error_response = 259 scoped_ptr<dbus::ErrorResponse> error_response =
260 dbus::ErrorResponse::FromMethodCall( 260 dbus::ErrorResponse::FromMethodCall(
261 method_call, kErrorInvalidArgs, 261 method_call, kErrorInvalidArgs,
262 "Property '" + property_name + "' has type 'ay'."); 262 "Property '" + property_name + "' has type 'ay'.");
263 response_sender.Run(error_response.PassAs<dbus::Response>()); 263 response_sender.Run(error_response.Pass());
264 return; 264 return;
265 } 265 }
266 266
267 // Pass the set request onto the delegate. 267 // Pass the set request onto the delegate.
268 std::vector<uint8> value(bytes, bytes + length); 268 std::vector<uint8> value(bytes, bytes + length);
269 DCHECK(delegate_); 269 DCHECK(delegate_);
270 delegate_->SetCharacteristicValue( 270 delegate_->SetCharacteristicValue(
271 value, 271 value,
272 base::Bind(&BluetoothGattCharacteristicServiceProviderImpl::OnSet, 272 base::Bind(&BluetoothGattCharacteristicServiceProviderImpl::OnSet,
273 weak_ptr_factory_.GetWeakPtr(), 273 weak_ptr_factory_.GetWeakPtr(),
(...skipping 11 matching lines...) Expand all
285 << object_path_.value(); 285 << object_path_.value();
286 DCHECK(OnOriginThread()); 286 DCHECK(OnOriginThread());
287 287
288 dbus::MessageReader reader(method_call); 288 dbus::MessageReader reader(method_call);
289 289
290 std::string interface_name; 290 std::string interface_name;
291 if (!reader.PopString(&interface_name) || reader.HasMoreData()) { 291 if (!reader.PopString(&interface_name) || reader.HasMoreData()) {
292 scoped_ptr<dbus::ErrorResponse> error_response = 292 scoped_ptr<dbus::ErrorResponse> error_response =
293 dbus::ErrorResponse::FromMethodCall( 293 dbus::ErrorResponse::FromMethodCall(
294 method_call, kErrorInvalidArgs, "Expected 's'."); 294 method_call, kErrorInvalidArgs, "Expected 's'.");
295 response_sender.Run(error_response.PassAs<dbus::Response>()); 295 response_sender.Run(error_response.Pass());
296 return; 296 return;
297 } 297 }
298 298
299 // Only the GATT characteristic interface is supported. 299 // Only the GATT characteristic interface is supported.
300 if (interface_name != 300 if (interface_name !=
301 bluetooth_gatt_characteristic::kBluetoothGattCharacteristicInterface) { 301 bluetooth_gatt_characteristic::kBluetoothGattCharacteristicInterface) {
302 scoped_ptr<dbus::ErrorResponse> error_response = 302 scoped_ptr<dbus::ErrorResponse> error_response =
303 dbus::ErrorResponse::FromMethodCall( 303 dbus::ErrorResponse::FromMethodCall(
304 method_call, kErrorInvalidArgs, 304 method_call, kErrorInvalidArgs,
305 "No such interface: '" + interface_name + "'."); 305 "No such interface: '" + interface_name + "'.");
306 response_sender.Run(error_response.PassAs<dbus::Response>()); 306 response_sender.Run(error_response.Pass());
307 return; 307 return;
308 } 308 }
309 309
310 // Try to obtain the value from the delegate. We will construct the 310 // Try to obtain the value from the delegate. We will construct the
311 // response in the success callback. 311 // response in the success callback.
312 DCHECK(delegate_); 312 DCHECK(delegate_);
313 delegate_->GetCharacteristicValue( 313 delegate_->GetCharacteristicValue(
314 base::Bind(&BluetoothGattCharacteristicServiceProviderImpl::OnGetAll, 314 base::Bind(&BluetoothGattCharacteristicServiceProviderImpl::OnGetAll,
315 weak_ptr_factory_.GetWeakPtr(), 315 weak_ptr_factory_.GetWeakPtr(),
316 method_call, response_sender), 316 method_call, response_sender),
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 400
401 // Called by the Delegate in response to a failed method call to get or set 401 // Called by the Delegate in response to a failed method call to get or set
402 // the characteristic value. 402 // the characteristic value.
403 void OnFailure(dbus::MethodCall* method_call, 403 void OnFailure(dbus::MethodCall* method_call,
404 dbus::ExportedObject::ResponseSender response_sender) { 404 dbus::ExportedObject::ResponseSender response_sender) {
405 VLOG(2) << "Failed to get/set characteristic value. Report error."; 405 VLOG(2) << "Failed to get/set characteristic value. Report error.";
406 scoped_ptr<dbus::ErrorResponse> error_response = 406 scoped_ptr<dbus::ErrorResponse> error_response =
407 dbus::ErrorResponse::FromMethodCall( 407 dbus::ErrorResponse::FromMethodCall(
408 method_call, kErrorFailed, 408 method_call, kErrorFailed,
409 "Failed to get/set characteristic value."); 409 "Failed to get/set characteristic value.");
410 response_sender.Run(error_response.PassAs<dbus::Response>()); 410 response_sender.Run(error_response.Pass());
411 } 411 }
412 412
413 // Origin thread (i.e. the UI thread in production). 413 // Origin thread (i.e. the UI thread in production).
414 base::PlatformThreadId origin_thread_id_; 414 base::PlatformThreadId origin_thread_id_;
415 415
416 // 128-bit characteristic UUID of this object. 416 // 128-bit characteristic UUID of this object.
417 std::string uuid_; 417 std::string uuid_;
418 418
419 // D-Bus bus object is exported on, not owned by this object and must 419 // D-Bus bus object is exported on, not owned by this object and must
420 // outlive it. 420 // outlive it.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 const dbus::ObjectPath& service_path) { 466 const dbus::ObjectPath& service_path) {
467 if (!DBusThreadManager::Get()->IsUsingStub(DBusClientBundle::BLUETOOTH)) { 467 if (!DBusThreadManager::Get()->IsUsingStub(DBusClientBundle::BLUETOOTH)) {
468 return new BluetoothGattCharacteristicServiceProviderImpl( 468 return new BluetoothGattCharacteristicServiceProviderImpl(
469 bus, object_path, delegate, uuid, flags, permissions, service_path); 469 bus, object_path, delegate, uuid, flags, permissions, service_path);
470 } 470 }
471 return new FakeBluetoothGattCharacteristicServiceProvider( 471 return new FakeBluetoothGattCharacteristicServiceProvider(
472 object_path, delegate, uuid, flags, permissions, service_path); 472 object_path, delegate, uuid, flags, permissions, service_path);
473 } 473 }
474 474
475 } // namespace chromeos 475 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/bluetooth_agent_service_provider.cc ('k') | chromeos/dbus/bluetooth_gatt_descriptor_service_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698