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