Remove unnecessary getters from weave::Config

Change-Id: I83d0212d2a75ec0512d4cdc8c870280ae320f7d3
weave::Config already provides const reference to Settings struct.
diff --git a/libweave/src/base_api_handler.cc b/libweave/src/base_api_handler.cc
index f05deff..40a3a47 100644
--- a/libweave/src/base_api_handler.cc
+++ b/libweave/src/base_api_handler.cc
@@ -28,10 +28,10 @@
   device_info_->AddOnConfigChangedCallback(base::Bind(
       &BaseApiHandler::OnConfigChanged, weak_ptr_factory_.GetWeakPtr()));
 
-  const Config& config = device_info_->GetConfig();
+  const auto& settings = device_info_->GetSettings();
   base::DictionaryValue state;
   state.SetStringWithoutPathExpansion(kBaseStateFirmwareVersion,
-                                      config.firmware_version());
+                                      settings.firmware_version);
   CHECK(state_manager_->SetProperties(state, nullptr));
 
   command_manager->AddOnCommandAddedCallback(base::Bind(
@@ -52,10 +52,10 @@
 void BaseApiHandler::UpdateBaseConfiguration(Command* command) {
   command->SetProgress(base::DictionaryValue{}, nullptr);
 
-  const Config& config = device_info_->GetConfig();
-  std::string anonymous_access_role{config.local_anonymous_access_role()};
-  bool discovery_enabled{config.local_discovery_enabled()};
-  bool pairing_enabled{config.local_pairing_enabled()};
+  const auto& settings = device_info_->GetSettings();
+  std::string anonymous_access_role{settings.local_anonymous_access_role};
+  bool discovery_enabled{settings.local_discovery_enabled};
+  bool pairing_enabled{settings.local_pairing_enabled};
 
   auto parameters = command->GetParameters();
   parameters->GetString("localAnonymousAccessMaxRole", &anonymous_access_role);
@@ -84,10 +84,10 @@
 void BaseApiHandler::UpdateDeviceInfo(Command* command) {
   command->SetProgress(base::DictionaryValue{}, nullptr);
 
-  const Config& config = device_info_->GetConfig();
-  std::string name{config.name()};
-  std::string description{config.description()};
-  std::string location{config.location()};
+  const auto& settings = device_info_->GetSettings();
+  std::string name{settings.name};
+  std::string description{settings.description};
+  std::string location{settings.location};
 
   auto parameters = command->GetParameters();
   parameters->GetString("name", &name);
diff --git a/libweave/src/base_api_handler_unittest.cc b/libweave/src/base_api_handler_unittest.cc
index 67b4a9f..2e67822 100644
--- a/libweave/src/base_api_handler_unittest.cc
+++ b/libweave/src/base_api_handler_unittest.cc
@@ -115,7 +115,7 @@
     }
   })");
 
-  Config& config = *dev_reg_->GetMutableConfig();
+  const Settings& settings = dev_reg_->GetSettings();
 
   AddCommand(R"({
     'name' : 'base.updateBaseConfiguration',
@@ -125,9 +125,9 @@
       'localPairingEnabled': false
     }
   })");
-  EXPECT_EQ("none", config.local_anonymous_access_role());
-  EXPECT_FALSE(config.local_discovery_enabled());
-  EXPECT_FALSE(config.local_pairing_enabled());
+  EXPECT_EQ("none", settings.local_anonymous_access_role);
+  EXPECT_FALSE(settings.local_discovery_enabled);
+  EXPECT_FALSE(settings.local_pairing_enabled);
 
   auto expected = R"({
     'base': {
@@ -148,9 +148,9 @@
       'localPairingEnabled': true
     }
   })");
