Hide internal settings from weave/settings.h

BUG:24267885
Change-Id: I8584ba384b57703ea9bb7f9f9a285986373b455a
Reviewed-on: https://weave-review.googlesource.com/1194
Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/libweave/include/weave/settings.h b/libweave/include/weave/settings.h
index 84d7e0b..1c919a1 100644
--- a/libweave/include/weave/settings.h
+++ b/libweave/include/weave/settings.h
@@ -56,10 +56,6 @@
   base::TimeDelta backup_polling_period;
   bool wifi_auto_setup_enabled{true};
   bool ble_setup_enabled{false};
-  std::string refresh_token;
-  std::string robot_account;
-  std::string last_configured_ssid;
-  std::string secret;
 };
 
 }  // namespace weave
diff --git a/libweave/src/config.cc b/libweave/src/config.cc
index 5370ec0..f601b82 100644
--- a/libweave/src/config.cc
+++ b/libweave/src/config.cc
@@ -47,8 +47,8 @@
   return StringToEnum(role, &scope);
 }
 
-Settings CreateDefaultSettings() {
-  Settings result;
+Config::Settings CreateDefaultSettings() {
+  Config::Settings result;
   result.oauth_url = "https://accounts.google.com/o/oauth2/";
   result.service_url = "https://www.googleapis.com/clouddevices/v1/";
   result.local_anonymous_access_role = "viewer";
@@ -78,7 +78,7 @@
   callback.Run(settings_);
 }
 
-const Settings& Config::GetSettings() const {
+const Config::Settings& Config::GetSettings() const {
   return settings_;
 }
 
diff --git a/libweave/src/config.h b/libweave/src/config.h
index e014f20..5baff87 100644
--- a/libweave/src/config.h
+++ b/libweave/src/config.h
@@ -22,13 +22,20 @@
 // Handles reading buffet config and state files.
 class Config final {
  public:
-  using OnChangedCallback = base::Callback<void(const Settings&)>;
+  struct Settings : public weave::Settings {
+    std::string refresh_token;
+    std::string robot_account;
+    std::string last_configured_ssid;
+    std::string secret;
+  };
+
+  using OnChangedCallback = base::Callback<void(const weave::Settings&)>;
   ~Config() = default;
 
   explicit Config(provider::ConfigStore* config_store);
 
   void AddOnChangedCallback(const OnChangedCallback& callback);
-  const Settings& GetSettings() const;
+  const Config::Settings& GetSettings() const;
 
   void Load();
 
diff --git a/libweave/src/config_unittest.cc b/libweave/src/config_unittest.cc
index fd6b8d3..02885e1 100644
--- a/libweave/src/config_unittest.cc
+++ b/libweave/src/config_unittest.cc
@@ -29,9 +29,9 @@
     default_.Load();
   }
 
-  const Settings& GetSettings() const { return config_.GetSettings(); }
+  const Config::Settings& GetSettings() const { return config_.GetSettings(); }
 
-  const Settings& GetDefaultSettings() const { return default_.GetSettings(); }
+  const Config::Settings& GetDefaultSettings() const { return default_.GetSettings(); }
 
   MOCK_METHOD1(OnConfigChanged, void(const Settings&));
 
diff --git a/libweave/src/device_registration_info.h b/libweave/src/device_registration_info.h
index f73d450..14ddc1d 100644
--- a/libweave/src/device_registration_info.h
+++ b/libweave/src/device_registration_info.h
@@ -131,7 +131,7 @@
                      const base::Closure& on_error) override;
 
   // TODO(vitalybuka): remove getters and pass config to dependent code.
-  const Settings& GetSettings() const { return config_->GetSettings(); }
+  const Config::Settings& GetSettings() const { return config_->GetSettings(); }
   Config* GetMutableConfig() { return config_.get(); }
 
  private:
diff --git a/libweave/src/device_registration_info_unittest.cc b/libweave/src/device_registration_info_unittest.cc
index 947ba10..10bbc07 100644
--- a/libweave/src/device_registration_info_unittest.cc
+++ b/libweave/src/device_registration_info_unittest.cc
@@ -494,9 +494,9 @@
   EXPECT_EQ(RegistrationStatus::kConnecting, GetRegistrationStatus());
 
   // Validate the device info saved to storage...
-  EXPECT_EQ(test_data::kDeviceId, saved_settings.cloud_id);
-  EXPECT_EQ(test_data::kRefreshToken, saved_settings.refresh_token);
-  EXPECT_EQ(test_data::kRobotAccountEmail, saved_settings.robot_account);
+  EXPECT_EQ(test_data::kDeviceId, dev_reg_->GetSettings().cloud_id);
+  EXPECT_EQ(test_data::kRefreshToken, dev_reg_->GetSettings().refresh_token);
+  EXPECT_EQ(test_data::kRobotAccountEmail, dev_reg_->GetSettings().robot_account);
 }
 
 TEST_F(DeviceRegistrationInfoTest, OOBRegistrationStatus) {