Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: chrome/browser/chromeos/extensions/networking_private_event_router.cc

Issue 12220113: Next phase for chrome.networkingPrivate interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review changes Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/extensions/networking_private_event_router.cc
diff --git a/chrome/browser/chromeos/extensions/networking_private_event_router.cc b/chrome/browser/chromeos/extensions/networking_private_event_router.cc
index 2f884f8615a230b71e41dea21243aa4b9b5ae75e..8858e5acf5c5ee716b98f63b3a3bc1fd6080641e 100644
--- a/chrome/browser/chromeos/extensions/networking_private_event_router.cc
+++ b/chrome/browser/chromeos/extensions/networking_private_event_router.cc
@@ -21,6 +21,9 @@
#include "chromeos/network/onc/onc_translator.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
+using extensions::event_names::kOnNetworkListChanged;
+using extensions::event_names::kOnNetworksChanged;
+using extensions::EventRouter;
using extensions::ExtensionSystem;
namespace api = extensions::api::networking_private;
@@ -62,11 +65,12 @@ NetworkingPrivateEventRouter::NetworkingPrivateEventRouter(Profile* profile)
// our events. We first check and see if there *is* an event router, because
// some unit tests try to create all profile services, but don't initialize
// the event router first.
- extensions::EventRouter* event_router =
- ExtensionSystem::Get(profile_)->event_router();
+ EventRouter* event_router = ExtensionSystem::Get(profile_)->event_router();
if (event_router) {
event_router->RegisterObserver(
- this, extensions::event_names::kOnNetworkChanged);
+ this, extensions::event_names::kOnNetworksChanged);
+ event_router->RegisterObserver(
+ this, extensions::event_names::kOnNetworkListChanged);
StartOrStopListeningForNetworkChanges();
}
}
@@ -78,8 +82,7 @@ void NetworkingPrivateEventRouter::Shutdown() {
// Unregister with the event router. We first check and see if there *is* an
// event router, because some unit tests try to shutdown all profile services,
// but didn't initialize the event router first.
- extensions::EventRouter* event_router =
- ExtensionSystem::Get(profile_)->event_router();
+ EventRouter* event_router = ExtensionSystem::Get(profile_)->event_router();
if (event_router)
event_router->UnregisterObserver(this);
@@ -102,8 +105,9 @@ void NetworkingPrivateEventRouter::OnListenerRemoved(
}
void NetworkingPrivateEventRouter::StartOrStopListeningForNetworkChanges() {
- bool should_listen = ExtensionSystem::Get(profile_)->event_router()->
- HasEventListener(extensions::event_names::kOnNetworkChanged);
+ EventRouter* event_router = ExtensionSystem::Get(profile_)->event_router();
+ bool should_listen = event_router->HasEventListener(kOnNetworksChanged) ||
+ event_router->HasEventListener(kOnNetworkListChanged);
if (should_listen) {
if (!listening_)
@@ -116,30 +120,38 @@ void NetworkingPrivateEventRouter::StartOrStopListeningForNetworkChanges() {
}
void NetworkingPrivateEventRouter::NetworkListChanged() {
+ EventRouter* event_router = ExtensionSystem::Get(profile_)->event_router();
NetworkStateList networks;
NetworkStateHandler::Get()->GetNetworkList(&networks);
- std::vector<linked_ptr<api::NetworkProperties> > changes;
+ if (!event_router->HasEventListener(kOnNetworkListChanged))
+ return;
+
+ std::vector<std::string> changes;
for (NetworkStateList::const_iterator iter = networks.begin();
iter != networks.end(); ++iter) {
- api::NetworkProperties* network_properties = new api::NetworkProperties;
- network_properties->additional_properties.SetString(
- onc::network_config::kName, (*iter)->name());
- network_properties->additional_properties.SetString(
- onc::network_config::kGUID, (*iter)->path());
- network_properties->additional_properties.SetString(
- onc::network_config::kType,
- GetConnectionType((*iter)->type()));
- network_properties->additional_properties.SetString(
- onc::network_config::kConnectionState,
- GetConnectionState(*iter));
- changes.push_back(make_linked_ptr(network_properties));
+ // TODO(gspencer): Currently the "GUID" is actually the service path. Fix
+ // this to be the real GUID once we're using
+ // ManagedNetworkConfigurationManager.
+ changes.push_back((*iter)->path());
}
- scoped_ptr<base::ListValue> args(api::OnNetworkChanged::Create(changes));
+ scoped_ptr<base::ListValue> args(api::OnNetworkListChanged::Create(changes));
scoped_ptr<extensions::Event> extension_event(new extensions::Event(
- extensions::event_names::kOnNetworkChanged, args.Pass()));
- ExtensionSystem::Get(profile_)->event_router()->BroadcastEvent(
- extension_event.Pass());
+ kOnNetworkListChanged, args.Pass()));
+ event_router->BroadcastEvent(extension_event.Pass());
+}
+
+void NetworkingPrivateEventRouter::NetworkPropertiesUpdated(
+ const NetworkState* network) {
+ EventRouter* event_router = ExtensionSystem::Get(profile_)->event_router();
+ if (!event_router->HasEventListener(kOnNetworksChanged))
+ return;
+
+ scoped_ptr<base::ListValue> args(api::OnNetworksChanged::Create(
+ std::vector<std::string>(1, network->path())));
+ scoped_ptr<extensions::Event> extension_event(
+ new extensions::Event(kOnNetworksChanged, args.Pass()));
+ event_router->BroadcastEvent(extension_event.Pass());
}
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698