Remove category from State definitions
BUG:24267885
Change-Id: I535877e8fe33dacc4a39fc295d00408d50e98d54
Reviewed-on: https://weave-review.googlesource.com/1206
Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/libweave/examples/ubuntu/file_config_store.cc b/libweave/examples/ubuntu/file_config_store.cc
index 66dd80f..d28f817 100644
--- a/libweave/examples/ubuntu/file_config_store.cc
+++ b/libweave/examples/ubuntu/file_config_store.cc
@@ -77,8 +77,8 @@
})"}};
}
-std::map<std::string, std::string> FileConfigStore::LoadStateDefs() {
- return {{kCategory, R"({"_greeter": {"_greetings_counter":"integer"}})"}};
+std::vector<std::string> FileConfigStore::LoadStateDefs() {
+ return {R"({"_greeter": {"_greetings_counter":"integer"}})"};
}
std::vector<std::string> FileConfigStore::LoadStateDefaults() {
diff --git a/libweave/examples/ubuntu/file_config_store.h b/libweave/examples/ubuntu/file_config_store.h
index f89636d..53e56f1 100644
--- a/libweave/examples/ubuntu/file_config_store.h
+++ b/libweave/examples/ubuntu/file_config_store.h
@@ -22,7 +22,7 @@
std::string LoadSettings() override;
void SaveSettings(const std::string& settings) override;
std::map<std::string, std::string> LoadCommandDefs() override;
- std::map<std::string, std::string> LoadStateDefs() override;
+ std::vector<std::string> LoadStateDefs() override;
std::vector<std::string> LoadStateDefaults() override;
private:
diff --git a/libweave/include/weave/provider/config_store.h b/libweave/include/weave/provider/config_store.h
index 30f289c..64975a7 100644
--- a/libweave/include/weave/provider/config_store.h
+++ b/libweave/include/weave/provider/config_store.h
@@ -41,10 +41,10 @@
// Value is JSON with command definition.
virtual std::map<std::string, std::string> LoadCommandDefs() = 0;
- // Returns device state definitions as JSON.
- virtual std::map<std::string, std::string> LoadStateDefs() = 0;
+ // Returns device state definitions as array of JSONs.
+ virtual std::vector<std::string> LoadStateDefs() = 0;
- // Returns device state defaults as JSON.
+ // Returns device state defaults as array of JSONs.
virtual std::vector<std::string> LoadStateDefaults() = 0;
protected:
diff --git a/libweave/include/weave/provider/test/mock_config_store.h b/libweave/include/weave/provider/test/mock_config_store.h
index b6ca69f..30027f3 100644
--- a/libweave/include/weave/provider/test/mock_config_store.h
+++ b/libweave/include/weave/provider/test/mock_config_store.h
@@ -43,7 +43,7 @@
MOCK_METHOD1(SaveSettings, void(const std::string&));
MOCK_METHOD0(LoadCommandDefs, std::map<std::string, std::string>());
- MOCK_METHOD0(LoadStateDefs, std::map<std::string, std::string>());
+ MOCK_METHOD0(LoadStateDefs, std::vector<std::string>());
MOCK_METHOD0(LoadStateDefaults, std::vector<std::string>());
};
diff --git a/libweave/src/base_api_handler_unittest.cc b/libweave/src/base_api_handler_unittest.cc
index 1f1fc75..25a07f6 100644
--- a/libweave/src/base_api_handler_unittest.cc
+++ b/libweave/src/base_api_handler_unittest.cc
@@ -53,8 +53,8 @@
'localPairingEnabled': false
}
})");
- ASSERT_TRUE(state_manager_->LoadStateDefinition(*state_definition, "base",
- nullptr));
+ ASSERT_TRUE(
+ state_manager_->LoadStateDefinition(*state_definition, nullptr));
ASSERT_TRUE(state_manager_->LoadStateDefaults(*state_defaults, nullptr));
std::unique_ptr<Config> config{new Config{&config_store_}};
config->Load();
diff --git a/libweave/src/states/state_manager.cc b/libweave/src/states/state_manager.cc
index 7fd9715..cd94736 100644
--- a/libweave/src/states/state_manager.cc
+++ b/libweave/src/states/state_manager.cc
@@ -61,8 +61,8 @@
CHECK(LoadBaseStateDefinition(kBaseStateDefs, nullptr));
// Load component-specific device state definitions.
- for (const auto& pair : config_store->LoadStateDefs())
- CHECK(LoadStateDefinition(pair.second, pair.first, nullptr));
+ for (const auto& state_def : config_store->LoadStateDefs())
+ CHECK(LoadStateDefinition(state_def, nullptr));
// Load standard device state defaults.
CHECK(LoadStateDefaults(kBaseStateDefaults, nullptr));
@@ -175,7 +175,6 @@
}
bool StateManager::LoadStateDefinition(const base::DictionaryValue& dict,
- const std::string& category,
ErrorPtr* error) {
base::DictionaryValue::Iterator iter(dict);
while (!iter.IsAtEnd()) {
@@ -199,26 +198,16 @@
return false;
iter.Advance();
}
- if (category != kDefaultCategory)
- categories_.insert(category);
return true;
}
bool StateManager::LoadStateDefinition(const std::string& json,
- const std::string& category,
ErrorPtr* error) {
std::unique_ptr<const base::DictionaryValue> dict = LoadJsonDict(json, error);
if (!dict)
return false;
- if (category == kDefaultCategory) {
- Error::AddToPrintf(error, FROM_HERE, errors::kErrorDomain,
- errors::kInvalidCategoryError,
- "Invalid state category: '%s'", category.c_str());
- return false;
- }
-
- if (!LoadStateDefinition(*dict, category, error)) {
+ if (!LoadStateDefinition(*dict, error)) {
Error::AddToPrintf(error, FROM_HERE, errors::kErrorDomain,
errors::kSchemaError,
"Failed to load state definition: '%s'", json.c_str());
@@ -232,7 +221,7 @@
std::unique_ptr<const base::DictionaryValue> dict = LoadJsonDict(json, error);
if (!dict)
return false;
- if (!LoadStateDefinition(*dict, kDefaultCategory, error)) {
+ if (!LoadStateDefinition(*dict, error)) {
Error::AddToPrintf(
error, FROM_HERE, errors::kErrorDomain, errors::kSchemaError,
"Failed to load base state definition: '%s'", json.c_str());
diff --git a/libweave/src/states/state_manager.h b/libweave/src/states/state_manager.h
index 1513781..5a64d78 100644
--- a/libweave/src/states/state_manager.h
+++ b/libweave/src/states/state_manager.h
@@ -51,11 +51,6 @@
// Called by Buffet daemon at startup.
void Startup(provider::ConfigStore* config_store);
- // Returns all the categories the state properties are registered from.
- // As with GCD command handling, the category normally represent a device
- // service (daemon) that is responsible for a set of properties.
- const std::set<std::string>& GetCategories() const { return categories_; }
-
// Returns the recorded state changes since last time this method has been
// called.
std::pair<StateChangeQueueInterface::UpdateID, std::vector<StateChange>>
@@ -80,16 +75,12 @@
const base::Time& timestamp,
ErrorPtr* error);
- // Loads a device state fragment from a JSON object. |category| represents
- // a device daemon providing the state fragment or empty string for the
- // base state fragment.
+ // Loads a device state fragment from a JSON object.
bool LoadStateDefinition(const base::DictionaryValue& dict,
- const std::string& category,
ErrorPtr* error);
// Loads a device state fragment JSON.
bool LoadStateDefinition(const std::string& json,
- const std::string& category,
ErrorPtr* error);
// Loads the base device state fragment JSON. This state fragment
@@ -111,7 +102,6 @@
StateChangeQueueInterface* state_change_queue_; // Owned by Manager.
std::map<std::string, std::unique_ptr<StatePackage>> packages_;
- std::set<std::string> categories_;
std::vector<base::Closure> on_changed_;
diff --git a/libweave/src/states/state_manager_unittest.cc b/libweave/src/states/state_manager_unittest.cc
index 421fe2f..522e0e6 100644
--- a/libweave/src/states/state_manager_unittest.cc
+++ b/libweave/src/states/state_manager_unittest.cc
@@ -68,15 +68,14 @@
mgr_->AddChangedCallback(
base::Bind(&StateManagerTest::OnStateChanged, base::Unretained(this)));
- LoadStateDefinition(GetTestSchema().get(), "default", nullptr);
+ LoadStateDefinition(GetTestSchema().get(), nullptr);
ASSERT_TRUE(mgr_->LoadStateDefaults(*GetTestValues().get(), nullptr));
}
void TearDown() override { mgr_.reset(); }
void LoadStateDefinition(const base::DictionaryValue* json,
- const std::string& category,
ErrorPtr* error) {
- ASSERT_TRUE(mgr_->LoadStateDefinition(*json, category, error));
+ ASSERT_TRUE(mgr_->LoadStateDefinition(*json, error));
}
bool SetPropertyValue(const std::string& name,
@@ -95,11 +94,9 @@
TEST(StateManager, Empty) {
testing::StrictMock<MockStateChangeQueueInterface> mock_state_change_queue;
StateManager manager(&mock_state_change_queue);
- EXPECT_TRUE(manager.GetCategories().empty());
}
TEST_F(StateManagerTest, Initialized) {
- EXPECT_EQ(std::set<std::string>{"default"}, mgr_->GetCategories());
auto expected = R"({
'base': {
'manufacturer': 'Test Factory',
@@ -118,9 +115,7 @@
'battery_level':'integer'
}
})");
- LoadStateDefinition(dict.get(), "powerd", nullptr);
- EXPECT_EQ((std::set<std::string>{"default", "powerd"}),
- mgr_->GetCategories());
+ LoadStateDefinition(dict.get(), nullptr);
auto expected = R"({
'base': {
@@ -142,12 +137,12 @@
StateManager manager(&mock_state_change_queue_);
EXPECT_CALL(config_store, LoadStateDefs())
- .WillOnce(Return(std::map<std::string, std::string>{
- {"powerd", R"({"power": {"battery_level":"integer"}})"}}));
+ .WillOnce(Return(std::vector<std::string>{
+ {R"({"power": {"battery_level":"integer"}})"}}));
EXPECT_CALL(config_store, LoadStateDefaults())
- .WillOnce(Return(std::vector<std::string>{
- R"({"power": {"battery_level":44}})"}));
+ .WillOnce(Return(
+ std::vector<std::string>{{R"({"power": {"battery_level":44}})"}}));
manager.Startup(&config_store);
diff --git a/libweave/src/weave_unittest.cc b/libweave/src/weave_unittest.cc
index 28edb82..e731803 100644
--- a/libweave/src/weave_unittest.cc
+++ b/libweave/src/weave_unittest.cc
@@ -165,11 +165,10 @@
std::map<std::string, std::string>{{kCategory, kCommandDefs}}));
EXPECT_CALL(config_store_, LoadStateDefs())
- .WillOnce(Return(
- std::map<std::string, std::string>{{kCategory, kStateDefs}}));
+ .WillOnce(Return(std::vector<std::string>{{kStateDefs}}));
EXPECT_CALL(config_store_, LoadStateDefaults())
- .WillOnce(Return(std::vector<std::string>{kStateDefaults}));
+ .WillOnce(Return(std::vector<std::string>{{kStateDefaults}}));
}
void InitNetwork() {