| 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
|
|
|