Switch BaseApiHandler to use weave::Device interface
BUG:24267885
Change-Id: Ifd6cb2e6f71765fd7b1cc8939da3c853f612fb9f
Reviewed-on: https://weave-review.googlesource.com/1249
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/libweave/src/base_api_handler.cc b/libweave/src/base_api_handler.cc
index 69a2838..f5dccd7 100644
--- a/libweave/src/base_api_handler.cc
+++ b/libweave/src/base_api_handler.cc
@@ -5,11 +5,9 @@
#include "src/base_api_handler.h"
#include <base/bind.h>
+#include <weave/device.h>
-#include "src/commands/command_instance.h"
-#include "src/commands/command_manager.h"
#include "src/device_registration_info.h"
-#include "src/states/state_manager.h"
namespace weave {
@@ -20,11 +18,9 @@
const char kBaseStatePairingEnabled[] = "base.localPairingEnabled";
} // namespace
-BaseApiHandler::BaseApiHandler(
- DeviceRegistrationInfo* device_info,
- const std::shared_ptr<StateManager>& state_manager,
- const std::shared_ptr<CommandManager>& command_manager)
- : device_info_{device_info}, state_manager_{state_manager} {
+BaseApiHandler::BaseApiHandler(DeviceRegistrationInfo* device_info,
+ Device* device)
+ : device_info_{device_info}, device_{device} {
device_info_->GetMutableConfig()->AddOnChangedCallback(base::Bind(
&BaseApiHandler::OnConfigChanged, weak_ptr_factory_.GetWeakPtr()));
@@ -32,10 +28,10 @@
base::DictionaryValue state;
state.SetStringWithoutPathExpansion(kBaseStateFirmwareVersion,
settings.firmware_version);
- CHECK(state_manager_->SetProperties(state, nullptr));
+ CHECK(device_->SetStateProperties(state, nullptr));
- command_manager->AddCommandAddedCallback(base::Bind(
- &BaseApiHandler::OnCommandAdded, weak_ptr_factory_.GetWeakPtr()));
+ device_->AddCommandAddedCallback(base::Bind(&BaseApiHandler::OnCommandAdded,
+ weak_ptr_factory_.GetWeakPtr()));
}
void BaseApiHandler::OnCommandAdded(Command* command) {
@@ -83,7 +79,7 @@
settings.local_discovery_enabled);
state.SetBooleanWithoutPathExpansion(kBaseStatePairingEnabled,
settings.local_pairing_enabled);
- state_manager_->SetProperties(state, nullptr);
+ device_->SetStateProperties(state, nullptr);
}
void BaseApiHandler::UpdateDeviceInfo(Command* command) {
diff --git a/libweave/src/base_api_handler.h b/libweave/src/base_api_handler.h
index c1a5f2e..b8a8bd1 100644
--- a/libweave/src/base_api_handler.h
+++ b/libweave/src/base_api_handler.h
@@ -13,9 +13,8 @@
namespace weave {
class Command;
-class CommandManager;
+class Device;
class DeviceRegistrationInfo;
-class StateManager;
struct Settings;
// Handles commands from 'base' package.
@@ -26,9 +25,7 @@
// base.updateBaseConfiguration
class BaseApiHandler final {
public:
- BaseApiHandler(DeviceRegistrationInfo* device_info,
- const std::shared_ptr<StateManager>& state_manager,
- const std::shared_ptr<CommandManager>& command_manager);
+ BaseApiHandler(DeviceRegistrationInfo* device_info, Device* device);
private:
void OnCommandAdded(Command* command);
@@ -40,7 +37,7 @@
void OnConfigChanged(const Settings& settings);
DeviceRegistrationInfo* device_info_;
- std::shared_ptr<StateManager> state_manager_;
+ Device* device_;
base::WeakPtrFactory<BaseApiHandler> weak_ptr_factory_{this};
DISALLOW_COPY_AND_ASSIGN(BaseApiHandler);
diff --git a/libweave/src/base_api_handler_unittest.cc b/libweave/src/base_api_handler_unittest.cc
index a583dc3..2bd7741 100644
--- a/libweave/src/base_api_handler_unittest.cc
+++ b/libweave/src/base_api_handler_unittest.cc
@@ -9,6 +9,7 @@
#include <gtest/gtest.h>
#include <weave/provider/test/mock_config_store.h>
#include <weave/provider/test/mock_http_client.h>
+#include <weave/test/mock_device.h>
#include "src/commands/command_manager.h"
#include "src/commands/unittest_utils.h"
@@ -32,6 +33,14 @@
command_manager_ = std::make_shared<CommandManager>();
state_manager_ = std::make_shared<StateManager>(&mock_state_change_queue_);
+
+ EXPECT_CALL(device_, SetStateProperties(_, _))
+ .WillRepeatedly(
+ Invoke(state_manager_.get(), &StateManager::SetProperties));
+ EXPECT_CALL(device_, AddCommandAddedCallback(_))
+ .WillRepeatedly(Invoke(command_manager_.get(),
+ &CommandManager::AddCommandAddedCallback));
+
auto state_definition = test::CreateDictionaryValue(R"({
'base': {
'firmwareVersion': 'string',
@@ -61,8 +70,7 @@
dev_reg_.reset(new DeviceRegistrationInfo(command_manager_, state_manager_,
std::move(config), nullptr,
&http_client_, nullptr));
- handler_.reset(
- new BaseApiHandler{dev_reg_.get(), state_manager_, command_manager_});
+ handler_.reset(new BaseApiHandler{dev_reg_.get(), &device_});
}
void LoadCommands(const std::string& command_definitions) {
@@ -92,6 +100,7 @@
testing::StrictMock<MockStateChangeQueueInterface> mock_state_change_queue_;
std::shared_ptr<StateManager> state_manager_;
std::unique_ptr<BaseApiHandler> handler_;
+ StrictMock<test::MockDevice> device_;
int command_id_{0};
};
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index e1d1e49..6ff3a88 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -45,8 +45,7 @@
device_info_.reset(new DeviceRegistrationInfo(
command_manager_, state_manager_, std::move(config), task_runner,
http_client, network));
- base_api_handler_.reset(
- new BaseApiHandler{device_info_.get(), state_manager_, command_manager_});
+ base_api_handler_.reset(new BaseApiHandler{device_info_.get(), this});
device_info_->Start();