summaryrefslogtreecommitdiffstats
path: root/dbus/bus_unittest.cc
diff options
context:
space:
mode:
authorsatorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-06 00:20:53 +0000
committersatorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-06 00:20:53 +0000
commit12e2599805235b139796ffee9598e8c95768b21a (patch)
treeac743b9e174698ebdeb96f8ffaba3e356db71cc3 /dbus/bus_unittest.cc
parentb1e2d361992fb4dfed9422df35f161442850909a (diff)
downloadchromium_src-12e2599805235b139796ffee9598e8c95768b21a.zip
chromium_src-12e2599805235b139796ffee9598e8c95768b21a.tar.gz
chromium_src-12e2599805235b139796ffee9598e8c95768b21a.tar.bz2
Fix a bug in dbus::Bus::AddFilterFunction().
We should not reject the same function if it's associated with different data. BUG=99258 TEST=adde a unit test and confirmed it passed. Review URL: http://codereview.chromium.org/8161005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104208 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'dbus/bus_unittest.cc')
-rw-r--r--dbus/bus_unittest.cc32
1 files changed, 32 insertions, 0 deletions
diff --git a/dbus/bus_unittest.cc b/dbus/bus_unittest.cc
index 6209bc3..999727a 100644
--- a/dbus/bus_unittest.cc
+++ b/dbus/bus_unittest.cc
@@ -13,6 +13,17 @@
#include "testing/gtest/include/gtest/gtest.h"
+namespace {
+
+// Used to test AddFilterFunction().
+DBusHandlerResult DummyHandler(DBusConnection* connection,
+ DBusMessage* raw_message,
+ void* user_data) {
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+} // namespace
+
TEST(BusTest, GetObjectProxy) {
dbus::Bus::Options options;
scoped_refptr<dbus::Bus> bus = new dbus::Bus(options);
@@ -89,3 +100,24 @@ TEST(BusTest, ShutdownAndBlockWithDBusThread) {
EXPECT_TRUE(bus->shutdown_completed());
dbus_thread.Stop();
}
+
+TEST(BusTest, AddFilterFunction) {
+ dbus::Bus::Options options;
+ scoped_refptr<dbus::Bus> bus = new dbus::Bus(options);
+ // Should connect before calling AddFilterFunction().
+ bus->Connect();
+
+ int data1 = 100;
+ int data2 = 200;
+ ASSERT_TRUE(bus->AddFilterFunction(&DummyHandler, &data1));
+ // Cannot add the same function with the same data.
+ ASSERT_FALSE(bus->AddFilterFunction(&DummyHandler, &data1));
+ // Can add the same function with different data.
+ ASSERT_TRUE(bus->AddFilterFunction(&DummyHandler, &data2));
+
+ ASSERT_TRUE(bus->RemoveFilterFunction(&DummyHandler, &data1));
+ ASSERT_FALSE(bus->RemoveFilterFunction(&DummyHandler, &data1));
+ ASSERT_TRUE(bus->RemoveFilterFunction(&DummyHandler, &data2));
+
+ bus->ShutdownAndBlock();
+}