libweave: Pass firmware using weave::Settings
Also removed unused weave::Options fields.
BUG=brillo:1257
TEST=`FEATURES=test emerge-gizmo libweave buffet`
Change-Id: I9299e3d2f58e9b8f2965cb2198107e865dabb953
Reviewed-on: https://chromium-review.googlesource.com/293927
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/libweave/include/weave/config_store.h b/libweave/include/weave/config_store.h
index f13ec8f..e2bb710 100644
--- a/libweave/include/weave/config_store.h
+++ b/libweave/include/weave/config_store.h
@@ -27,6 +27,7 @@
std::string local_anonymous_access_role;
bool local_discovery_enabled{true};
bool local_pairing_enabled{true};
+ std::string firmware_version;
std::string oem_name;
std::string model_name;
std::string model_id;
diff --git a/libweave/include/weave/device.h b/libweave/include/weave/device.h
index 25f18c0..47e854c 100644
--- a/libweave/include/weave/device.h
+++ b/libweave/include/weave/device.h
@@ -27,9 +27,6 @@
class Device {
public:
struct Options {
- std::string firmware_version; // TODO: Move into weave::Settings
- base::FilePath config_path;
- base::FilePath state_path;
base::FilePath definitions_path;
base::FilePath test_definitions_path;
bool xmpp_enabled = true;
diff --git a/libweave/src/base_api_handler.cc b/libweave/src/base_api_handler.cc
index 655983b..3e641d7 100644
--- a/libweave/src/base_api_handler.cc
+++ b/libweave/src/base_api_handler.cc
@@ -20,16 +20,16 @@
BaseApiHandler::BaseApiHandler(
DeviceRegistrationInfo* device_info,
- const std::string& firmware_version,
const std::shared_ptr<StateManager>& state_manager,
const std::shared_ptr<CommandManager>& command_manager)
: device_info_{device_info}, state_manager_{state_manager} {
device_info_->AddOnConfigChangedCallback(base::Bind(
&BaseApiHandler::OnConfigChanged, weak_ptr_factory_.GetWeakPtr()));
+ const Config& config{device_info_->GetConfig()};
base::DictionaryValue state;
state.SetStringWithoutPathExpansion(kBaseStateFirmwareVersion,
- firmware_version);
+ config.firmware_version());
CHECK(state_manager_->SetProperties(state, nullptr));
command_manager->AddOnCommandAddedCallback(base::Bind(
diff --git a/libweave/src/base_api_handler.h b/libweave/src/base_api_handler.h
index abb60b1..c1a5f2e 100644
--- a/libweave/src/base_api_handler.h
+++ b/libweave/src/base_api_handler.h
@@ -27,7 +27,6 @@
class BaseApiHandler final {
public:
BaseApiHandler(DeviceRegistrationInfo* device_info,
- const std::string& firmware_version,
const std::shared_ptr<StateManager>& state_manager,
const std::shared_ptr<CommandManager>& command_manager);
diff --git a/libweave/src/base_api_handler_unittest.cc b/libweave/src/base_api_handler_unittest.cc
index 9b22ef8..7ffc3d9 100644
--- a/libweave/src/base_api_handler_unittest.cc
+++ b/libweave/src/base_api_handler_unittest.cc
@@ -18,14 +18,21 @@
#include "libweave/src/states/state_manager.h"
using testing::_;
-using testing::StrictMock;
+using testing::Invoke;
using testing::Return;
+using testing::StrictMock;
namespace weave {
class BaseApiHandlerTest : public ::testing::Test {
protected:
void SetUp() override {
+ EXPECT_CALL(config_store_, LoadDefaults(_))
+ .WillOnce(Invoke([](Settings* settings) {
+ settings->firmware_version = "123123";
+ return true;
+ }));
+
EXPECT_CALL(mock_state_change_queue_, NotifyPropertiesUpdated(_, _))
.WillRepeatedly(Return(true));
@@ -55,12 +62,13 @@
ASSERT_TRUE(state_manager_->LoadStateDefinition(*state_definition, "base",
nullptr));
ASSERT_TRUE(state_manager_->LoadStateDefaults(*state_defaults, nullptr));
- dev_reg_.reset(new DeviceRegistrationInfo(
- command_manager_, state_manager_,
- std::unique_ptr<Config>{new Config{&config_store_}}, nullptr,
- &http_client_, true, nullptr));
- handler_.reset(new BaseApiHandler{dev_reg_.get(), "123123", state_manager_,
- command_manager_});
+ std::unique_ptr<Config> config{new Config{&config_store_}};
+ config->Load();
+ dev_reg_.reset(new DeviceRegistrationInfo(command_manager_, state_manager_,
+ std::move(config), nullptr,
+ &http_client_, true, nullptr));
+ handler_.reset(
+ new BaseApiHandler{dev_reg_.get(), state_manager_, command_manager_});
}
void LoadCommands(const std::string& command_definitions) {
diff --git a/libweave/src/config.h b/libweave/src/config.h
index 55d7d09..a54e018 100644
--- a/libweave/src/config.h
+++ b/libweave/src/config.h
@@ -97,6 +97,9 @@
const std::string& oem_name() const { return settings_.oem_name; }
const std::string& model_name() const { return settings_.model_name; }
const std::string& model_id() const { return settings_.model_id; }
+ const std::string& firmware_version() const {
+ return settings_.firmware_version;
+ }
base::TimeDelta polling_period() const { return settings_.polling_period; }
base::TimeDelta backup_polling_period() const {
return settings_.backup_polling_period;
diff --git a/libweave/src/config_unittest.cc b/libweave/src/config_unittest.cc
index be24e00..794f5cb 100644
--- a/libweave/src/config_unittest.cc
+++ b/libweave/src/config_unittest.cc
@@ -51,6 +51,7 @@
EXPECT_EQ("Chromium", config_->oem_name());
EXPECT_EQ("Brillo", config_->model_name());
EXPECT_EQ("AAAAA", config_->model_id());
+ EXPECT_EQ("", config_->firmware_version());
EXPECT_EQ(base::TimeDelta::FromSeconds(7), config_->polling_period());
EXPECT_EQ(base::TimeDelta::FromMinutes(30), config_->backup_polling_period());
EXPECT_TRUE(config_->wifi_auto_setup_enabled());
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index 846298a..e5710d4 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -49,9 +49,8 @@
device_info_.reset(new DeviceRegistrationInfo(
command_manager_, state_manager_, std::move(config), task_runner,
http_client, options.xmpp_enabled, network));
- base_api_handler_.reset(new BaseApiHandler{device_info_.get(),
- options.firmware_version,
- state_manager_, command_manager_});
+ base_api_handler_.reset(
+ new BaseApiHandler{device_info_.get(), state_manager_, command_manager_});
device_info_->Start();