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

Side by Side 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: 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/extensions/networking_private_event_router.h" 5 #include "chrome/browser/chromeos/extensions/networking_private_event_router.h"
6 6
7 #include "base/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/chromeos/extensions/networking_private_api.h" 9 #include "chrome/browser/chromeos/extensions/networking_private_api.h"
10 #include "chrome/browser/extensions/event_names.h" 10 #include "chrome/browser/extensions/event_names.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 NetworkingPrivateEventRouter::NetworkingPrivateEventRouter(Profile* profile) 59 NetworkingPrivateEventRouter::NetworkingPrivateEventRouter(Profile* profile)
60 : profile_(profile), listening_(false) { 60 : profile_(profile), listening_(false) {
61 // Register with the event router so we know when renderers are listening to 61 // Register with the event router so we know when renderers are listening to
62 // our events. We first check and see if there *is* an event router, because 62 // our events. We first check and see if there *is* an event router, because
63 // some unit tests try to create all profile services, but don't initialize 63 // some unit tests try to create all profile services, but don't initialize
64 // the event router first. 64 // the event router first.
65 extensions::EventRouter* event_router = 65 extensions::EventRouter* event_router =
66 ExtensionSystem::Get(profile_)->event_router(); 66 ExtensionSystem::Get(profile_)->event_router();
67 if (event_router) { 67 if (event_router) {
68 event_router->RegisterObserver( 68 event_router->RegisterObserver(
69 this, extensions::event_names::kOnNetworkChanged); 69 this, extensions::event_names::kOnNetworksChanged);
70 event_router->RegisterObserver(
71 this, extensions::event_names::kOnNetworkListChanged);
70 StartOrStopListeningForNetworkChanges(); 72 StartOrStopListeningForNetworkChanges();
71 } 73 }
72 } 74 }
73 75
74 NetworkingPrivateEventRouter::~NetworkingPrivateEventRouter() { 76 NetworkingPrivateEventRouter::~NetworkingPrivateEventRouter() {
75 } 77 }
76 78
77 void NetworkingPrivateEventRouter::Shutdown() { 79 void NetworkingPrivateEventRouter::Shutdown() {
78 // Unregister with the event router. We first check and see if there *is* an 80 // Unregister with the event router. We first check and see if there *is* an
79 // event router, because some unit tests try to shutdown all profile services, 81 // event router, because some unit tests try to shutdown all profile services,
(...skipping 15 matching lines...) Expand all
95 } 97 }
96 98
97 void NetworkingPrivateEventRouter::OnListenerRemoved( 99 void NetworkingPrivateEventRouter::OnListenerRemoved(
98 const extensions::EventListenerInfo& details) { 100 const extensions::EventListenerInfo& details) {
99 // Stop listening to events from the network state handler if there are no 101 // Stop listening to events from the network state handler if there are no
100 // more listeners. 102 // more listeners.
101 StartOrStopListeningForNetworkChanges(); 103 StartOrStopListeningForNetworkChanges();
102 } 104 }
103 105
104 void NetworkingPrivateEventRouter::StartOrStopListeningForNetworkChanges() { 106 void NetworkingPrivateEventRouter::StartOrStopListeningForNetworkChanges() {
105 bool should_listen = ExtensionSystem::Get(profile_)->event_router()-> 107 bool should_listen = (ExtensionSystem::Get(profile_)->event_router()->
106 HasEventListener(extensions::event_names::kOnNetworkChanged); 108 HasEventListener(extensions::event_names::kOnNetworksChanged) ||
109 ExtensionSystem::Get(profile_)->event_router()->
110 HasEventListener(extensions::event_names::kOnNetworkListChanged));
107 111
108 if (should_listen) { 112 if (should_listen) {
109 if (!listening_) 113 if (!listening_)
110 NetworkStateHandler::Get()->AddObserver(this); 114 NetworkStateHandler::Get()->AddObserver(this);
111 } else { 115 } else {
112 if (listening_) 116 if (listening_)
113 NetworkStateHandler::Get()->RemoveObserver(this); 117 NetworkStateHandler::Get()->RemoveObserver(this);
114 } 118 }
115 listening_ = should_listen; 119 listening_ = should_listen;
116 } 120 }
117 121
118 void NetworkingPrivateEventRouter::NetworkListChanged() { 122 void NetworkingPrivateEventRouter::NetworkListChanged() {
119 NetworkStateList networks; 123 NetworkStateList networks;
120 NetworkStateHandler::Get()->GetNetworkList(&networks); 124 NetworkStateHandler::Get()->GetNetworkList(&networks);
121 std::vector<linked_ptr<api::NetworkProperties> > changes; 125 if (!ExtensionSystem::Get(profile_)->event_router()->
126 HasEventListener(extensions::event_names::kOnNetworkListChanged)) {
127 return;
128 }
129
130 std::vector<std::string> changes;
131 std::string change_str;
122 for (NetworkStateList::const_iterator iter = networks.begin(); 132 for (NetworkStateList::const_iterator iter = networks.begin();
123 iter != networks.end(); ++iter) { 133 iter != networks.end(); ++iter) {
124 api::NetworkProperties* network_properties = new api::NetworkProperties; 134 // TODO(gspencer): Currently the "GUID" is actually the service path. Fix
125 network_properties->additional_properties.SetString( 135 // this to be the real GUID once we're using the
stevenjb 2013/02/12 17:19:16 nit: s/using the/using/
Greg Spencer (Chromium) 2013/02/12 17:34:56 Done.
126 onc::network_config::kName, (*iter)->name()); 136 // ManagedNetworkConfigurationManager.
127 network_properties->additional_properties.SetString( 137 changes.push_back((*iter)->path());
128 onc::network_config::kGUID, (*iter)->path()); 138 change_str += (*iter)->path() + " ";
129 network_properties->additional_properties.SetString(
130 onc::network_config::kType,
131 GetConnectionType((*iter)->type()));
132 network_properties->additional_properties.SetString(
133 onc::network_config::kConnectionState,
134 GetConnectionState(*iter));
135 changes.push_back(make_linked_ptr(network_properties));
136 } 139 }
137 140
138 scoped_ptr<base::ListValue> args(api::OnNetworkChanged::Create(changes)); 141 scoped_ptr<base::ListValue> args(api::OnNetworksChanged::Create(changes));
139 scoped_ptr<extensions::Event> extension_event(new extensions::Event( 142 scoped_ptr<extensions::Event> extension_event(new extensions::Event(
140 extensions::event_names::kOnNetworkChanged, args.Pass())); 143 extensions::event_names::kOnNetworkListChanged, args.Pass()));
141 ExtensionSystem::Get(profile_)->event_router()->BroadcastEvent( 144 ExtensionSystem::Get(profile_)->event_router()->BroadcastEvent(
142 extension_event.Pass()); 145 extension_event.Pass());
143 } 146 }
147
148 void NetworkingPrivateEventRouter::NetworkPropertiesUpdated(
149 const NetworkState* network) {
150 if (!ExtensionSystem::Get(profile_)->event_router()->
151 HasEventListener(extensions::event_names::kOnNetworksChanged)) {
152 return;
153 }
154
155 std::vector<std::string> changes;
156 changes.push_back(network->path());
157 scoped_ptr<base::ListValue> args(api::OnNetworkListChanged::Create(changes));
158 scoped_ptr<extensions::Event> extension_event(new extensions::Event(
159 extensions::event_names::kOnNetworksChanged, args.Pass()));
160 ExtensionSystem::Get(profile_)->event_router()->BroadcastEvent(
161 extension_event.Pass());
162 }
144 163
145 } // namespace chromeos 164 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698