Move OnSettingsChanged callback into callback of weave::Device BUG:24267885 Change-Id: I648568ccb31186692b97dd2149cbb9d95ba14771 Reviewed-on: https://weave-review.googlesource.com/1203 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 d340884..8cc8fc5 100644 --- a/libweave/examples/ubuntu/file_config_store.cc +++ b/libweave/examples/ubuntu/file_config_store.cc
@@ -59,10 +59,6 @@ str << settings; } -void FileConfigStore::OnSettingsChanged(const Settings& settings) { - LOG(INFO) << "OnSettingsChanged"; -} - std::string FileConfigStore::LoadBaseCommandDefs() { return R"({ "base": {
diff --git a/libweave/include/weave/device.h b/libweave/include/weave/device.h index 39e2f21..edc2075 100644 --- a/libweave/include/weave/device.h +++ b/libweave/include/weave/device.h
@@ -27,6 +27,10 @@ class Device { public: + // Callback type for AddSettingsChangedCallback. + using SettingsChangedCallback = + base::Callback<void(const Settings& settings)>; + virtual ~Device() = default; virtual void Start(provider::ConfigStore* config_store, @@ -38,6 +42,13 @@ provider::Wifi* wifi, provider::Bluetooth* bluetooth_provider) = 0; + // Returns reference the current settings. + virtual const Settings& GetSettings() = 0; + + // Subscribes to notification settings changes. + virtual void AddSettingsChangedCallback( + const SettingsChangedCallback& callback) = 0; + virtual Commands* GetCommands() = 0; virtual State* GetState() = 0; virtual Cloud* GetCloud() = 0;
diff --git a/libweave/include/weave/provider/test/mock_config_store.h b/libweave/include/weave/provider/test/mock_config_store.h index c433c2e..1a287ee 100644 --- a/libweave/include/weave/provider/test/mock_config_store.h +++ b/libweave/include/weave/provider/test/mock_config_store.h
@@ -36,12 +36,10 @@ })); EXPECT_CALL(*this, LoadSettings()).WillRepeatedly(Return("")); EXPECT_CALL(*this, SaveSettings(_)).WillRepeatedly(Return()); - EXPECT_CALL(*this, OnSettingsChanged(_)).WillRepeatedly(Return()); } MOCK_METHOD1(LoadDefaults, bool(Settings*)); MOCK_METHOD0(LoadSettings, std::string()); MOCK_METHOD1(SaveSettings, void(const std::string&)); - MOCK_METHOD1(OnSettingsChanged, void(const Settings&)); MOCK_METHOD0(LoadBaseCommandDefs, std::string()); MOCK_METHOD0(LoadCommandDefs, std::map<std::string, std::string>());
diff --git a/libweave/src/base_api_handler.cc b/libweave/src/base_api_handler.cc index eb76919..b243f19 100644 --- a/libweave/src/base_api_handler.cc +++ b/libweave/src/base_api_handler.cc
@@ -25,7 +25,7 @@ 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( + device_info_->GetMutableConfig()->AddOnChangedCallback(base::Bind( &BaseApiHandler::OnConfigChanged, weak_ptr_factory_.GetWeakPtr())); const auto& settings = device_info_->GetSettings();
diff --git a/libweave/src/config.cc b/libweave/src/config.cc index b0ec45d..d014198 100644 --- a/libweave/src/config.cc +++ b/libweave/src/config.cc
@@ -55,10 +55,6 @@ Config::Config(provider::ConfigStore* config_store) : settings_{CreateDefaultSettings()}, config_store_{config_store} { - if (config_store_) { - AddOnChangedCallback(base::Bind(&provider::ConfigStore::OnSettingsChanged, - base::Unretained(config_store_))); - } } void Config::AddOnChangedCallback(const OnChangedCallback& callback) {
diff --git a/libweave/src/config_unittest.cc b/libweave/src/config_unittest.cc index f6f4fa0..613a1ca 100644 --- a/libweave/src/config_unittest.cc +++ b/libweave/src/config_unittest.cc
@@ -218,7 +218,6 @@ })"; EXPECT_JSON_EQ(expected, *test::CreateValue(json)); })); - EXPECT_CALL(config_store_, OnSettingsChanged(_)).Times(1); change.Commit(); }
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc index e7ddb23..7feadc0 100644 --- a/libweave/src/device_manager.cc +++ b/libweave/src/device_manager.cc
@@ -64,6 +64,15 @@ } } +const Settings& DeviceManager::GetSettings() { + return device_info_->GetSettings(); +} + +void DeviceManager::AddSettingsChangedCallback( + const SettingsChangedCallback& callback) { + device_info_->GetMutableConfig()->AddOnChangedCallback(callback); +} + Commands* DeviceManager::GetCommands() { return command_manager_.get(); }
diff --git a/libweave/src/device_manager.h b/libweave/src/device_manager.h index 294a7cd..de294e7 100644 --- a/libweave/src/device_manager.h +++ b/libweave/src/device_manager.h
@@ -26,6 +26,7 @@ DeviceManager(); ~DeviceManager() override; + // Device implementation. void Start(provider::ConfigStore* config_store, provider::TaskRunner* task_runner, provider::HttpClient* http_client, @@ -34,7 +35,9 @@ provider::HttpServer* http_server, provider::Wifi* wifi, provider::Bluetooth* bluetooth) override; - + const Settings& GetSettings() override; + void AddSettingsChangedCallback( + const SettingsChangedCallback& callback) override; Commands* GetCommands() override; State* GetState() override; Cloud* GetCloud() override;
diff --git a/libweave/src/device_registration_info.cc b/libweave/src/device_registration_info.cc index a5799d4..a011826 100644 --- a/libweave/src/device_registration_info.cc +++ b/libweave/src/device_registration_info.cc
@@ -477,11 +477,6 @@ callback.Run(registration_status_); } -void DeviceRegistrationInfo::AddOnConfigChangedCallback( - const Config::OnChangedCallback& callback) { - config_->AddOnChangedCallback(callback); -} - std::unique_ptr<base::DictionaryValue> DeviceRegistrationInfo::BuildDeviceResource(ErrorPtr* error) { // Limit only to commands that are visible to the cloud.
diff --git a/libweave/src/device_registration_info.h b/libweave/src/device_registration_info.h index 77820e0..752a4e2 100644 --- a/libweave/src/device_registration_info.h +++ b/libweave/src/device_registration_info.h
@@ -85,9 +85,6 @@ const std::string& service_url, ErrorPtr* error) override; - // Add callback to listen for changes in config. - void AddOnConfigChangedCallback(const Config::OnChangedCallback& callback); - // Returns the GCD service request URL. If |subpath| is specified, it is // appended to the base URL which is normally // https://www.googleapis.com/clouddevices/v1/".
diff --git a/libweave/src/device_registration_info_unittest.cc b/libweave/src/device_registration_info_unittest.cc index 2a059fb..e17ecbe 100644 --- a/libweave/src/device_registration_info_unittest.cc +++ b/libweave/src/device_registration_info_unittest.cc
@@ -482,11 +482,6 @@ return ReplyWithJson(200, json); }))); - Settings saved_settings; - EXPECT_CALL(config_store_, OnSettingsChanged(_)) - .Times(AtLeast(1)) - .WillRepeatedly(SaveArg<0>(&saved_settings)); - std::string cloud_id = dev_reg_->RegisterDevice(test_data::kClaimTicketId, nullptr);
diff --git a/libweave/src/privet/cloud_delegate.cc b/libweave/src/privet/cloud_delegate.cc index cccb6ce..13f48a0 100644 --- a/libweave/src/privet/cloud_delegate.cc +++ b/libweave/src/privet/cloud_delegate.cc
@@ -47,7 +47,7 @@ device_{device}, command_manager_{command_manager}, state_manager_{state_manager} { - device_->AddOnConfigChangedCallback(base::Bind( + device_->GetMutableConfig()->AddOnChangedCallback(base::Bind( &CloudDelegateImpl::OnConfigChanged, weak_factory_.GetWeakPtr())); device_->AddOnRegistrationChangedCallback(base::Bind( &CloudDelegateImpl::OnRegistrationChanged, weak_factory_.GetWeakPtr()));