| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/object_manager.h" | 5 #include "dbus/object_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <string> | 10 #include <string> |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 | 80 |
| 81 // Create the client, using the D-Bus thread. | 81 // Create the client, using the D-Bus thread. |
| 82 Bus::Options bus_options; | 82 Bus::Options bus_options; |
| 83 bus_options.bus_type = Bus::SESSION; | 83 bus_options.bus_type = Bus::SESSION; |
| 84 bus_options.connection_type = Bus::PRIVATE; | 84 bus_options.connection_type = Bus::PRIVATE; |
| 85 bus_options.dbus_task_runner = dbus_thread_->task_runner(); | 85 bus_options.dbus_task_runner = dbus_thread_->task_runner(); |
| 86 bus_ = new Bus(bus_options); | 86 bus_ = new Bus(bus_options); |
| 87 ASSERT_TRUE(bus_->HasDBusThread()); | 87 ASSERT_TRUE(bus_->HasDBusThread()); |
| 88 | 88 |
| 89 object_manager_ = bus_->GetObjectManager( | 89 object_manager_ = bus_->GetObjectManager( |
| 90 "org.chromium.TestService", | 90 test_service_->service_name(), |
| 91 ObjectPath("/org/chromium/TestService")); | 91 ObjectPath("/org/chromium/TestService")); |
| 92 object_manager_->RegisterInterface("org.chromium.TestInterface", this); | 92 object_manager_->RegisterInterface("org.chromium.TestInterface", this); |
| 93 | 93 |
| 94 WaitForObject(); | 94 WaitForObject(); |
| 95 } | 95 } |
| 96 | 96 |
| 97 void TearDown() override { | 97 void TearDown() override { |
| 98 bus_->ShutdownOnDBusThreadAndBlock(); | 98 bus_->ShutdownOnDBusThreadAndBlock(); |
| 99 | 99 |
| 100 // Shut down the service. | 100 // Shut down the service. |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 } | 182 } |
| 183 | 183 |
| 184 void WaitForMethodCallback() { | 184 void WaitForMethodCallback() { |
| 185 run_loop_.reset(new base::RunLoop); | 185 run_loop_.reset(new base::RunLoop); |
| 186 run_loop_->Run(); | 186 run_loop_->Run(); |
| 187 method_callback_called_ = false; | 187 method_callback_called_ = false; |
| 188 } | 188 } |
| 189 | 189 |
| 190 void PerformAction(const std::string& action, const ObjectPath& object_path) { | 190 void PerformAction(const std::string& action, const ObjectPath& object_path) { |
| 191 ObjectProxy* object_proxy = bus_->GetObjectProxy( | 191 ObjectProxy* object_proxy = bus_->GetObjectProxy( |
| 192 "org.chromium.TestService", | 192 test_service_->service_name(), |
| 193 ObjectPath("/org/chromium/TestObject")); | 193 ObjectPath("/org/chromium/TestObject")); |
| 194 | 194 |
| 195 MethodCall method_call("org.chromium.TestInterface", "PerformAction"); | 195 MethodCall method_call("org.chromium.TestInterface", "PerformAction"); |
| 196 MessageWriter writer(&method_call); | 196 MessageWriter writer(&method_call); |
| 197 writer.AppendString(action); | 197 writer.AppendString(action); |
| 198 writer.AppendObjectPath(object_path); | 198 writer.AppendObjectPath(object_path); |
| 199 | 199 |
| 200 object_proxy->CallMethod(&method_call, | 200 object_proxy->CallMethod(&method_call, |
| 201 ObjectProxy::TIMEOUT_USE_DEFAULT, | 201 ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 202 base::Bind(&ObjectManagerTest::MethodCallback, | 202 base::Bind(&ObjectManagerTest::MethodCallback, |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 } | 281 } |
| 282 | 282 |
| 283 TEST_F(ObjectManagerTest, GetObjectsWithUnknownInterface) { | 283 TEST_F(ObjectManagerTest, GetObjectsWithUnknownInterface) { |
| 284 std::vector<ObjectPath> object_paths = | 284 std::vector<ObjectPath> object_paths = |
| 285 object_manager_->GetObjectsWithInterface("org.chromium.UnknownService"); | 285 object_manager_->GetObjectsWithInterface("org.chromium.UnknownService"); |
| 286 EXPECT_EQ(0U, object_paths.size()); | 286 EXPECT_EQ(0U, object_paths.size()); |
| 287 } | 287 } |
| 288 | 288 |
| 289 TEST_F(ObjectManagerTest, SameObject) { | 289 TEST_F(ObjectManagerTest, SameObject) { |
| 290 ObjectManager* object_manager = bus_->GetObjectManager( | 290 ObjectManager* object_manager = bus_->GetObjectManager( |
| 291 "org.chromium.TestService", | 291 test_service_->service_name(), |
| 292 ObjectPath("/org/chromium/TestService")); | 292 ObjectPath("/org/chromium/TestService")); |
| 293 EXPECT_EQ(object_manager_, object_manager); | 293 EXPECT_EQ(object_manager_, object_manager); |
| 294 } | 294 } |
| 295 | 295 |
| 296 TEST_F(ObjectManagerTest, DifferentObjectForService) { | 296 TEST_F(ObjectManagerTest, DifferentObjectForService) { |
| 297 ObjectManager* object_manager = bus_->GetObjectManager( | 297 ObjectManager* object_manager = bus_->GetObjectManager( |
| 298 "org.chromium.DifferentService", | 298 "org.chromium.DifferentService", |
| 299 ObjectPath("/org/chromium/TestService")); | 299 ObjectPath("/org/chromium/TestService")); |
| 300 EXPECT_NE(object_manager_, object_manager); | 300 EXPECT_NE(object_manager_, object_manager); |
| 301 } | 301 } |
| 302 | 302 |
| 303 TEST_F(ObjectManagerTest, DifferentObjectForPath) { | 303 TEST_F(ObjectManagerTest, DifferentObjectForPath) { |
| 304 ObjectManager* object_manager = bus_->GetObjectManager( | 304 ObjectManager* object_manager = bus_->GetObjectManager( |
| 305 "org.chromium.TestService", | 305 test_service_->service_name(), |
| 306 ObjectPath("/org/chromium/DifferentService")); | 306 ObjectPath("/org/chromium/DifferentService")); |
| 307 EXPECT_NE(object_manager_, object_manager); | 307 EXPECT_NE(object_manager_, object_manager); |
| 308 } | 308 } |
| 309 | 309 |
| 310 TEST_F(ObjectManagerTest, SecondObject) { | 310 TEST_F(ObjectManagerTest, SecondObject) { |
| 311 PerformAction("AddObject", ObjectPath("/org/chromium/SecondObject")); | 311 PerformAction("AddObject", ObjectPath("/org/chromium/SecondObject")); |
| 312 WaitForObject(); | 312 WaitForObject(); |
| 313 | 313 |
| 314 ObjectProxy* object_proxy = object_manager_->GetObjectProxy( | 314 ObjectProxy* object_proxy = object_manager_->GetObjectProxy( |
| 315 ObjectPath("/org/chromium/SecondObject")); | 315 ObjectPath("/org/chromium/SecondObject")); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 | 380 |
| 381 std::vector<ObjectPath> object_paths = object_manager_->GetObjects(); | 381 std::vector<ObjectPath> object_paths = object_manager_->GetObjects(); |
| 382 ASSERT_EQ(1U, object_paths.size()); | 382 ASSERT_EQ(1U, object_paths.size()); |
| 383 } | 383 } |
| 384 | 384 |
| 385 TEST_F(ObjectManagerTest, PropertiesChangedAsObjectsReceived) { | 385 TEST_F(ObjectManagerTest, PropertiesChangedAsObjectsReceived) { |
| 386 // Remove the existing object manager. | 386 // Remove the existing object manager. |
| 387 object_manager_->UnregisterInterface("org.chromium.TestInterface"); | 387 object_manager_->UnregisterInterface("org.chromium.TestInterface"); |
| 388 run_loop_.reset(new base::RunLoop); | 388 run_loop_.reset(new base::RunLoop); |
| 389 EXPECT_TRUE(bus_->RemoveObjectManager( | 389 EXPECT_TRUE(bus_->RemoveObjectManager( |
| 390 "org.chromium.TestService", | 390 test_service_->service_name(), |
| 391 ObjectPath("/org/chromium/TestService"), | 391 ObjectPath("/org/chromium/TestService"), |
| 392 run_loop_->QuitClosure())); | 392 run_loop_->QuitClosure())); |
| 393 run_loop_->Run(); | 393 run_loop_->Run(); |
| 394 | 394 |
| 395 PerformAction("SetSendImmediatePropertiesChanged", | 395 PerformAction("SetSendImmediatePropertiesChanged", |
| 396 ObjectPath("/org/chromium/TestService")); | 396 ObjectPath("/org/chromium/TestService")); |
| 397 | 397 |
| 398 object_manager_ = bus_->GetObjectManager( | 398 object_manager_ = bus_->GetObjectManager( |
| 399 "org.chromium.TestService", | 399 test_service_->service_name(), |
| 400 ObjectPath("/org/chromium/TestService")); | 400 ObjectPath("/org/chromium/TestService")); |
| 401 object_manager_->RegisterInterface("org.chromium.TestInterface", this); | 401 object_manager_->RegisterInterface("org.chromium.TestInterface", this); |
| 402 | 402 |
| 403 // The newly created object manager should call GetManagedObjects immediately | 403 // The newly created object manager should call GetManagedObjects immediately |
| 404 // after setting up the match rule for PropertiesChanged. We should process | 404 // after setting up the match rule for PropertiesChanged. We should process |
| 405 // the PropertiesChanged event right after that. If we don't receive it within | 405 // the PropertiesChanged event right after that. If we don't receive it within |
| 406 // 2 seconds, then fail the test. | 406 // 2 seconds, then fail the test. |
| 407 message_loop_.PostDelayedTask( | 407 message_loop_.PostDelayedTask( |
| 408 FROM_HERE, | 408 FROM_HERE, |
| 409 base::Bind(&ObjectManagerTest::PropertiesChangedTestTimeout, | 409 base::Bind(&ObjectManagerTest::PropertiesChangedTestTimeout, |
| 410 base::Unretained(this)), | 410 base::Unretained(this)), |
| 411 base::TimeDelta::FromSeconds(2)); | 411 base::TimeDelta::FromSeconds(2)); |
| 412 | 412 |
| 413 while (last_name_value_ != "ChangedTestServiceName" && !timeout_expired_) { | 413 while (last_name_value_ != "ChangedTestServiceName" && !timeout_expired_) { |
| 414 run_loop_.reset(new base::RunLoop); | 414 run_loop_.reset(new base::RunLoop); |
| 415 run_loop_->Run(); | 415 run_loop_->Run(); |
| 416 } | 416 } |
| 417 } | 417 } |
| 418 | 418 |
| 419 } // namespace dbus | 419 } // namespace dbus |
| OLD | NEW |