| 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 |