-  EXPECT_EQ("user", config.local_anonymous_access_role());
-  EXPECT_TRUE(config.local_discovery_enabled());
-  EXPECT_TRUE(config.local_pairing_enabled());
+  EXPECT_EQ("user", settings.local_anonymous_access_role);
+  EXPECT_TRUE(settings.local_discovery_enabled);
+  EXPECT_TRUE(settings.local_pairing_enabled);
   expected = R"({
     'base': {
       'firmwareVersion': '123123',
@@ -163,7 +163,7 @@
   EXPECT_JSON_EQ(expected, *state_manager_->GetStateValuesAsJson());
 
   {
-    Config::Transaction change{&config};
+    Config::Transaction change{dev_reg_->GetMutableConfig()};
     change.set_local_anonymous_access_role("viewer");
   }
   expected = R"({
@@ -204,10 +204,10 @@
     }
   })");
 
-  const Config& config = dev_reg_->GetConfig();
-  EXPECT_EQ("testName", config.name());
-  EXPECT_EQ("testDescription", config.description());
-  EXPECT_EQ("testLocation", config.location());
+  const Settings& config = dev_reg_->GetSettings();
+  EXPECT_EQ("testName", config.name);
+  EXPECT_EQ("testDescription", config.description);
+  EXPECT_EQ("testLocation", config.location);
 
   AddCommand(R"({
     'name' : 'base.updateDeviceInfo',
@@ -216,9 +216,9 @@
     }
   })");
 
-  EXPECT_EQ("testName", config.name());
-  EXPECT_EQ("testDescription", config.description());
-  EXPECT_EQ("newLocation", config.location());
+  EXPECT_EQ("testName", config.name);
+  EXPECT_EQ("testDescription", config.description);
+  EXPECT_EQ("newLocation", config.location);
 }
 
 }  // namespace weave
diff --git a/libweave/src/config.h b/libweave/src/config.h
index a54e018..2da5d0b 100644
--- a/libweave/src/config.h
+++ b/libweave/src/config.h
@@ -89,49 +89,6 @@
     bool save_{true};
   };
 
-  const std::string& client_id() const { return settings_.client_id; }
-  const std::string& client_secret() const { return settings_.client_secret; }
-  const std::string& api_key() const { return settings_.api_key; }
-  const std::string& oauth_url() const { return settings_.oauth_url; }
-  const std::string& service_url() const { return settings_.service_url; }
-  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;
-  }
-
-  bool wifi_auto_setup_enabled() const {
-    return settings_.wifi_auto_setup_enabled;
-  }
-  bool ble_setup_enabled() const { return settings_.ble_setup_enabled; }
-  const std::set<PairingType>& pairing_modes() const {
-    return settings_.pairing_modes;
-  }
-  const std::string& embedded_code() const { return settings_.embedded_code; }
-
-  const std::string& name() const { return settings_.name; }
-  const std::string& description() const { return settings_.description; }
-  const std::string& location() const { return settings_.location; }
-  const std::string& local_anonymous_access_role() const {
-    return settings_.local_anonymous_access_role;
-  }
-  bool local_pairing_enabled() const { return settings_.local_pairing_enabled; }
-  bool local_discovery_enabled() const {
-    return settings_.local_discovery_enabled;
-  }
-
-  const std::string& device_id() const { return settings_.device_id; }
-  const std::string& refresh_token() const { return settings_.refresh_token; }
-  const std::string& robot_account() const { return settings_.robot_account; }
-  const std::string& last_configured_ssid() const {
-    return settings_.last_configured_ssid;
-  }
-
  private:
   void Save();
 
diff --git a/libweave/src/config_unittest.cc b/libweave/src/config_unittest.cc
index 9ee16af..ec9b5a0 100644
--- a/libweave/src/config_unittest.cc
+++ b/libweave/src/config_unittest.cc
@@ -29,6 +29,10 @@
         base::Bind(&ConfigTest::OnConfigChanged, base::Unretained(this)));
   }
 
+  const Settings& GetSettings() const { return config_->GetSettings(); }
+
+  const Settings& GetDefaultSettings() const { return default_.GetSettings(); }
+
   MOCK_METHOD1(OnConfigChanged, void(const Settings&));
 
   test::MockConfigStore config_store_;
