Add config flag to mark that local auth info was changed libWeave must upload changed local auth info to the server. BUG=25766813 Change-Id: I3d82e2dab363554b1ed7ad164edbe8fbe04a7b7a Reviewed-on: https://weave-review.googlesource.com/1801 Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/src/config.cc b/src/config.cc index c20f18d..f0ec963 100644 --- a/src/config.cc +++ b/src/config.cc
@@ -42,6 +42,7 @@ const char kRobotAccount[] = "robot_account"; const char kLastConfiguredSsid[] = "last_configured_ssid"; const char kSecret[] = "secret"; +const char kLocalAuthInfoChanged[] = "local_auth_info_changed"; } // namespace config_keys @@ -120,6 +121,7 @@ CHECK(settings_.robot_account.empty()); CHECK(settings_.last_configured_ssid.empty()); CHECK(settings_.secret.empty()); + CHECK(settings_.local_auth_info_changed); change.LoadState(); } @@ -211,6 +213,9 @@ std::vector<uint8_t> secret; if (dict->GetString(config_keys::kSecret, &tmp) && Base64Decode(tmp, &secret)) set_secret(secret); + + if (dict->GetBoolean(config_keys::kLocalAuthInfoChanged, &tmp_bool)) + set_local_auth_info_changed(tmp_bool); } void Config::Save() { @@ -232,6 +237,8 @@ dict.SetString(config_keys::kLastConfiguredSsid, settings_.last_configured_ssid); dict.SetString(config_keys::kSecret, Base64Encode(settings_.secret)); + dict.SetBoolean(config_keys::kLocalAuthInfoChanged, + settings_.local_auth_info_changed); dict.SetString(config_keys::kName, settings_.name); dict.SetString(config_keys::kDescription, settings_.description); dict.SetString(config_keys::kLocation, settings_.location);
diff --git a/src/config.h b/src/config.h index bab50ca..fc2568f 100644 --- a/src/config.h +++ b/src/config.h
@@ -28,6 +28,7 @@ std::string robot_account; std::string last_configured_ssid; std::vector<uint8_t> secret; + bool local_auth_info_changed{true}; }; using OnChangedCallback = base::Callback<void(const weave::Settings&)>; @@ -91,6 +92,9 @@ void set_secret(const std::vector<uint8_t>& secret) { settings_->secret = secret; } + void set_local_auth_info_changed(bool local_auth_info_changed) { + settings_->local_auth_info_changed = local_auth_info_changed; + } void Commit();
diff --git a/src/config_unittest.cc b/src/config_unittest.cc index 67c3bfe..8c99131 100644 --- a/src/config_unittest.cc +++ b/src/config_unittest.cc
@@ -77,6 +77,7 @@ EXPECT_EQ("", GetSettings().robot_account); EXPECT_EQ("", GetSettings().last_configured_ssid); EXPECT_EQ(std::vector<uint8_t>(), GetSettings().secret); + EXPECT_TRUE(GetSettings().local_auth_info_changed); } TEST_F(ConfigTest, LoadStateV0) { @@ -116,6 +117,7 @@ "device_id": "state_device_id", "last_configured_ssid": "state_last_configured_ssid", "local_anonymous_access_role": "user", + "local_auth_info_changed": false, "local_discovery_enabled": false, "local_pairing_enabled": false, "location": "state_location", @@ -159,6 +161,7 @@ EXPECT_EQ("state_robot_account", GetSettings().robot_account); EXPECT_EQ("state_last_configured_ssid", GetSettings().last_configured_ssid); EXPECT_EQ("c3RhdGVfc2VjcmV0", Base64Encode(GetSettings().secret)); + EXPECT_FALSE(GetSettings().local_auth_info_changed); } TEST_F(ConfigTest, Setters) { @@ -228,6 +231,9 @@ change.set_secret(secret); EXPECT_EQ(secret, GetSettings().secret); + change.set_local_auth_info_changed(false); + EXPECT_FALSE(GetSettings().local_auth_info_changed); + EXPECT_CALL(*this, OnConfigChanged(_)).Times(1); EXPECT_CALL(config_store_, SaveSettings(_)) @@ -242,6 +248,7 @@ 'device_id': 'set_device_id', 'last_configured_ssid': 'set_last_configured_ssid', 'local_anonymous_access_role': 'user', + 'local_auth_info_changed': false, 'local_discovery_enabled': true, 'local_pairing_enabled': true, 'location': 'set_location',