1 // Copyright 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.
5 #include "chrome/browser/extensions/api/networking_private/networking_private_api.h"
8 #include "base/bind_helpers.h"
9 #include "base/callback.h"
10 #include "base/command_line.h"
11 #include "base/json/json_reader.h"
12 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/extensions/api/networking_private/networking_private_service_client.h"
14 #include "chrome/browser/extensions/api/networking_private/networking_private_service_client_factory.h"
15 #include "chrome/browser/extensions/extension_function_registry.h"
16 #include "chrome/common/chrome_switches.h"
17 #include "chrome/common/extensions/api/networking_private.h"
18 #include "components/onc/onc_constants.h"
19 #include "extensions/browser/event_router.h"
20 #include "extensions/browser/extension_system.h"
22 using extensions::NetworkingPrivateServiceClient;
23 using extensions::NetworkingPrivateServiceClientFactory;
24 namespace api = extensions::api::networking_private;
26 ////////////////////////////////////////////////////////////////////////////////
27 // NetworkingPrivateGetPropertiesFunction
29 NetworkingPrivateGetPropertiesFunction::
30 ~NetworkingPrivateGetPropertiesFunction() {
33 bool NetworkingPrivateGetPropertiesFunction::RunImpl() {
34 scoped_ptr<api::GetProperties::Params> params =
35 api::GetProperties::Params::Create(*args_);
36 EXTENSION_FUNCTION_VALIDATE(params);
38 NetworkingPrivateServiceClient* service_client =
39 NetworkingPrivateServiceClientFactory::GetForProfile(GetProfile());
41 service_client->GetProperties(
43 base::Bind(&NetworkingPrivateGetPropertiesFunction::GetPropertiesSuccess,
45 base::Bind(&NetworkingPrivateGetPropertiesFunction::GetPropertiesFailed,
50 void NetworkingPrivateGetPropertiesFunction::GetPropertiesSuccess(
51 const std::string& network_guid,
52 const base::DictionaryValue& dictionary) {
53 SetResult(dictionary.DeepCopy());
57 void NetworkingPrivateGetPropertiesFunction::GetPropertiesFailed(
58 const std::string& error_name,
59 scoped_ptr<base::DictionaryValue> error_data) {
64 ////////////////////////////////////////////////////////////////////////////////
65 // NetworkingPrivateGetManagedPropertiesFunction
67 NetworkingPrivateGetManagedPropertiesFunction::
68 ~NetworkingPrivateGetManagedPropertiesFunction() {
71 bool NetworkingPrivateGetManagedPropertiesFunction::RunImpl() {
72 scoped_ptr<api::GetManagedProperties::Params> params =
73 api::GetManagedProperties::Params::Create(*args_);
74 EXTENSION_FUNCTION_VALIDATE(params);
75 NetworkingPrivateServiceClient* service_client =
76 NetworkingPrivateServiceClientFactory::GetForProfile(GetProfile());
78 service_client->GetManagedProperties(
80 base::Bind(&NetworkingPrivateGetManagedPropertiesFunction::Success,
82 base::Bind(&NetworkingPrivateGetManagedPropertiesFunction::Failure,
87 void NetworkingPrivateGetManagedPropertiesFunction::Success(
88 const std::string& network_guid,
89 const base::DictionaryValue& dictionary) {
90 scoped_ptr<base::DictionaryValue> network_properties(dictionary.DeepCopy());
91 network_properties->SetStringWithoutPathExpansion(onc::network_config::kGUID,
93 SetResult(network_properties.release());
97 void NetworkingPrivateGetManagedPropertiesFunction::Failure(
98 const std::string& error_name,
99 scoped_ptr<base::DictionaryValue> error_data) {
104 ////////////////////////////////////////////////////////////////////////////////
105 // NetworkingPrivateGetStateFunction
107 NetworkingPrivateGetStateFunction::
108 ~NetworkingPrivateGetStateFunction() {
111 bool NetworkingPrivateGetStateFunction::RunImpl() {
112 scoped_ptr<api::GetState::Params> params =
113 api::GetState::Params::Create(*args_);
114 EXTENSION_FUNCTION_VALIDATE(params);
115 NetworkingPrivateServiceClient* service_client =
116 NetworkingPrivateServiceClientFactory::GetForProfile(GetProfile());
118 service_client->GetState(
119 params->network_guid,
120 base::Bind(&NetworkingPrivateGetStateFunction::Success,
122 base::Bind(&NetworkingPrivateGetStateFunction::Failure,
127 void NetworkingPrivateGetStateFunction::Success(
128 const std::string& network_guid,
129 const base::DictionaryValue& dictionary) {
130 SetResult(dictionary.DeepCopy());
134 void NetworkingPrivateGetStateFunction::Failure(
135 const std::string& error_name,
136 scoped_ptr<base::DictionaryValue> error_data) {
141 ////////////////////////////////////////////////////////////////////////////////
142 // NetworkingPrivateSetPropertiesFunction
144 NetworkingPrivateSetPropertiesFunction::
145 ~NetworkingPrivateSetPropertiesFunction() {
148 bool NetworkingPrivateSetPropertiesFunction::RunImpl() {
149 scoped_ptr<api::SetProperties::Params> params =
150 api::SetProperties::Params::Create(*args_);
151 EXTENSION_FUNCTION_VALIDATE(params);
152 scoped_ptr<base::DictionaryValue> properties_dict(
153 params->properties.ToValue());
155 NetworkingPrivateServiceClient* service_client =
156 NetworkingPrivateServiceClientFactory::GetForProfile(GetProfile());
158 service_client->SetProperties(
159 params->network_guid,
161 base::Bind(&NetworkingPrivateSetPropertiesFunction::ResultCallback, this),
162 base::Bind(&NetworkingPrivateSetPropertiesFunction::ErrorCallback, this));
166 void NetworkingPrivateSetPropertiesFunction::ResultCallback() {
170 void NetworkingPrivateSetPropertiesFunction::ErrorCallback(
171 const std::string& error_name,
172 const scoped_ptr<base::DictionaryValue> error_data) {
177 ////////////////////////////////////////////////////////////////////////////////
178 // NetworkingPrivateCreateNetworkFunction
180 NetworkingPrivateCreateNetworkFunction::
181 ~NetworkingPrivateCreateNetworkFunction() {
184 bool NetworkingPrivateCreateNetworkFunction::RunImpl() {
185 scoped_ptr<api::CreateNetwork::Params> params =
186 api::CreateNetwork::Params::Create(*args_);
187 EXTENSION_FUNCTION_VALIDATE(params);
188 scoped_ptr<base::DictionaryValue> properties_dict(
189 params->properties.ToValue());
191 NetworkingPrivateServiceClient* service_client =
192 NetworkingPrivateServiceClientFactory::GetForProfile(GetProfile());
194 service_client->CreateNetwork(
197 base::Bind(&NetworkingPrivateCreateNetworkFunction::ResultCallback, this),
198 base::Bind(&NetworkingPrivateCreateNetworkFunction::ErrorCallback, this));
202 void NetworkingPrivateCreateNetworkFunction::ErrorCallback(
203 const std::string& error_name,
204 const scoped_ptr<base::DictionaryValue> error_data) {
209 void NetworkingPrivateCreateNetworkFunction::ResultCallback(
210 const std::string& guid) {
211 results_ = api::CreateNetwork::Results::Create(guid);
215 ////////////////////////////////////////////////////////////////////////////////
216 // NetworkingPrivateGetVisibleNetworksFunction
218 NetworkingPrivateGetVisibleNetworksFunction::
219 ~NetworkingPrivateGetVisibleNetworksFunction() {
222 bool NetworkingPrivateGetVisibleNetworksFunction::RunImpl() {
223 scoped_ptr<api::GetVisibleNetworks::Params> params =
224 api::GetVisibleNetworks::Params::Create(*args_);
225 EXTENSION_FUNCTION_VALIDATE(params);
227 NetworkingPrivateServiceClient* service_client =
228 NetworkingPrivateServiceClientFactory::GetForProfile(GetProfile());
230 service_client->GetVisibleNetworks(
231 api::GetVisibleNetworks::Params::ToString(params->type),
232 base::Bind(&NetworkingPrivateGetVisibleNetworksFunction::ResultCallback,
238 void NetworkingPrivateGetVisibleNetworksFunction::ResultCallback(
239 const base::ListValue& network_list) {
240 SetResult(network_list.DeepCopy());
244 ////////////////////////////////////////////////////////////////////////////////
245 // NetworkingPrivateGetEnabledNetworkTypesFunction
247 NetworkingPrivateGetEnabledNetworkTypesFunction::
248 ~NetworkingPrivateGetEnabledNetworkTypesFunction() {
251 bool NetworkingPrivateGetEnabledNetworkTypesFunction::RunImpl() {
252 base::ListValue* network_list = new base::ListValue;
253 network_list->Append(new base::StringValue(onc::network_type::kWiFi));
254 SetResult(network_list);
258 ////////////////////////////////////////////////////////////////////////////////
259 // NetworkingPrivateEnableNetworkTypeFunction
261 NetworkingPrivateEnableNetworkTypeFunction::
262 ~NetworkingPrivateEnableNetworkTypeFunction() {
265 bool NetworkingPrivateEnableNetworkTypeFunction::RunImpl() {
266 scoped_ptr<api::EnableNetworkType::Params> params =
267 api::EnableNetworkType::Params::Create(*args_);
268 EXTENSION_FUNCTION_VALIDATE(params);
272 ////////////////////////////////////////////////////////////////////////////////
273 // NetworkingPrivateDisableNetworkTypeFunction
275 NetworkingPrivateDisableNetworkTypeFunction::
276 ~NetworkingPrivateDisableNetworkTypeFunction() {
279 bool NetworkingPrivateDisableNetworkTypeFunction::RunImpl() {
280 scoped_ptr<api::DisableNetworkType::Params> params =
281 api::DisableNetworkType::Params::Create(*args_);
282 EXTENSION_FUNCTION_VALIDATE(params);
286 ////////////////////////////////////////////////////////////////////////////////
287 // NetworkingPrivateRequestNetworkScanFunction
289 NetworkingPrivateRequestNetworkScanFunction::
290 ~NetworkingPrivateRequestNetworkScanFunction() {
293 bool NetworkingPrivateRequestNetworkScanFunction::RunImpl() {
294 NetworkingPrivateServiceClient* service_client =
295 NetworkingPrivateServiceClientFactory::GetForProfile(GetProfile());
296 service_client->RequestNetworkScan();
300 ////////////////////////////////////////////////////////////////////////////////
301 // NetworkingPrivateStartConnectFunction
303 NetworkingPrivateStartConnectFunction::
304 ~NetworkingPrivateStartConnectFunction() {
307 bool NetworkingPrivateStartConnectFunction::RunImpl() {
308 scoped_ptr<api::StartConnect::Params> params =
309 api::StartConnect::Params::Create(*args_);
310 EXTENSION_FUNCTION_VALIDATE(params);
311 NetworkingPrivateServiceClient* service_client =
312 NetworkingPrivateServiceClientFactory::GetForProfile(GetProfile());
313 service_client->StartConnect(
314 params->network_guid,
315 base::Bind(&NetworkingPrivateStartConnectFunction::ConnectionStartSuccess,
317 base::Bind(&NetworkingPrivateStartConnectFunction::ConnectionStartFailed,
322 void NetworkingPrivateStartConnectFunction::ConnectionStartSuccess() {
326 void NetworkingPrivateStartConnectFunction::ConnectionStartFailed(
327 const std::string& error_name,
328 const scoped_ptr<base::DictionaryValue> error_data) {
333 ////////////////////////////////////////////////////////////////////////////////
334 // NetworkingPrivateStartDisconnectFunction
336 NetworkingPrivateStartDisconnectFunction::
337 ~NetworkingPrivateStartDisconnectFunction() {
340 bool NetworkingPrivateStartDisconnectFunction::RunImpl() {
341 scoped_ptr<api::StartDisconnect::Params> params =
342 api::StartDisconnect::Params::Create(*args_);
343 EXTENSION_FUNCTION_VALIDATE(params);
344 NetworkingPrivateServiceClient* service_client =
345 NetworkingPrivateServiceClientFactory::GetForProfile(GetProfile());
346 service_client->StartDisconnect(
347 params->network_guid,
349 &NetworkingPrivateStartDisconnectFunction::DisconnectionStartSuccess,
352 &NetworkingPrivateStartDisconnectFunction::DisconnectionStartFailed,
357 void NetworkingPrivateStartDisconnectFunction::DisconnectionStartSuccess() {
361 void NetworkingPrivateStartDisconnectFunction::DisconnectionStartFailed(
362 const std::string& error_name,
363 const scoped_ptr<base::DictionaryValue> error_data) {
368 ////////////////////////////////////////////////////////////////////////////////
369 // NetworkingPrivateVerifyDestinationFunction
371 NetworkingPrivateVerifyDestinationFunction::
372 ~NetworkingPrivateVerifyDestinationFunction() {}
374 bool NetworkingPrivateVerifyDestinationFunction::RunImpl() {
375 scoped_ptr<api::VerifyDestination::Params> params =
376 api::VerifyDestination::Params::Create(*args_);
377 EXTENSION_FUNCTION_VALIDATE(params);
378 NetworkingPrivateServiceClient* service_client =
379 NetworkingPrivateServiceClientFactory::GetForProfile(GetProfile());
380 service_client->VerifyDestination(
383 &NetworkingPrivateVerifyDestinationFunction::ResultCallback,
386 &NetworkingPrivateVerifyDestinationFunction::ErrorCallback,
391 void NetworkingPrivateVerifyDestinationFunction::ResultCallback(bool result) {
392 SetResult(new base::FundamentalValue(result));
396 void NetworkingPrivateVerifyDestinationFunction::ErrorCallback(
397 const std::string& error_name, const std::string& error) {
402 ////////////////////////////////////////////////////////////////////////////////
403 // NetworkingPrivateVerifyAndEncryptCredentialsFunction
405 NetworkingPrivateVerifyAndEncryptCredentialsFunction::
406 ~NetworkingPrivateVerifyAndEncryptCredentialsFunction() {
409 bool NetworkingPrivateVerifyAndEncryptCredentialsFunction::RunImpl() {
410 scoped_ptr<api::VerifyAndEncryptCredentials::Params> params =
411 api::VerifyAndEncryptCredentials::Params::Create(*args_);
412 EXTENSION_FUNCTION_VALIDATE(params);
413 SetResult(new base::StringValue("encrypted_credentials"));
418 ////////////////////////////////////////////////////////////////////////////////
419 // NetworkingPrivateVerifyAndEncryptDataFunction
421 NetworkingPrivateVerifyAndEncryptDataFunction::
422 ~NetworkingPrivateVerifyAndEncryptDataFunction() {
425 bool NetworkingPrivateVerifyAndEncryptDataFunction::RunImpl() {
426 scoped_ptr<api::VerifyAndEncryptData::Params> params =
427 api::VerifyAndEncryptData::Params::Create(*args_);
428 EXTENSION_FUNCTION_VALIDATE(params);
429 NetworkingPrivateServiceClient* service_client =
430 NetworkingPrivateServiceClientFactory::GetForProfile(GetProfile());
431 service_client->VerifyAndEncryptData(
434 &NetworkingPrivateVerifyAndEncryptDataFunction::ResultCallback,
437 &NetworkingPrivateVerifyAndEncryptDataFunction::ErrorCallback,
442 void NetworkingPrivateVerifyAndEncryptDataFunction::ResultCallback(
443 const std::string& result) {
444 SetResult(new base::StringValue(result));
448 void NetworkingPrivateVerifyAndEncryptDataFunction::ErrorCallback(
449 const std::string& error_name, const std::string& error) {
454 ////////////////////////////////////////////////////////////////////////////////
455 // NetworkingPrivateSetWifiTDLSEnabledStateFunction
457 NetworkingPrivateSetWifiTDLSEnabledStateFunction::
458 ~NetworkingPrivateSetWifiTDLSEnabledStateFunction() {
461 bool NetworkingPrivateSetWifiTDLSEnabledStateFunction::RunImpl() {
462 scoped_ptr<api::SetWifiTDLSEnabledState::Params> params =
463 api::SetWifiTDLSEnabledState::Params::Create(*args_);
464 EXTENSION_FUNCTION_VALIDATE(params);
465 SetError("not-implemented");
469 ////////////////////////////////////////////////////////////////////////////////
470 // NetworkingPrivateGetWifiTDLSStatusFunction
472 NetworkingPrivateGetWifiTDLSStatusFunction::
473 ~NetworkingPrivateGetWifiTDLSStatusFunction() {
476 bool NetworkingPrivateGetWifiTDLSStatusFunction::RunImpl() {
477 scoped_ptr<api::GetWifiTDLSStatus::Params> params =
478 api::GetWifiTDLSStatus::Params::Create(*args_);
479 EXTENSION_FUNCTION_VALIDATE(params);
480 SetError("not-implemented");