@@ -43,33 +47,34 @@
 }
 
 TEST_F(ConfigTest, Defaults) {
-  EXPECT_EQ("58855907228.apps.googleusercontent.com", config_->client_id());
-  EXPECT_EQ("eHSAREAHrIqPsHBxCE9zPPBi", config_->client_secret());
-  EXPECT_EQ("AIzaSyDSq46gG-AxUnC3zoqD9COIPrjolFsMfMA", config_->api_key());
-  EXPECT_EQ("https://accounts.google.com/o/oauth2/", config_->oauth_url());
+  EXPECT_EQ("58855907228.apps.googleusercontent.com", GetSettings().client_id);
+  EXPECT_EQ("eHSAREAHrIqPsHBxCE9zPPBi", GetSettings().client_secret);
+  EXPECT_EQ("AIzaSyDSq46gG-AxUnC3zoqD9COIPrjolFsMfMA", GetSettings().api_key);
+  EXPECT_EQ("https://accounts.google.com/o/oauth2/", GetSettings().oauth_url);
   EXPECT_EQ("https://www.googleapis.com/clouddevices/v1/",
-            config_->service_url());
-  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());
-  EXPECT_FALSE(config_->ble_setup_enabled());
+            GetSettings().service_url);
+  EXPECT_EQ("Chromium", GetSettings().oem_name);
+  EXPECT_EQ("Brillo", GetSettings().model_name);
+  EXPECT_EQ("AAAAA", GetSettings().model_id);
+  EXPECT_EQ("", GetSettings().firmware_version);
+  EXPECT_EQ(base::TimeDelta::FromSeconds(7), GetSettings().polling_period);
+  EXPECT_EQ(base::TimeDelta::FromMinutes(30),
+            GetSettings().backup_polling_period);
+  EXPECT_TRUE(GetSettings().wifi_auto_setup_enabled);
+  EXPECT_FALSE(GetSettings().ble_setup_enabled);
   EXPECT_EQ(std::set<PairingType>{PairingType::kPinCode},
-            config_->pairing_modes());
-  EXPECT_EQ("", config_->embedded_code());
-  EXPECT_EQ("Developer device", config_->name());
-  EXPECT_EQ("", config_->description());
-  EXPECT_EQ("", config_->location());
-  EXPECT_EQ("viewer", config_->local_anonymous_access_role());
-  EXPECT_TRUE(config_->local_pairing_enabled());
-  EXPECT_TRUE(config_->local_discovery_enabled());
-  EXPECT_EQ("", config_->device_id());
-  EXPECT_EQ("", config_->refresh_token());
-  EXPECT_EQ("", config_->robot_account());
-  EXPECT_EQ("", config_->last_configured_ssid());
+            GetSettings().pairing_modes);
+  EXPECT_EQ("", GetSettings().embedded_code);
+  EXPECT_EQ("Developer device", GetSettings().name);
+  EXPECT_EQ("", GetSettings().description);
+  EXPECT_EQ("", GetSettings().location);
+  EXPECT_EQ("viewer", GetSettings().local_anonymous_access_role);
+  EXPECT_TRUE(GetSettings().local_pairing_enabled);
+  EXPECT_TRUE(GetSettings().local_discovery_enabled);
+  EXPECT_EQ("", GetSettings().device_id);
+  EXPECT_EQ("", GetSettings().refresh_token);
+  EXPECT_EQ("", GetSettings().robot_account);
+  EXPECT_EQ("", GetSettings().last_configured_ssid);
 }
 
 TEST_F(ConfigTest, LoadState) {
@@ -95,92 +100,94 @@
   EXPECT_CALL(*this, OnConfigChanged(_)).Times(1);
   config_->Load();
 
-  EXPECT_EQ("state_client_id", config_->client_id());
-  EXPECT_EQ("state_client_secret", config_->client_secret());
-  EXPECT_EQ("state_api_key", config_->api_key());
-  EXPECT_EQ("state_oauth_url", config_->oauth_url());
-  EXPECT_EQ("state_service_url", config_->service_url());
-  EXPECT_EQ(default_.oem_name(), config_->oem_name());
-  EXPECT_EQ(default_.model_name(), config_->model_name());
-  EXPECT_EQ(default_.model_id(), config_->model_id());
-  EXPECT_EQ(default_.polling_period(), config_->polling_period());
-  EXPECT_EQ(default_.backup_polling_period(), config_->backup_polling_period());
-  EXPECT_EQ(default_.wifi_auto_setup_enabled(),
-            config_->wifi_auto_setup_enabled());
-  EXPECT_EQ(default_.ble_setup_enabled(), config_->ble_setup_enabled());
-  EXPECT_EQ(default_.pairing_modes(), config_->pairing_modes());
-  EXPECT_EQ(default_.embedded_code(), config_->embedded_code());
-  EXPECT_EQ("state_name", config_->name());
-  EXPECT_EQ("state_description", config_->description());
-  EXPECT_EQ("state_location", config_->location());
-  EXPECT_EQ("user", config_->local_anonymous_access_role());
-  EXPECT_FALSE(config_->local_pairing_enabled());
-  EXPECT_FALSE(config_->local_discovery_enabled());
-  EXPECT_EQ("state_device_id", config_->device_id());
-  EXPECT_EQ("state_refresh_token", config_->refresh_token());
-  EXPECT_EQ("state_robot_account", config_->robot_account());
-  EXPECT_EQ("state_last_configured_ssid", config_->last_configured_ssid());
+  EXPECT_EQ("state_client_id", GetSettings().client_id);
+  EXPECT_EQ("state_client_secret", GetSettings().client_secret);
+  EXPECT_EQ("state_api_key", GetSettings().api_key);
+  EXPECT_EQ("state_oauth_url", GetSettings().oauth_url);
+  EXPECT_EQ("state_service_url", GetSettings().service_url);
+  EXPECT_EQ(GetDefaultSettings().oem_name, GetSettings().oem_name);
+  EXPECT_EQ(GetDefaultSettings().model_name, GetSettings().model_name);
+  EXPECT_EQ(GetDefaultSettings().model_id, GetSettings().model_id);
+  EXPECT_EQ(GetDefaultSettings().polling_period, GetSettings().polling_period);
+  EXPECT_EQ(GetDefaultSettings().backup_polling_period,
+            GetSettings().backup_polling_period);
+  EXPECT_EQ(GetDefaultSettings().wifi_auto_setup_enabled,
+            GetSettings().wifi_auto_setup_enabled);
+  EXPECT_EQ(GetDefaultSettings().ble_setup_enabled,
+            GetSettings().ble_setup_enabled);
+  EXPECT_EQ(GetDefaultSettings().pairing_modes, GetSettings().pairing_modes);
+  EXPECT_EQ(GetDefaultSettings().embedded_code, GetSettings().embedded_code);
+  EXPECT_EQ("state_name", GetSettings().name);
+  EXPECT_EQ("state_description", GetSettings().description);
+  EXPECT_EQ("state_location", GetSettings().location);
+  EXPECT_EQ("user", GetSettings().local_anonymous_access_role);
+  EXPECT_FALSE(GetSettings().local_pairing_enabled);
+  EXPECT_FALSE(GetSettings().local_discovery_enabled);
+  EXPECT_EQ("state_device_id", GetSettings().device_id);
+  EXPECT_EQ("state_refresh_token", GetSettings().refresh_token);
+  EXPECT_EQ("state_robot_account", GetSettings().robot_account);
+  EXPECT_EQ("state_last_configured_ssid", GetSettings().last_configured_ssid);
 }
 
 TEST_F(ConfigTest, Setters) {
   Config::Transaction change{config_.get()};
 
   change.set_client_id("set_client_id");
-  EXPECT_EQ("set_client_id", config_->client_id());
+  EXPECT_EQ("set_client_id", GetSettings().client_id);
 
   change.set_client_secret("set_client_secret");
-  EXPECT_EQ("set_client_secret", config_->client_secret());
+  EXPECT_EQ("set_client_secret", GetSettings().client_secret);
 
   change.set_api_key("set_api_key");
-  EXPECT_EQ("set_api_key", config_->api_key());
+  EXPECT_EQ("set_api_key", GetSettings().api_key);
 
   change.set_oauth_url("set_oauth_url");
-  EXPECT_EQ("set_oauth_url", config_->oauth_url());
+  EXPECT_EQ("set_oauth_url", GetSettings().oauth_url);
 
   change.set_service_url("set_service_url");
-  EXPECT_EQ("set_service_url", config_->service_url());
+  EXPECT_EQ("set_service_url", GetSettings().service_url);
 
   change.set_name("set_name");
-  EXPECT_EQ("set_name", config_->name());
+  EXPECT_EQ("set_name", GetSettings().name);
 
   change.set_description("set_description");
-  EXPECT_EQ("set_description", config_->description());
+  EXPECT_EQ("set_description", GetSettings().description);
 
   change.set_location("set_location");
-  EXPECT_EQ("set_location", config_->location());
+  EXPECT_EQ("set_location", GetSettings().location);
 
   change.set_local_anonymous_access_role("viewer");
-  EXPECT_EQ("viewer", config_->local_anonymous_access_role());
+  EXPECT_EQ("viewer", GetSettings().local_anonymous_access_role);
 
   change.set_local_anonymous_access_role("none");
-  EXPECT_EQ("none", config_->local_anonymous_access_role());
+  EXPECT_EQ("none", GetSettings().local_anonymous_access_role);
 
   change.set_local_anonymous_access_role("user");
-  EXPECT_EQ("user", config_->local_anonymous_access_role());
+  EXPECT_EQ("user", GetSettings().local_anonymous_access_role);
 
   change.set_local_discovery_enabled(false);
-  EXPECT_FALSE(config_->local_discovery_enabled());
+  EXPECT_FALSE(GetSettings().local_discovery_enabled);
 
   change.set_local_pairing_enabled(false);
-  EXPECT_FALSE(config_->local_pairing_enabled());
+  EXPECT_FALSE(GetSettings().local_pairing_enabled);
 
   change.set_local_discovery_enabled(true);
-  EXPECT_TRUE(config_->local_discovery_enabled());
+  EXPECT_TRUE(GetSettings().local_discovery_enabled);
 
   change.set_local_pairing_enabled(true);
-  EXPECT_TRUE(config_->local_pairing_enabled());
+  EXPECT_TRUE(GetSettings().local_pairing_enabled);
 
   change.set_device_id("set_id");
-  EXPECT_EQ("set_id", config_->device_id());
+  EXPECT_EQ("set_id", GetSettings().device_id);
 
   change.set_refresh_token("set_token");
-  EXPECT_EQ("set_token", config_->refresh_token());
+  EXPECT_EQ("set_token", GetSettings().refresh_token);
 
   change.set_robot_account("set_account");
-  EXPECT_EQ("set_account", config_->robot_account());
+  EXPECT_EQ("set_account", GetSettings().robot_account);
 
   change.set_last_configured_ssid("set_last_configured_ssid");
-  EXPECT_EQ("set_last_configured_ssid", config_->last_configured_ssid());
+  EXPECT_EQ("set_last_configured_ssid", GetSettings().last_configured_ssid);
 
   EXPECT_CALL(*this, OnConfigChanged(_)).Times(1);
 
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index 4187df7..a54ac05 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -101,7 +101,7 @@
 void DeviceManager::OnWiFiBootstrapStateChanged(
     weave::privet::WifiBootstrapManager::State state) {
   const std::string& ssid = privet_->GetCurrentlyConnectedSsid();
-  if (ssid != device_info_->GetConfig().last_configured_ssid()) {
+  if (ssid != device_info_->GetSettings().last_configured_ssid) {
     weave::Config::Transaction change{device_info_->GetMutableConfig()};
     change.set_last_configured_ssid(ssid);
   }
diff --git a/libweave/src/device_registration_info.cc b/libweave/src/device_registration_info.cc
index 310eaf0..9135cfa 100644
--- a/libweave/src/device_registration_info.cc
+++ b/libweave/src/device_registration_info.cc
@@ -249,21 +249,21 @@
 std::string DeviceRegistrationInfo::GetServiceURL(
     const std::string& subpath,
     const WebParamList& params) const {
-  return BuildURL(config_->service_url(), subpath, params);
+  return BuildURL(GetSettings().service_url, subpath, params);
 }
 
 std::string DeviceRegistrationInfo::GetDeviceURL(
     const std::string& subpath,
     const WebParamList& params) const {
-  CHECK(!config_->device_id().empty()) << "Must have a valid device ID";
-  return BuildURL(config_->service_url(),
-                  "devices/" + config_->device_id() + "/" + subpath, params);
+  CHECK(!GetSettings().device_id.empty()) << "Must have a valid device ID";
+  return BuildURL(GetSettings().service_url,
+                  "devices/" + GetSettings().device_id + "/" + subpath, params);
 }
 
 std::string DeviceRegistrationInfo::GetOAuthURL(
     const std::string& subpath,
     const WebParamList& params) const {
-  return BuildURL(config_->oauth_url(), subpath, params);
+  return BuildURL(GetSettings().oauth_url, subpath, params);
 }
 
 void DeviceRegistrationInfo::Start() {
@@ -291,8 +291,9 @@
 }
 
 bool DeviceRegistrationInfo::HaveRegistrationCredentials() const {
-  return !config_->refresh_token().empty() && !config_->device_id().empty() &&
-         !config_->robot_account().empty();
+  return !GetSettings().refresh_token.empty() &&
+         !GetSettings().device_id.empty() &&
+         !GetSettings().robot_account.empty();
 }
 
 bool DeviceRegistrationInfo::VerifyRegistrationCredentials(
@@ -365,9 +366,9 @@
 
   RequestSender sender{http::kPost, GetOAuthURL("token"), http_client_};
   sender.SetFormData({
-      {"refresh_token", config_->refresh_token()},
-      {"client_id", config_->client_id()},
-      {"client_secret", config_->client_secret()},
+      {"refresh_token", GetSettings().refresh_token},
+      {"client_id", GetSettings().client_id},
+      {"client_secret", GetSettings().client_secret},
       {"grant_type", "refresh_token"},
   });
   int request_id = sender.Send(
@@ -452,7 +453,7 @@
   // call back to OnConnected() and at that time we'll switch to use the
   // primary channel and switch periodic poll into much more infrequent backup
   // poll mode.
-  const base::TimeDelta pull_interval = config_->polling_period();
+  const base::TimeDelta pull_interval = GetSettings().polling_period;
   if (!pull_channel_) {
     pull_channel_.reset(new PullChannel{pull_interval, task_runner_});
     pull_channel_->Start(this);
@@ -468,7 +469,7 @@
 
   notification_channel_starting_ = true;
   primary_notification_channel_.reset(new XmppChannel{
-      config_->robot_account(), access_token_, task_runner_, network_});
+      GetSettings().robot_account, access_token_, task_runner_, network_});
   primary_notification_channel_->Start(this);
 }
 
@@ -497,14 +498,14 @@
   CHECK(state);
 
   std::unique_ptr<base::DictionaryValue> resource{new base::DictionaryValue};
-  if (!config_->device_id().empty())
-    resource->SetString("id", config_->device_id());
-  resource->SetString("name", config_->name());
-  if (!config_->description().empty())
-    resource->SetString("description", config_->description());
-  if (!config_->location().empty())
-    resource->SetString("location", config_->location());
-  resource->SetString("modelManifestId", config_->model_id());
+  if (!GetSettings().device_id.empty())
+    resource->SetString("id", GetSettings().device_id);
+  resource->SetString("name", GetSettings().name);
+  if (!GetSettings().description.empty())
+    resource->SetString("description", GetSettings().description);
+  if (!GetSettings().location.empty())
+    resource->SetString("location", GetSettings().location);
+  resource->SetString("modelManifestId", GetSettings().model_id);
   std::unique_ptr<base::DictionaryValue> channel{new base::DictionaryValue};
   if (current_notification_channel_) {
     channel->SetString("supportedType",
@@ -542,11 +543,11 @@
 
   base::DictionaryValue req_json;
   req_json.SetString("id", ticket_id);
-  req_json.SetString("oauthClientId", config_->client_id());
+  req_json.SetString("oauthClientId", GetSettings().client_id);
   req_json.Set("deviceDraft", device_draft.release());
 
   auto url = GetServiceURL("registrationTickets/" + ticket_id,
-                           {{"key", config_->api_key()}});
+                           {{"key", GetSettings().api_key}});
 
   RequestSender sender{http::kPatch, url, http_client_};
   sender.SetJsonData(req_json);
@@ -563,7 +564,7 @@
   }
 
   url = GetServiceURL("registrationTickets/" + ticket_id + "/finalize",
-                      {{"key", config_->api_key()}});
+                      {{"key", GetSettings().api_key}});
   response = RequestSender{http::kPost, url, http_client_}.SendAndBlock(error);
   if (!response)
     return std::string();
@@ -594,8 +595,8 @@
   RequestSender sender2{http::kPost, GetOAuthURL("token"), http_client_};
   sender2.SetFormData(
       {{"code", auth_code},
-       {"client_id", config_->client_id()},
-       {"client_secret", config_->client_secret()},
+       {"client_id", GetSettings().client_id},
+       {"client_secret", GetSettings().client_secret},
        {"redirect_uri", "oob"},
        {"scope", "https://www.googleapis.com/auth/clouddevices"},
        {"grant_type", "authorization_code"}});
@@ -1041,10 +1042,9 @@
   fetch_commands_request_queued_ = false;
   DoCloudRequest(
       http::kGet,
-      GetServiceURL("commands/queue", {{"deviceId", config_->device_id()}}),
-      nullptr,
-      base::Bind(&DeviceRegistrationInfo::OnFetchCommandsSuccess, AsWeakPtr(),
-                 on_success),
+      GetServiceURL("commands/queue", {{"deviceId", GetSettings().device_id}}),
+      nullptr, base::Bind(&DeviceRegistrationInfo::OnFetchCommandsSuccess,
+                          AsWeakPtr(), on_success),
       base::Bind(&DeviceRegistrationInfo::OnFetchCommandsError, AsWeakPtr(),
                  on_failure));
 }
@@ -1230,7 +1230,7 @@
             << channel_name;
   CHECK_EQ(primary_notification_channel_->GetName(), channel_name);
   notification_channel_starting_ = false;
-  pull_channel_->UpdatePullInterval(config_->backup_polling_period());
+  pull_channel_->UpdatePullInterval(GetSettings().backup_polling_period);
   current_notification_channel_ = primary_notification_channel_.get();
 
   // If we have not successfully connected to the cloud server and we have not
@@ -1254,7 +1254,7 @@
   if (!HaveRegistrationCredentials() || !connected_to_cloud_)
     return;
 
-  pull_channel_->UpdatePullInterval(config_->polling_period());
+  pull_channel_->UpdatePullInterval(GetSettings().polling_period);
   current_notification_channel_ = pull_channel_.get();
   UpdateDeviceResource(base::Bind(&base::DoNothing),
                        base::Bind(&IgnoreCloudError));
@@ -1286,7 +1286,7 @@
 }
 
 void DeviceRegistrationInfo::OnDeviceDeleted(const std::string& device_id) {
-  if (device_id != config_->device_id()) {
+  if (device_id != GetSettings().device_id) {
     LOG(WARNING) << "Unexpected device deletion notification for device ID '"
                  << device_id << "'";
     return;
diff --git a/libweave/src/device_registration_info.h b/libweave/src/device_registration_info.h
index 93fe85c..3b2cdb7 100644
--- a/libweave/src/device_registration_info.h
+++ b/libweave/src/device_registration_info.h
@@ -132,7 +132,7 @@
                      const base::Closure& on_error) override;
 
   // TODO(vitalybuka): remove getters and pass config to dependent code.
-  const Config& GetConfig() const { return *config_; }
+  const Settings& GetSettings() const { return config_->GetSettings(); }
   Config* GetMutableConfig() { return config_.get(); }
 
  private:
diff --git a/libweave/src/privet/cloud_delegate.cc b/libweave/src/privet/cloud_delegate.cc
index 1db4228..9f16ce5 100644
--- a/libweave/src/privet/cloud_delegate.cc
+++ b/libweave/src/privet/cloud_delegate.cc
@@ -66,18 +66,18 @@
   ~CloudDelegateImpl() override = default;
 
   std::string GetModelId() const override {
-    CHECK_EQ(5, device_->GetConfig().model_id().size());
-    return device_->GetConfig().model_id();
+    CHECK_EQ(5u, device_->GetSettings().model_id.size());
+    return device_->GetSettings().model_id;
   }
 
-  std::string GetName() const override { return device_->GetConfig().name(); }
+  std::string GetName() const override { return device_->GetSettings().name; }
 
   std::string GetDescription() const override {
-    return device_->GetConfig().description();
+    return device_->GetSettings().description;
   }
 
   std::string GetLocation() const override {
-    return device_->GetConfig().location();
+    return device_->GetSettings().location;
   }
 
   void UpdateDeviceInfo(const std::string& name,
@@ -92,11 +92,11 @@
   }
 
   std::string GetOemName() const override {
-    return device_->GetConfig().oem_name();
+    return device_->GetSettings().oem_name;
   }
 
   std::string GetModelName() const override {
-    return device_->GetConfig().model_name();
+    return device_->GetSettings().model_name;
   }
 
   std::set<std::string> GetServices() const override {
@@ -110,7 +110,7 @@
 
   AuthScope GetAnonymousMaxScope() const override {
     AuthScope scope;
-    if (StringToEnum(device_->GetConfig().local_anonymous_access_role(),
+    if (StringToEnum(device_->GetSettings().local_anonymous_access_role,
                      &scope)) {
       return scope;
     }
@@ -148,7 +148,7 @@
   }
 
   std::string GetCloudId() const override {
-    return device_->GetConfig().device_id();
+    return device_->GetSettings().device_id;
   }
 
   const base::DictionaryValue& GetState() const override { return state_; }
diff --git a/libweave/src/privet/privet_manager.cc b/libweave/src/privet/privet_manager.cc
index 125fba5..2541908 100644
--- a/libweave/src/privet/privet_manager.cc
+++ b/libweave/src/privet/privet_manager.cc
@@ -49,17 +49,17 @@
   cloud_ = CloudDelegate::CreateDefault(task_runner, device, command_manager,
                                         state_manager);
   cloud_observer_.Add(cloud_.get());
-  security_.reset(new SecurityManager(device->GetConfig().pairing_modes(),
-                                      device->GetConfig().embedded_code(),
+  security_.reset(new SecurityManager(device->GetSettings().pairing_modes,
+                                      device->GetSettings().embedded_code,
                                       disable_security_, task_runner));
   network->AddOnConnectionChangedCallback(
       base::Bind(&Manager::OnConnectivityChanged, base::Unretained(this)));
 
-  if (device->GetConfig().wifi_auto_setup_enabled()) {
+  if (device->GetSettings().wifi_auto_setup_enabled) {
     VLOG(1) << "Enabling WiFi bootstrapping.";
     wifi_bootstrap_manager_.reset(new WifiBootstrapManager(
-        device->GetConfig().last_configured_ssid(), options.test_privet_ssid,
-        device->GetConfig().ble_setup_enabled(), task_runner, network,
+        device->GetSettings().last_configured_ssid, options.test_privet_ssid,
+        device->GetSettings().ble_setup_enabled, task_runner, network,
         cloud_.get()));
     wifi_bootstrap_manager_->Init();
   }