buffet: Make CommandInstance own its proxies.
This allows proxies which are not managed by command dispatchers,
for example, cloud proxies.
BUG=None
TEST=cros_workon_make buffet --test
Change-Id: Ia7f0fe97c20328acf8e7942a6ad71aabaade81e4
Reviewed-on: https://chromium-review.googlesource.com/228821
Tested-by: Anton Muhin <antonm@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Anton Muhin <antonm@chromium.org>
diff --git a/buffet/commands/dbus_command_proxy_unittest.cc b/buffet/commands/dbus_command_proxy_unittest.cc
index ab4e36c..0c1bbaa 100644
--- a/buffet/commands/dbus_command_proxy_unittest.cc
+++ b/buffet/commands/dbus_command_proxy_unittest.cc
@@ -91,37 +91,39 @@
EXPECT_CALL(*mock_exported_object_command_,
ExportMethod(_, _, _, _)).Times(AnyNumber());
- command_proxy_.reset(new DBusCommandProxy(nullptr, bus_,
- command_instance_.get(),
- cmd_path));
- command_instance_->AddProxy(command_proxy_.get());
- command_proxy_->RegisterAsync(
+ std::unique_ptr<CommandProxyInterface> command_proxy(
+ new DBusCommandProxy(nullptr, bus_, command_instance_.get(), cmd_path));
+ command_instance_->AddProxy(std::move(command_proxy));
+ GetCommandProxy()->RegisterAsync(
AsyncEventSequencer::GetDefaultCompletionAction());
}
void TearDown() override {
EXPECT_CALL(*mock_exported_object_command_, Unregister()).Times(1);
- command_instance_->ClearProxies();
- command_proxy_.reset();
command_instance_.reset();
dict_.Clear();
bus_ = nullptr;
}
+ DBusCommandProxy* GetCommandProxy() const {
+ CHECK_EQ(command_instance_->proxies_.size(), 1);
+ return static_cast<DBusCommandProxy*>(command_instance_->proxies_[0].get());
+ }
+
chromeos::dbus_utils::DBusObject* GetProxyDBusObject() {
- return &command_proxy_->dbus_object_;
+ return &GetCommandProxy()->dbus_object_;
}
std::string GetStatus() const {
- return command_proxy_->status_.value();
+ return GetCommandProxy()->status_.value();
}
int32_t GetProgress() const {
- return command_proxy_->progress_.value();
+ return GetCommandProxy()->progress_.value();
}
VariantDictionary GetParameters() const {
- return command_proxy_->parameters_.value();
+ return GetCommandProxy()->parameters_.value();
}
std::unique_ptr<dbus::Response> CallMethod(
@@ -168,7 +170,6 @@
return value;
}
- std::unique_ptr<DBusCommandProxy> command_proxy_;
std::unique_ptr<CommandInstance> command_instance_;
CommandDictionary dict_;