Commit aa7ecd3b authored by Jon Mann's avatar Jon Mann Committed by Commit Bot

Add OnNetworkUpdate to NetworkMetadataObserver.

Allows observers of the NetworkMetadataStore
to watch for updates.

Bug: 966270
Change-Id: Ibc4df7bd28a0222e30445453c1298d26e0c0c5a6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2151173Reviewed-by: default avatarJames Vecore <vecore@google.com>
Reviewed-by: default avatarAzeem Arshad <azeemarshad@chromium.org>
Commit-Queue: Jon Mann <jonmann@chromium.org>
Cr-Commit-Position: refs/heads/master@{#759924}
parent 9626a1dd
...@@ -93,6 +93,7 @@ component("network") { ...@@ -93,6 +93,7 @@ component("network") {
"network_handler_callbacks.h", "network_handler_callbacks.h",
"network_ip_config.cc", "network_ip_config.cc",
"network_ip_config.h", "network_ip_config.h",
"network_metadata_observer.cc",
"network_metadata_observer.h", "network_metadata_observer.h",
"network_metadata_store.cc", "network_metadata_store.cc",
"network_metadata_store.h", "network_metadata_store.h",
......
// Copyright (c) 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromeos/network/network_metadata_observer.h"
namespace chromeos {
NetworkMetadataObserver::NetworkMetadataObserver() = default;
NetworkMetadataObserver::~NetworkMetadataObserver() = default;
void NetworkMetadataObserver::OnFirstConnectionToNetwork(
const std::string& guid) {}
void NetworkMetadataObserver::OnNetworkUpdate(
const std::string& guid,
base::DictionaryValue* set_properties) {}
} // namespace chromeos
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/component_export.h" #include "base/component_export.h"
#include "base/observer_list_types.h" #include "base/observer_list_types.h"
#include "base/values.h"
namespace chromeos { namespace chromeos {
...@@ -18,11 +19,16 @@ class COMPONENT_EXPORT(CHROMEOS_NETWORK) NetworkMetadataObserver ...@@ -18,11 +19,16 @@ class COMPONENT_EXPORT(CHROMEOS_NETWORK) NetworkMetadataObserver
: public base::CheckedObserver { : public base::CheckedObserver {
public: public:
// Called the first time that a network is successfully connected to. // Called the first time that a network is successfully connected to.
virtual void OnFirstConnectionToNetwork(const std::string& guid) = 0; virtual void OnFirstConnectionToNetwork(const std::string& guid);
// Called after a network configuration and associated metadata has been
// updated.
virtual void OnNetworkUpdate(const std::string& guid,
base::DictionaryValue* set_properties);
protected: protected:
NetworkMetadataObserver() = default; NetworkMetadataObserver();
~NetworkMetadataObserver() override = default; ~NetworkMetadataObserver() override;
}; };
} // namespace chromeos } // namespace chromeos
......
...@@ -106,6 +106,10 @@ void NetworkMetadataStore::OnConfigurationModified( ...@@ -106,6 +106,10 @@ void NetworkMetadataStore::OnConfigurationModified(
if (set_properties->HasKey(shill::kPassphraseProperty)) { if (set_properties->HasKey(shill::kPassphraseProperty)) {
SetPref(guid, kLastConnectedTimestampPref, base::Value(0)); SetPref(guid, kLastConnectedTimestampPref, base::Value(0));
} }
for (auto& observer : observers_) {
observer.OnNetworkUpdate(guid, set_properties);
}
} }
void NetworkMetadataStore::OnConfigurationRemoved( void NetworkMetadataStore::OnConfigurationRemoved(
......
...@@ -35,13 +35,29 @@ class TestNetworkMetadataObserver : public NetworkMetadataObserver { ...@@ -35,13 +35,29 @@ class TestNetworkMetadataObserver : public NetworkMetadataObserver {
void OnFirstConnectionToNetwork(const std::string& guid) override { void OnFirstConnectionToNetwork(const std::string& guid) override {
connections_.insert(guid); connections_.insert(guid);
} }
void OnNetworkUpdate(const std::string& guid,
base::DictionaryValue* set_properties) override {
if (!updates_.contains(guid)) {
updates_[guid] = 1;
} else {
updates_[guid]++;
}
}
bool HasConnected(const std::string& guid) { bool HasConnected(const std::string& guid) {
return connections_.count(guid) != 0; return connections_.count(guid) != 0;
} }
int GetNumberOfUpdates(const std::string& guid) {
if (!updates_.contains(guid)) {
return 0;
}
return updates_[guid];
}
private: private:
std::set<std::string> connections_; std::set<std::string> connections_;
base::flat_map<std::string, int> updates_;
}; };
class NetworkMetadataStoreTest : public ::testing::Test { class NetworkMetadataStoreTest : public ::testing::Test {
...@@ -154,6 +170,7 @@ TEST_F(NetworkMetadataStoreTest, ConfigurationUpdated) { ...@@ -154,6 +170,7 @@ TEST_F(NetworkMetadataStoreTest, ConfigurationUpdated) {
metadata_store()->SetIsConfiguredBySync(kGuid); metadata_store()->SetIsConfiguredBySync(kGuid);
ASSERT_FALSE(metadata_store()->GetLastConnectedTimestamp(kGuid).is_zero()); ASSERT_FALSE(metadata_store()->GetLastConnectedTimestamp(kGuid).is_zero());
ASSERT_TRUE(metadata_store()->GetIsConfiguredBySync(kGuid)); ASSERT_TRUE(metadata_store()->GetIsConfiguredBySync(kGuid));
ASSERT_EQ(0, metadata_observer()->GetNumberOfUpdates(kGuid));
base::DictionaryValue properties; base::DictionaryValue properties;
properties.SetKey(shill::kSecurityProperty, base::Value(shill::kSecurityPsk)); properties.SetKey(shill::kSecurityProperty, base::Value(shill::kSecurityPsk));
...@@ -165,6 +182,7 @@ TEST_F(NetworkMetadataStoreTest, ConfigurationUpdated) { ...@@ -165,6 +182,7 @@ TEST_F(NetworkMetadataStoreTest, ConfigurationUpdated) {
ASSERT_TRUE(metadata_store()->GetLastConnectedTimestamp(kGuid).is_zero()); ASSERT_TRUE(metadata_store()->GetLastConnectedTimestamp(kGuid).is_zero());
ASSERT_FALSE(metadata_store()->GetIsConfiguredBySync(kGuid)); ASSERT_FALSE(metadata_store()->GetIsConfiguredBySync(kGuid));
ASSERT_EQ(1, metadata_observer()->GetNumberOfUpdates(kGuid));
} }
TEST_F(NetworkMetadataStoreTest, ConfigurationRemoved) { TEST_F(NetworkMetadataStoreTest, ConfigurationRemoved) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment