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();