From 59bc1c00682f45d54a05aadc2a2e0559f85e4499 Mon Sep 17 00:00:00 2001 From: Sonny Sasaka Date: Thu, 16 Aug 2018 05:09:20 +0000 Subject: [PATCH] dbus: Make Bus::is_connected() mockable It's currently not possible to have a unit test that triggers Bus::is_connected() because it always returns false. This is currently needed by the Bluetooth dispatcher (btdispatch) in Chrome OS. Bug: 866704 Change-Id: I04f7e8a22792886d421479c1c7c621eeb27d3a2a Reviewed-on: https://chromium-review.googlesource.com/1175216 Reviewed-by: Ryo Hashimoto Commit-Queue: Sonny Sasaka Cr-Commit-Position: refs/heads/master@{#583543} --- dbus/bus.cc | 4 ++++ dbus/bus.h | 2 +- dbus/bus_unittest.cc | 4 ++-- dbus/exported_object.cc | 2 +- dbus/mock_bus.h | 1 + dbus/object_proxy.cc | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/dbus/bus.cc b/dbus/bus.cc index 2f3db885f561..9d37656ac21c 100644 --- a/dbus/bus.cc +++ b/dbus/bus.cc @@ -997,6 +997,10 @@ std::string Bus::GetConnectionName() { return dbus_bus_get_unique_name(connection_); } +bool Bus::IsConnected() { + return connection_ != nullptr; +} + dbus_bool_t Bus::OnAddWatch(DBusWatch* raw_watch) { AssertOnDBusThread(); diff --git a/dbus/bus.h b/dbus/bus.h index 704a4c3a0b54..b082110e589b 100644 --- a/dbus/bus.h +++ b/dbus/bus.h @@ -601,7 +601,7 @@ class CHROME_DBUS_EXPORT Bus : public base::RefCountedThreadSafe { std::string GetConnectionName(); // Returns true if the bus is connected to D-Bus. - bool is_connected() { return connection_ != nullptr; } + virtual bool IsConnected(); protected: // This is protected, so we can define sub classes. diff --git a/dbus/exported_object.cc b/dbus/exported_object.cc index d6c91b6d2046..5fa1b916f251 100644 --- a/dbus/exported_object.cc +++ b/dbus/exported_object.cc @@ -280,7 +280,7 @@ void ExportedObject::OnMethodCompleted(std::unique_ptr method_call, // Check if the bus is still connected. If the method takes long to // complete, the bus may be shut down meanwhile. - if (!bus_->is_connected()) + if (!bus_->IsConnected()) return; if (!response) { diff --git a/dbus/mock_bus.h b/dbus/mock_bus.h index 6b3495db6014..22807622786a 100644 --- a/dbus/mock_bus.h +++ b/dbus/mock_bus.h @@ -73,6 +73,7 @@ class MockBus : public Bus { MOCK_METHOD0(HasDBusThread, bool()); MOCK_METHOD0(AssertOnOriginThread, void()); MOCK_METHOD0(AssertOnDBusThread, void()); + MOCK_METHOD0(IsConnected, bool()); protected: ~MockBus() override; diff --git a/dbus/object_proxy.cc b/dbus/object_proxy.cc index aa5102aec792..3046dbb5f38b 100644 --- a/dbus/object_proxy.cc +++ b/dbus/object_proxy.cc @@ -288,7 +288,7 @@ void ObjectProxy::WaitForServiceToBeAvailable( void ObjectProxy::Detach() { bus_->AssertOnDBusThread(); - if (bus_->is_connected()) + if (bus_->IsConnected()) bus_->RemoveFilterFunction(&ObjectProxy::HandleMessageThunk, this); for (const auto& match_rule : match_rules_) { -- 2.21.0.392.gf8f6787159e-goog