OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "dbus/test_service.h" | 5 #include "dbus/test_service.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | |
9 #include <string> | 8 #include <string> |
| 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/bind.h" | 12 #include "base/bind.h" |
13 #include "base/test/test_timeouts.h" | 13 #include "base/test/test_timeouts.h" |
14 #include "base/threading/platform_thread.h" | 14 #include "base/threading/platform_thread.h" |
15 #include "dbus/bus.h" | 15 #include "dbus/bus.h" |
16 #include "dbus/exported_object.h" | 16 #include "dbus/exported_object.h" |
17 #include "dbus/message.h" | 17 #include "dbus/message.h" |
18 #include "dbus/object_manager.h" | 18 #include "dbus/object_manager.h" |
19 #include "dbus/object_path.h" | 19 #include "dbus/object_path.h" |
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 MessageReader reader(method_call); | 304 MessageReader reader(method_call); |
305 std::string text_message; | 305 std::string text_message; |
306 if (!reader.PopString(&text_message)) { | 306 if (!reader.PopString(&text_message)) { |
307 response_sender.Run(scoped_ptr<Response>()); | 307 response_sender.Run(scoped_ptr<Response>()); |
308 return; | 308 return; |
309 } | 309 } |
310 | 310 |
311 scoped_ptr<Response> response = Response::FromMethodCall(method_call); | 311 scoped_ptr<Response> response = Response::FromMethodCall(method_call); |
312 MessageWriter writer(response.get()); | 312 MessageWriter writer(response.get()); |
313 writer.AppendString(text_message); | 313 writer.AppendString(text_message); |
314 response_sender.Run(response.Pass()); | 314 response_sender.Run(std::move(response)); |
315 } | 315 } |
316 | 316 |
317 void TestService::SlowEcho(MethodCall* method_call, | 317 void TestService::SlowEcho(MethodCall* method_call, |
318 ExportedObject::ResponseSender response_sender) { | 318 ExportedObject::ResponseSender response_sender) { |
319 base::PlatformThread::Sleep(TestTimeouts::tiny_timeout()); | 319 base::PlatformThread::Sleep(TestTimeouts::tiny_timeout()); |
320 Echo(method_call, response_sender); | 320 Echo(method_call, response_sender); |
321 } | 321 } |
322 | 322 |
323 void TestService::AsyncEcho(MethodCall* method_call, | 323 void TestService::AsyncEcho(MethodCall* method_call, |
324 ExportedObject::ResponseSender response_sender) { | 324 ExportedObject::ResponseSender response_sender) { |
(...skipping 20 matching lines...) Expand all Loading... |
345 if (!reader.PopString(&interface)) { | 345 if (!reader.PopString(&interface)) { |
346 response_sender.Run(scoped_ptr<Response>()); | 346 response_sender.Run(scoped_ptr<Response>()); |
347 return; | 347 return; |
348 } | 348 } |
349 | 349 |
350 scoped_ptr<Response> response = Response::FromMethodCall(method_call); | 350 scoped_ptr<Response> response = Response::FromMethodCall(method_call); |
351 MessageWriter writer(response.get()); | 351 MessageWriter writer(response.get()); |
352 | 352 |
353 AddPropertiesToWriter(&writer); | 353 AddPropertiesToWriter(&writer); |
354 | 354 |
355 response_sender.Run(response.Pass()); | 355 response_sender.Run(std::move(response)); |
356 } | 356 } |
357 | 357 |
358 void TestService::GetProperty(MethodCall* method_call, | 358 void TestService::GetProperty(MethodCall* method_call, |
359 ExportedObject::ResponseSender response_sender) { | 359 ExportedObject::ResponseSender response_sender) { |
360 MessageReader reader(method_call); | 360 MessageReader reader(method_call); |
361 std::string interface; | 361 std::string interface; |
362 if (!reader.PopString(&interface)) { | 362 if (!reader.PopString(&interface)) { |
363 response_sender.Run(scoped_ptr<Response>()); | 363 response_sender.Run(scoped_ptr<Response>()); |
364 return; | 364 return; |
365 } | 365 } |
366 | 366 |
367 std::string name; | 367 std::string name; |
368 if (!reader.PopString(&name)) { | 368 if (!reader.PopString(&name)) { |
369 response_sender.Run(scoped_ptr<Response>()); | 369 response_sender.Run(scoped_ptr<Response>()); |
370 return; | 370 return; |
371 } | 371 } |
372 | 372 |
373 if (name == "Name") { | 373 if (name == "Name") { |
374 // Return the previous value for the "Name" property: | 374 // Return the previous value for the "Name" property: |
375 // Variant<"TestService"> | 375 // Variant<"TestService"> |
376 scoped_ptr<Response> response = Response::FromMethodCall(method_call); | 376 scoped_ptr<Response> response = Response::FromMethodCall(method_call); |
377 MessageWriter writer(response.get()); | 377 MessageWriter writer(response.get()); |
378 | 378 |
379 writer.AppendVariantOfString("TestService"); | 379 writer.AppendVariantOfString("TestService"); |
380 | 380 |
381 response_sender.Run(response.Pass()); | 381 response_sender.Run(std::move(response)); |
382 } else if (name == "Version") { | 382 } else if (name == "Version") { |
383 // Return a new value for the "Version" property: | 383 // Return a new value for the "Version" property: |
384 // Variant<20> | 384 // Variant<20> |
385 scoped_ptr<Response> response = Response::FromMethodCall(method_call); | 385 scoped_ptr<Response> response = Response::FromMethodCall(method_call); |
386 MessageWriter writer(response.get()); | 386 MessageWriter writer(response.get()); |
387 | 387 |
388 writer.AppendVariantOfInt16(20); | 388 writer.AppendVariantOfInt16(20); |
389 | 389 |
390 response_sender.Run(response.Pass()); | 390 response_sender.Run(std::move(response)); |
391 } else if (name == "Methods") { | 391 } else if (name == "Methods") { |
392 // Return the previous value for the "Methods" property: | 392 // Return the previous value for the "Methods" property: |
393 // Variant<["Echo", "SlowEcho", "AsyncEcho", "BrokenMethod"]> | 393 // Variant<["Echo", "SlowEcho", "AsyncEcho", "BrokenMethod"]> |
394 scoped_ptr<Response> response = Response::FromMethodCall(method_call); | 394 scoped_ptr<Response> response = Response::FromMethodCall(method_call); |
395 MessageWriter writer(response.get()); | 395 MessageWriter writer(response.get()); |
396 MessageWriter variant_writer(NULL); | 396 MessageWriter variant_writer(NULL); |
397 MessageWriter variant_array_writer(NULL); | 397 MessageWriter variant_array_writer(NULL); |
398 | 398 |
399 writer.OpenVariant("as", &variant_writer); | 399 writer.OpenVariant("as", &variant_writer); |
400 variant_writer.OpenArray("s", &variant_array_writer); | 400 variant_writer.OpenArray("s", &variant_array_writer); |
401 variant_array_writer.AppendString("Echo"); | 401 variant_array_writer.AppendString("Echo"); |
402 variant_array_writer.AppendString("SlowEcho"); | 402 variant_array_writer.AppendString("SlowEcho"); |
403 variant_array_writer.AppendString("AsyncEcho"); | 403 variant_array_writer.AppendString("AsyncEcho"); |
404 variant_array_writer.AppendString("BrokenMethod"); | 404 variant_array_writer.AppendString("BrokenMethod"); |
405 variant_writer.CloseContainer(&variant_array_writer); | 405 variant_writer.CloseContainer(&variant_array_writer); |
406 writer.CloseContainer(&variant_writer); | 406 writer.CloseContainer(&variant_writer); |
407 | 407 |
408 response_sender.Run(response.Pass()); | 408 response_sender.Run(std::move(response)); |
409 } else if (name == "Objects") { | 409 } else if (name == "Objects") { |
410 // Return the previous value for the "Objects" property: | 410 // Return the previous value for the "Objects" property: |
411 // Variant<[objectpath:"/TestObjectPath"]> | 411 // Variant<[objectpath:"/TestObjectPath"]> |
412 scoped_ptr<Response> response = Response::FromMethodCall(method_call); | 412 scoped_ptr<Response> response = Response::FromMethodCall(method_call); |
413 MessageWriter writer(response.get()); | 413 MessageWriter writer(response.get()); |
414 MessageWriter variant_writer(NULL); | 414 MessageWriter variant_writer(NULL); |
415 MessageWriter variant_array_writer(NULL); | 415 MessageWriter variant_array_writer(NULL); |
416 | 416 |
417 writer.OpenVariant("ao", &variant_writer); | 417 writer.OpenVariant("ao", &variant_writer); |
418 variant_writer.OpenArray("o", &variant_array_writer); | 418 variant_writer.OpenArray("o", &variant_array_writer); |
419 variant_array_writer.AppendObjectPath(ObjectPath("/TestObjectPath")); | 419 variant_array_writer.AppendObjectPath(ObjectPath("/TestObjectPath")); |
420 variant_writer.CloseContainer(&variant_array_writer); | 420 variant_writer.CloseContainer(&variant_array_writer); |
421 writer.CloseContainer(&variant_writer); | 421 writer.CloseContainer(&variant_writer); |
422 | 422 |
423 response_sender.Run(response.Pass()); | 423 response_sender.Run(std::move(response)); |
424 } else if (name == "Bytes") { | 424 } else if (name == "Bytes") { |
425 // Return the previous value for the "Bytes" property: | 425 // Return the previous value for the "Bytes" property: |
426 // Variant<[0x54, 0x65, 0x73, 0x74]> | 426 // Variant<[0x54, 0x65, 0x73, 0x74]> |
427 scoped_ptr<Response> response = Response::FromMethodCall(method_call); | 427 scoped_ptr<Response> response = Response::FromMethodCall(method_call); |
428 MessageWriter writer(response.get()); | 428 MessageWriter writer(response.get()); |
429 MessageWriter variant_writer(NULL); | 429 MessageWriter variant_writer(NULL); |
430 MessageWriter variant_array_writer(NULL); | 430 MessageWriter variant_array_writer(NULL); |
431 | 431 |
432 writer.OpenVariant("ay", &variant_writer); | 432 writer.OpenVariant("ay", &variant_writer); |
433 const uint8_t bytes[] = {0x54, 0x65, 0x73, 0x74}; | 433 const uint8_t bytes[] = {0x54, 0x65, 0x73, 0x74}; |
434 variant_writer.AppendArrayOfBytes(bytes, sizeof(bytes)); | 434 variant_writer.AppendArrayOfBytes(bytes, sizeof(bytes)); |
435 writer.CloseContainer(&variant_writer); | 435 writer.CloseContainer(&variant_writer); |
436 | 436 |
437 response_sender.Run(response.Pass()); | 437 response_sender.Run(std::move(response)); |
438 } else { | 438 } else { |
439 // Return error. | 439 // Return error. |
440 response_sender.Run(scoped_ptr<Response>()); | 440 response_sender.Run(scoped_ptr<Response>()); |
441 return; | 441 return; |
442 } | 442 } |
443 } | 443 } |
444 | 444 |
445 void TestService::SetProperty(MethodCall* method_call, | 445 void TestService::SetProperty(MethodCall* method_call, |
446 ExportedObject::ResponseSender response_sender) { | 446 ExportedObject::ResponseSender response_sender) { |
447 MessageReader reader(method_call); | 447 MessageReader reader(method_call); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
498 } else if (action == "Ownership") { | 498 } else if (action == "Ownership") { |
499 ReleaseOwnership(base::Bind(&TestService::OwnershipReleased, | 499 ReleaseOwnership(base::Bind(&TestService::OwnershipReleased, |
500 base::Unretained(this), | 500 base::Unretained(this), |
501 method_call, response_sender)); | 501 method_call, response_sender)); |
502 return; | 502 return; |
503 } else if (action == "InvalidateProperty") { | 503 } else if (action == "InvalidateProperty") { |
504 SendPropertyInvalidatedSignal(); | 504 SendPropertyInvalidatedSignal(); |
505 } | 505 } |
506 | 506 |
507 scoped_ptr<Response> response = Response::FromMethodCall(method_call); | 507 scoped_ptr<Response> response = Response::FromMethodCall(method_call); |
508 response_sender.Run(response.Pass()); | 508 response_sender.Run(std::move(response)); |
509 } | 509 } |
510 | 510 |
511 void TestService::PerformActionResponse( | 511 void TestService::PerformActionResponse( |
512 MethodCall* method_call, | 512 MethodCall* method_call, |
513 ExportedObject::ResponseSender response_sender) { | 513 ExportedObject::ResponseSender response_sender) { |
514 scoped_ptr<Response> response = Response::FromMethodCall(method_call); | 514 scoped_ptr<Response> response = Response::FromMethodCall(method_call); |
515 response_sender.Run(response.Pass()); | 515 response_sender.Run(std::move(response)); |
516 } | 516 } |
517 | 517 |
518 void TestService::OwnershipReleased( | 518 void TestService::OwnershipReleased( |
519 MethodCall* method_call, | 519 MethodCall* method_call, |
520 ExportedObject::ResponseSender response_sender) { | 520 ExportedObject::ResponseSender response_sender) { |
521 RequestOwnership(base::Bind(&TestService::OwnershipRegained, | 521 RequestOwnership(base::Bind(&TestService::OwnershipRegained, |
522 base::Unretained(this), | 522 base::Unretained(this), |
523 method_call, response_sender)); | 523 method_call, response_sender)); |
524 } | 524 } |
525 | 525 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
565 object_array_writer.OpenDictEntry(&object_dict_entry_writer); | 565 object_array_writer.OpenDictEntry(&object_dict_entry_writer); |
566 object_dict_entry_writer.AppendString("org.chromium.TestInterface"); | 566 object_dict_entry_writer.AppendString("org.chromium.TestInterface"); |
567 AddPropertiesToWriter(&object_dict_entry_writer); | 567 AddPropertiesToWriter(&object_dict_entry_writer); |
568 object_array_writer.CloseContainer(&object_dict_entry_writer); | 568 object_array_writer.CloseContainer(&object_dict_entry_writer); |
569 | 569 |
570 dict_entry_writer.CloseContainer(&object_array_writer); | 570 dict_entry_writer.CloseContainer(&object_array_writer); |
571 | 571 |
572 array_writer.CloseContainer(&dict_entry_writer); | 572 array_writer.CloseContainer(&dict_entry_writer); |
573 writer.CloseContainer(&array_writer); | 573 writer.CloseContainer(&array_writer); |
574 | 574 |
575 response_sender.Run(response.Pass()); | 575 response_sender.Run(std::move(response)); |
576 | 576 |
577 if (send_immediate_properties_changed_) | 577 if (send_immediate_properties_changed_) |
578 SendPropertyChangedSignal("ChangedTestServiceName"); | 578 SendPropertyChangedSignal("ChangedTestServiceName"); |
579 } | 579 } |
580 | 580 |
581 void TestService::AddPropertiesToWriter(MessageWriter* writer) { | 581 void TestService::AddPropertiesToWriter(MessageWriter* writer) { |
582 // The properties response is a dictionary of strings identifying the | 582 // The properties response is a dictionary of strings identifying the |
583 // property and a variant containing the property value. We return all | 583 // property and a variant containing the property value. We return all |
584 // of the properties, thus the response is: | 584 // of the properties, thus the response is: |
585 // | 585 // |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
737 MessageWriter invalidated_array_writer(NULL); | 737 MessageWriter invalidated_array_writer(NULL); |
738 | 738 |
739 writer.OpenArray("s", &invalidated_array_writer); | 739 writer.OpenArray("s", &invalidated_array_writer); |
740 invalidated_array_writer.AppendString("Name"); | 740 invalidated_array_writer.AppendString("Name"); |
741 writer.CloseContainer(&invalidated_array_writer); | 741 writer.CloseContainer(&invalidated_array_writer); |
742 | 742 |
743 exported_object_->SendSignal(&signal); | 743 exported_object_->SendSignal(&signal); |
744 } | 744 } |
745 | 745 |
746 } // namespace dbus | 746 } // namespace dbus |
OLD | NEW |