summaryrefslogtreecommitdiffstats
path: root/dbus/end_to_end_async_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dbus/end_to_end_async_unittest.cc')
-rw-r--r--dbus/end_to_end_async_unittest.cc21
1 files changed, 20 insertions, 1 deletions
diff --git a/dbus/end_to_end_async_unittest.cc b/dbus/end_to_end_async_unittest.cc
index 7ba782b..2f486f4 100644
--- a/dbus/end_to_end_async_unittest.cc
+++ b/dbus/end_to_end_async_unittest.cc
@@ -55,7 +55,8 @@ class EndToEndAsyncTest : public testing::Test {
"/org/chromium/TestObject");
ASSERT_TRUE(bus_->HasDBusThread());
- // Connect to the "Test" signal from the remote object.
+ // Connect to the "Test" signal of "org.chromium.TestInterface" from
+ // the remote object.
object_proxy_->ConnectToSignal(
"org.chromium.TestInterface",
"Test",
@@ -63,6 +64,18 @@ class EndToEndAsyncTest : public testing::Test {
base::Unretained(this)),
base::Bind(&EndToEndAsyncTest::OnConnected,
base::Unretained(this)));
+ // Connect to the "Test2" signal of "org.chromium.TestInterface" from
+ // the remote object. There was a bug where we were emitting error
+ // messages like "Requested to remove an unknown match rule: ..." at
+ // the shutdown of Bus when an object proxy is connected to more than
+ // one signal of the same interface. See crosbug.com/23382 for details.
+ object_proxy_->ConnectToSignal(
+ "org.chromium.TestInterface",
+ "Test2",
+ base::Bind(&EndToEndAsyncTest::OnTest2Signal,
+ base::Unretained(this)),
+ base::Bind(&EndToEndAsyncTest::OnConnected,
+ base::Unretained(this)));
// Wait until the object proxy is connected to the signal.
message_loop_.Run();
}
@@ -122,6 +135,12 @@ class EndToEndAsyncTest : public testing::Test {
message_loop_.Quit();
}
+ // Called when the "Test2" signal is received, in the main thread.
+ void OnTest2Signal(dbus::Signal* signal) {
+ dbus::MessageReader reader(signal);
+ message_loop_.Quit();
+ }
+
// Called when connected to the signal.
void OnConnected(const std::string& interface_name,
const std::string& signal_name,