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

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: Use using chromeos:: to avoid lengthy namespace prefixes. 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 using wifi::WiFiService;
16
17 namespace chrome {
18
19 NetworkingPrivateHandler::NetworkingPrivateHandler()
20 : wifi_service_(WiFiService::CreateService()) {
21 wifi_service_->SetNetworksChangedObserver(
22 base::Bind(&NetworkingPrivateHandler::OnNetworksChangedEvent,
23 base::Unretained(this)));
24 wifi_service_->SetNetworkListChangedObserver(
25 base::Bind(&NetworkingPrivateHandler::OnNetworkListChangedEvent,
26 base::Unretained(this)));
27 }
28
29 NetworkingPrivateHandler::~NetworkingPrivateHandler() {}
30
31 bool NetworkingPrivateHandler::OnMessageReceived(const IPC::Message& message) {
32 bool handled = true;
33 IPC_BEGIN_MESSAGE_MAP(NetworkingPrivateHandler, message)
34 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_UseWiFiServiceMock_ForTest,
35 OnUseWiFiServiceMockForTest)
36 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_GetProperties, OnGetPropertiesStart)
37 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_SetProperties, OnSetPropertiesStart)
38 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_StartConnect, OnStartConnectStart)
39 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_StartDisconnect,
40 OnStartDisconnectStart)
41 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_GetVisibleNetworks,
42 OnGetVisibleNetworks)
43 IPC_MESSAGE_HANDLER(NetworkingPrivateMsg_RequestNetworkScan,
44 OnRequestNetworkScan)
45 IPC_MESSAGE_UNHANDLED(handled = false)
46 IPC_END_MESSAGE_MAP()
47 return handled;
48 }
49
50 void NetworkingPrivateHandler::OnUseWiFiServiceMockForTest(
51 const base::DictionaryValue& parameters) {
52 wifi_service_.reset(WiFiService::CreateServiceMock());
53 wifi_service_->SetNetworksChangedObserver(
54 base::Bind(&NetworkingPrivateHandler::OnNetworksChangedEvent,
55 base::Unretained(this)));
56 wifi_service_->SetNetworkListChangedObserver(
57 base::Bind(&NetworkingPrivateHandler::OnNetworkListChangedEvent,
58 base::Unretained(this)));
59 }
60
61 void NetworkingPrivateHandler::OnApiError(
62 int message_id,
63 const std::string& error_name,
64 scoped_ptr<base::DictionaryValue> error_data) {
65 Send(new NetworkingPrivateMsg_API_Error(message_id, error_name, *error_data));
66 }
67
68 void NetworkingPrivateHandler::OnGetPropertiesStart(
69 int message_id,
70 const std::string& network_guid) {
71 wifi_service_->GetProperties(
72 network_guid,
73 base::Bind(&NetworkingPrivateHandler::OnGetPropertiesSucceeded,
74 base::Unretained(this),
75 message_id),
76 base::Bind(&NetworkingPrivateHandler::OnApiError,
77 base::Unretained(this),
78 message_id));
79 }
80
81 void NetworkingPrivateHandler::OnGetPropertiesSucceeded(
82 int message_id,
83 const std::string& network_guid,
84 const WiFiService::NetworkProperties& properties) {
85 scoped_ptr<DictionaryValue> properties_value(properties.ToValue(false));
86 Send(new NetworkingPrivateMsg_GetProperties_Succeeded(
87 message_id, network_guid, *properties_value));
88 }
89
90 void NetworkingPrivateHandler::OnSetPropertiesStart(
91 int message_id,
92 const std::string& network_guid,
93 const base::DictionaryValue& properties) {
94 wifi_service_->SetProperties(
95 network_guid,
96 properties,
97 base::Bind(&NetworkingPrivateHandler::OnSetPropertiesSucceeded,
98 base::Unretained(this),
99 message_id),
100 base::Bind(&NetworkingPrivateHandler::OnApiError,
101 base::Unretained(this),
102 message_id));
103 }
104
105 void NetworkingPrivateHandler::OnSetPropertiesSucceeded(
106 int message_id,
107 const std::string& network_guid) {
108 Send(new NetworkingPrivateMsg_SetProperties_Succeeded(message_id,
109 network_guid));
110 }
111
112 void NetworkingPrivateHandler::OnStartConnectStart(
113 int message_id,
114 const std::string& network_guid) {
115 wifi_service_->StartConnect(
116 network_guid,
117 base::Bind(&NetworkingPrivateHandler::OnStartConnectSucceeded,
118 base::Unretained(this),
119 message_id),
120 base::Bind(&NetworkingPrivateHandler::OnApiError,
121 base::Unretained(this),
122 message_id));
123 }
124
125 void NetworkingPrivateHandler::OnStartConnectSucceeded(
126 int message_id,
127 const std::string& network_guid) {
128 Send(new NetworkingPrivateMsg_StartConnect_Succeeded(message_id,
129 network_guid));
130 }
131
132 void NetworkingPrivateHandler::OnStartDisconnectStart(
133 int message_id,
134 const std::string& network_guid) {
135 wifi_service_->StartDisconnect(
136 network_guid,
137 base::Bind(&NetworkingPrivateHandler::OnStartDisconnectSucceeded,
138 base::Unretained(this),
139 message_id),
140 base::Bind(&NetworkingPrivateHandler::OnApiError,
141 base::Unretained(this),
142 message_id));
143 }
144
145 void NetworkingPrivateHandler::OnStartDisconnectSucceeded(
146 int message_id,
147 const std::string& network_guid) {
148 Send(new NetworkingPrivateMsg_StartDisconnect_Succeeded(message_id,
149 network_guid));
150 }
151
152 void NetworkingPrivateHandler::OnRequestNetworkScan() {
153 wifi_service_->GetVisibleNetworks(
cbentzel 2013/10/16 12:51:36 Why does this call GetVisibleNetworks followed by
154 base::Bind(&NetworkingPrivateHandler::OnNetworkScanSucceeded,
155 base::Unretained(this)),
156 base::Bind(
157 &NetworkingPrivateHandler::OnApiError, base::Unretained(this), 0));
158 wifi_service_->RequestNetworkScan();
159 }
160
161 void NetworkingPrivateHandler::OnNetworkScanSucceeded(
162 const WiFiService::NetworkList& network_list) {
163 std::vector<std::string> list;
164 for (WiFiService::NetworkList::const_iterator it = network_list.begin();
165 it != network_list.end();
166 ++it) {
167 list.push_back(it->guid);
168 }
169
170 Send(new NetworkingPrivateMsg_NetworkListChanged_Event(list));
171 }
172
173 void NetworkingPrivateHandler::OnGetVisibleNetworks(int message_id) {
174 wifi_service_->GetVisibleNetworks(
175 base::Bind(&NetworkingPrivateHandler::OnGetVisibleNetworksSucceeded,
176 base::Unretained(this),
177 message_id),
178 base::Bind(&NetworkingPrivateHandler::OnApiError,
179 base::Unretained(this),
180 message_id));
181 }
182
183 void NetworkingPrivateHandler::OnGetVisibleNetworksSucceeded(
184 int message_id,
185 const WiFiService::NetworkList& network_list) {
186 scoped_ptr<ListValue> visible_networks(new ListValue());
187 for (WiFiService::NetworkList::const_iterator it = network_list.begin();
188 it != network_list.end();
189 ++it) {
190 scoped_ptr<DictionaryValue> network(it->ToValue(true));
191 visible_networks->Append(network.release());
192 }
193 Send(new NetworkingPrivateMsg_GetVisibleNetworksSucceeded(message_id,
194 *visible_networks));
195 }
196
197 // static
198 bool NetworkingPrivateHandler::Send(IPC::Message* message) {
199 return content::UtilityThread::Get()->Send(message);
200 }
201
202 void NetworkingPrivateHandler::OnNetworkListChangedEvent(
203 const WiFiService::NetworkGuidList& network_guid_list) {
204 std::vector<std::string> networks(network_guid_list.begin(),
205 network_guid_list.end());
206 Send(new NetworkingPrivateMsg_NetworkListChanged_Event(networks));
207 }
208
209 void NetworkingPrivateHandler::OnNetworksChangedEvent(
210 const WiFiService::NetworkGuidList& network_guid_list) {
211 std::vector<std::string> networks(network_guid_list.begin(),
212 network_guid_list.end());
213 Send(new NetworkingPrivateMsg_NetworksChanged_Event(networks));
214 }
215
216 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698