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

Side by Side Diff: chrome/utility/networking_private_handler.cc

Issue 22295002: Base infrastructure for Networking Private API on Windows and Mac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync up to r225168 Created 7 years, 2 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/utility/networking_private_handler.h"
6
7 #include "base/bind.h"
8 #include "base/json/json_reader.h"
9 #include "base/memory/ref_counted.h"
10 #include "base/message_loop/message_loop_proxy.h"
11 #include "base/threading/thread.h"
12 #include "chrome/common/networking_private_messages.h"
13 #include "content/public/utility/utility_thread.h"
14
15 namespace chrome {
16
17 NetworkingPrivateHandler::NetworkingPrivateHandler()
18 : wifi_service_(WiFiService::CreateService()) {
19 wifi_service_->SetNetworksChangedObserver(
20 base::Bind(&NetworkingPrivateHandler::OnNetworksChangedEvent,
21 base::Unretained(this)));
22 wifi_service_->SetNetworkListChangedObserver(
23 base::Bind(&NetworkingPrivateHandler::OnNetworkListChangedEvent,
24 base::Unretained(this)));
25 }
26
27 NetworkingPrivateHandler::~NetworkingPrivateHandler() {}
28
29 bool NetworkingPrivateHandler::OnMessageReceived(const IPC::Message& message) {
30 bool handled = true;
31 IPC_BEGIN_MESSAGE_MAP(NetworkingPrivateHandler, message)
32 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_UseWiFiServiceMock,
33 OnUseWiFiServiceMock)
34 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_GetProperties, OnGetPropertiesStart)
35 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_SetProperties, OnSetPropertiesStart)
36 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_StartConnect, OnStartConnectStart)
37 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_StartDisconnect,
38 OnStartDisconnectStart)
39 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_GetVisibleNetworks,
40 OnGetVisibleNetworks)
41 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_RequestNetworkScan,
42 OnRequestNetworkScan)
43 IPC_MESSAGE_UNHANDLED(handled = false)
44 IPC_END_MESSAGE_MAP()
45 return handled;
46 }
47
48 void NetworkingPrivateHandler::OnUseWiFiServiceMock(
49 const base::DictionaryValue& parameters) {
50 wifi_service_.reset(WiFiService::CreateServiceMock());
51 wifi_service_->SetNetworksChangedObserver(
52 base::Bind(&NetworkingPrivateHandler::OnNetworksChangedEvent,
53 base::Unretained(this)));
54 wifi_service_->SetNetworkListChangedObserver(
55 base::Bind(&NetworkingPrivateHandler::OnNetworkListChangedEvent,
56 base::Unretained(this)));
57 }
58
59 void NetworkingPrivateHandler::OnApiError(
60 int message_id,
61 const std::string& error_name,
62 scoped_ptr<base::DictionaryValue> error_data) {
63 Send(new NetworkingPrivateMsg_API_Error(message_id, error_name, *error_data));
64 }
65
66 void NetworkingPrivateHandler::OnGetPropertiesStart(
67 int message_id,
68 const std::string& network_guid) {
69 wifi_service_->GetProperties(
70 network_guid,
71 base::Bind(&NetworkingPrivateHandler::OnGetPropertiesSucceeded,
72 base::Unretained(this),
73 message_id),
74 base::Bind(&NetworkingPrivateHandler::OnApiError,
75 base::Unretained(this),
76 message_id));
77 }
78
79 void NetworkingPrivateHandler::OnGetPropertiesSucceeded(
80 int message_id,
81 const std::string& network_guid,
82 const WiFiService::NetworkProperties& properties) {
83 scoped_ptr<DictionaryValue> properties_value(properties.ToValue(false));
84 Send(new NetworkingPrivateMsg_GetProperties_Succeeded(
85 message_id, network_guid, *properties_value));
86 }
87
88 void NetworkingPrivateHandler::OnSetPropertiesStart(
89 int message_id,
90 const std::string& network_guid,
91 const base::DictionaryValue& properties) {
92 wifi_service_->SetProperties(
93 network_guid,
94 properties,
95 base::Bind(&NetworkingPrivateHandler::OnSetPropertiesSucceeded,
96 base::Unretained(this),
97 message_id),
98 base::Bind(&NetworkingPrivateHandler::OnApiError,
99 base::Unretained(this),
100 message_id));
101 }
102
103 void NetworkingPrivateHandler::OnSetPropertiesSucceeded(
104 int message_id,
105 const std::string& network_guid) {
106 Send(new NetworkingPrivateMsg_SetProperties_Succeeded(message_id,
107 network_guid));
108 }
109
110 void NetworkingPrivateHandler::OnStartConnectStart(
111 int message_id,
112 const std::string& network_guid) {
113 wifi_service_->StartConnect(
114 network_guid,
115 base::Bind(&NetworkingPrivateHandler::OnStartConnectSucceeded,
116 base::Unretained(this),
117 message_id),
118 base::Bind(&NetworkingPrivateHandler::OnApiError,
119 base::Unretained(this),
120 message_id));
121 }
122
123 void NetworkingPrivateHandler::OnStartConnectSucceeded(
124 int message_id,
125 const std::string& network_guid) {
126 Send(new NetworkingPrivateMsg_StartConnect_Succeeded(message_id,
127 network_guid));
128 }
129
130 void NetworkingPrivateHandler::OnStartDisconnectStart(
131 int message_id,
132 const std::string& network_guid) {
133 wifi_service_->StartDisconnect(
134 network_guid,
135 base::Bind(&NetworkingPrivateHandler::OnStartDisconnectSucceeded,
136 base::Unretained(this),
137 message_id),
138 base::Bind(&NetworkingPrivateHandler::OnApiError,
139 base::Unretained(this),
140 message_id));
141 }
142
143 void NetworkingPrivateHandler::OnStartDisconnectSucceeded(
144 int message_id,
145 const std::string& network_guid) {
146 Send(new NetworkingPrivateMsg_StartDisconnect_Succeeded(message_id,
147 network_guid));
148 }
149
150 void NetworkingPrivateHandler::OnRequestNetworkScan() {
151 wifi_service_->GetVisibleNetworks(
152 base::Bind(&NetworkingPrivateHandler::OnNetworkScanSucceeded,
153 base::Unretained(this)),
154 base::Bind(
155 &NetworkingPrivateHandler::OnApiError, base::Unretained(this), 0));
156 wifi_service_->RequestNetworkScan();
157 }
158
159 void NetworkingPrivateHandler::OnNetworkScanSucceeded(
160 const WiFiService::NetworkList& network_list) {
161 std::vector<std::string> list;
162 for (WiFiService::NetworkList::const_iterator it = network_list.begin();
163 it != network_list.end();
164 ++it) {
165 list.push_back(it->guid);
166 }
167
168 Send(new NetworkingPrivateMsg_NetworkListChanged_Event(list));
169 }
170
171 void NetworkingPrivateHandler::OnGetVisibleNetworks(int message_id) {
172 wifi_service_->GetVisibleNetworks(
173 base::Bind(&NetworkingPrivateHandler::OnGetVisibleNetworksSucceeded,
174 base::Unretained(this),
175 message_id),
176 base::Bind(&NetworkingPrivateHandler::OnApiError,
177 base::Unretained(this),
178 message_id));
179 }
180
181 void NetworkingPrivateHandler::OnGetVisibleNetworksSucceeded(
182 int message_id,
183 const WiFiService::NetworkList& network_list) {
184 scoped_ptr<ListValue> visible_networks(new ListValue());
185 for (WiFiService::NetworkList::const_iterator it = network_list.begin();
186 it != network_list.end();
187 ++it) {
188 scoped_ptr<DictionaryValue> network(it->ToValue(true));
189 visible_networks->Append(network.release());
190 }
191 Send(new NetworkingPrivateMsg_GetVisibleNetworksSucceeded(message_id,
192 *visible_networks));
193 }
194
195 // static
196 bool NetworkingPrivateHandler::Send(IPC::Message* message) {
197 return content::UtilityThread::Get()->Send(message);
198 }
199
200 void NetworkingPrivateHandler::OnNetworkListChangedEvent(
201 const WiFiService::NetworkGuidList& network_guid_list) {
202 std::vector<std::string> networks(network_guid_list.begin(),
203 network_guid_list.end());
204 Send(new NetworkingPrivateMsg_NetworkListChanged_Event(networks));
205 }
206
207 void NetworkingPrivateHandler::OnNetworksChangedEvent(
208 const WiFiService::NetworkGuidList& network_guid_list) {
209 std::vector<std::string> networks(network_guid_list.begin(),
210 network_guid_list.end());
211 Send(new NetworkingPrivateMsg_NetworksChanged_Event(networks));
212 }
stevenjb 2013/09/25 19:09:15 WS
mef 2013/10/08 21:46:26 Done.
213 } // namespace chrome
214
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698