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

Side by Side Diff: chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc

Issue 544173013: Make network settings functions more closely match networkingPrivate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@issue_279351_internet_options_10c
Patch Set: Feedback Created 6 years, 3 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/ui/webui/options/chromeos/internet_options_handler.h" 5 #include "chrome/browser/ui/webui/options/chromeos/internet_options_handler.h"
6 6
7 #include <ctype.h> 7 #include <ctype.h>
8 8
9 #include <map> 9 #include <map>
10 #include <string> 10 #include <string>
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 #include "ui/gfx/image/image_skia.h" 59 #include "ui/gfx/image/image_skia.h"
60 60
61 namespace chromeos { 61 namespace chromeos {
62 namespace options { 62 namespace options {
63 63
64 namespace { 64 namespace {
65 65
66 // Keys for the network description dictionary passed to the web ui. Make sure 66 // Keys for the network description dictionary passed to the web ui. Make sure
67 // to keep the strings in sync with what the JavaScript side uses. 67 // to keep the strings in sync with what the JavaScript side uses.
68 const char kNetworkInfoKeyIconURL[] = "iconURL"; 68 const char kNetworkInfoKeyIconURL[] = "iconURL";
69 const char kNetworkInfoKeyServicePath[] = "servicePath";
70 const char kNetworkInfoKeyPolicyManaged[] = "policyManaged"; 69 const char kNetworkInfoKeyPolicyManaged[] = "policyManaged";
71 70
72 // These are types of name server selections from the web ui. 71 // These are types of name server selections from the web ui.
73 const char kNameServerTypeAutomatic[] = "automatic"; 72 const char kNameServerTypeAutomatic[] = "automatic";
74 const char kNameServerTypeGoogle[] = "google"; 73 const char kNameServerTypeGoogle[] = "google";
75 74
76 // Google public name servers (DNS). 75 // Google public name servers (DNS).
77 const char kGoogleNameServers[] = "8.8.4.4,8.8.8.8"; 76 const char kGoogleNameServers[] = "8.8.4.4,8.8.8.8";
78 77
79 // Functions we call in JavaScript. 78 // Functions we call in JavaScript.
80 const char kRefreshNetworkDataFunction[] = 79 const char kRefreshNetworkDataFunction[] =
81 "options.network.NetworkList.refreshNetworkData"; 80 "options.network.NetworkList.refreshNetworkData";
82 const char kSetDefaultNetworkIconsFunction[] = 81 const char kSetDefaultNetworkIconsFunction[] =
83 "options.network.NetworkList.setDefaultNetworkIcons"; 82 "options.network.NetworkList.setDefaultNetworkIcons";
83 const char kSendNetworkDetailsFunction[] =
84 "options.internet.DetailsInternetPage.sendNetworkDetails";
84 const char kShowDetailedInfoFunction[] = 85 const char kShowDetailedInfoFunction[] =
85 "options.internet.DetailsInternetPage.showDetailedInfo"; 86 "options.internet.DetailsInternetPage.showDetailedInfo";
86 const char kUpdateConnectionDataFunction[] = 87 const char kUpdateConnectionDataFunction[] =
87 "options.internet.DetailsInternetPage.updateConnectionData"; 88 "options.internet.DetailsInternetPage.updateConnectionData";
88 const char kUpdateCarrierFunction[] = 89 const char kUpdateCarrierFunction[] =
89 "options.internet.DetailsInternetPage.updateCarrier"; 90 "options.internet.DetailsInternetPage.updateCarrier";
90 91
91 // These are used to register message handlers with JavaScript. 92 // These are used to register message handlers with JavaScript.
92 const char kChangePinMessage[] = "changePin";
93 const char kDisableCellularMessage[] = "disableCellular";
94 const char kDisableWifiMessage[] = "disableWifi";
95 const char kDisableWimaxMessage[] = "disableWimax";
96 const char kEnableCellularMessage[] = "enableCellular";
97 const char kEnableWifiMessage[] = "enableWifi";
98 const char kEnableWimaxMessage[] = "enableWimax";
99 const char kNetworkCommandMessage[] = "networkCommand"; 93 const char kNetworkCommandMessage[] = "networkCommand";
100 const char kRefreshNetworksMessage[] = "refreshNetworks";
101 const char kSetApnMessage[] = "setApn"; 94 const char kSetApnMessage[] = "setApn";
102 const char kSetAutoConnectMessage[] = "setAutoConnect"; 95 const char kSetAutoConnectMessage[] = "setAutoConnect";
103 const char kSetCarrierMessage[] = "setCarrier"; 96 const char kSetCarrierMessage[] = "setCarrier";
104 const char kSetIPConfigMessage[] = "setIPConfig"; 97 const char kSetIPConfigMessage[] = "setIPConfig";
105 const char kSetPreferNetworkMessage[] = "setPreferNetwork"; 98 const char kSetPreferNetworkMessage[] = "setPreferNetwork";
106 const char kSetServerHostname[] = "setServerHostname"; 99 const char kSetServerHostname[] = "setServerHostname";
107 const char kSetSimCardLockMessage[] = "setSimCardLock";
108 const char kShowMorePlanInfoMessage[] = "showMorePlanInfo"; 100 const char kShowMorePlanInfoMessage[] = "showMorePlanInfo";
101 const char kSimOperationMessage[] = "simOperation";
102
103 // TODO(stevenjb): Replace these with the matching networkingPrivate methods.
104 // crbug.com/279351.
105 const char kDisableNetworkTypeMessage[] = "disableNetworkType";
106 const char kEnableNetworkTypeMessage[] = "enableNetworkType";
107 const char kGetManagedPropertiesMessage[] = "getManagedProperties";
108 const char kRequestNetworkScanMessage[] = "requestNetworkScan";
109 const char kStartConnectMessage[] = "startConnect";
110 const char kStartDisconnectMessage[] = "startDisconnect";
109 111
110 // These are strings used to communicate with JavaScript. 112 // These are strings used to communicate with JavaScript.
111 const char kTagActivate[] = "activate"; 113 const char kTagActivate[] = "activate";
112 const char kTagAddConnection[] = "add"; 114 const char kTagAddConnection[] = "add";
113 const char kTagCarrierSelectFlag[] = "showCarrierSelect"; 115 const char kTagCarrierSelectFlag[] = "showCarrierSelect";
114 const char kTagCellularAvailable[] = "cellularAvailable"; 116 const char kTagCellularAvailable[] = "cellularAvailable";
115 const char kTagCellularEnabled[] = "cellularEnabled"; 117 const char kTagCellularEnabled[] = "cellularEnabled";
118 const char kTagCellularSimAbsent[] = "cellularSimAbsent";
119 const char kTagCellularSimLockType[] = "cellularSimLockType";
116 const char kTagCellularSupportsScan[] = "cellularSupportsScan"; 120 const char kTagCellularSupportsScan[] = "cellularSupportsScan";
117 const char kTagConfigure[] = "configure"; 121 const char kTagConfigure[] = "configure";
118 const char kTagConnect[] = "connect";
119 const char kTagDeviceConnected[] = "deviceConnected";
120 const char kTagDisconnect[] = "disconnect";
121 const char kTagErrorMessage[] = "errorMessage";
122 const char kTagForget[] = "forget"; 122 const char kTagForget[] = "forget";
123 const char kTagOptions[] = "options";
124 const char kTagRememberedList[] = "rememberedList"; 123 const char kTagRememberedList[] = "rememberedList";
124 const char kTagShowDetails[] = "showDetails";
125 const char kTagShowViewAccountButton[] = "showViewAccountButton"; 125 const char kTagShowViewAccountButton[] = "showViewAccountButton";
126 const char kTagSimOpChangePin[] = "changePin";
127 const char kTagSimOpConfigure[] = "configure";
128 const char kTagSimOpSetLocked[] = "setLocked";
129 const char kTagSimOpSetUnlocked[] = "setUnlocked";
130 const char kTagSimOpUnlock[] = "unlock";
126 const char kTagTrue[] = "true"; 131 const char kTagTrue[] = "true";
127 const char kTagVpnList[] = "vpnList"; 132 const char kTagVpnList[] = "vpnList";
128 const char kTagWifiAvailable[] = "wifiAvailable"; 133 const char kTagWifiAvailable[] = "wifiAvailable";
129 const char kTagWifiEnabled[] = "wifiEnabled"; 134 const char kTagWifiEnabled[] = "wifiEnabled";
130 const char kTagWimaxAvailable[] = "wimaxAvailable"; 135 const char kTagWimaxAvailable[] = "wimaxAvailable";
131 const char kTagWimaxEnabled[] = "wimaxEnabled"; 136 const char kTagWimaxEnabled[] = "wimaxEnabled";
132 const char kTagWiredList[] = "wiredList"; 137 const char kTagWiredList[] = "wiredList";
133 const char kTagWirelessList[] = "wirelessList"; 138 const char kTagWirelessList[] = "wirelessList";
134 139
140 // Pseudo-ONC chrome specific properties appended to the ONC dictionary.
141 const char kTagErrorMessage[] = "errorMessage";
142 const char kNetworkInfoKeyServicePath[] = "servicePath";
143 const char kNetworkInfoKeyGUID[] = "GUID";
144
135 const int kPreferredPriority = 1; 145 const int kPreferredPriority = 1;
136 146
137 void ShillError(const std::string& function, 147 void ShillError(const std::string& function,
138 const std::string& error_name, 148 const std::string& error_name,
139 scoped_ptr<base::DictionaryValue> error_data) { 149 scoped_ptr<base::DictionaryValue> error_data) {
140 // UpdateConnectionData may send requests for stale services; ignore 150 // UpdateConnectionData may send requests for stale services; ignore
141 // these errors. 151 // these errors.
142 if (function == "UpdateConnectionData" && 152 if (function == "UpdateConnectionData" &&
143 error_name == network_handler::kDBusFailedError) 153 error_name == network_handler::kDBusFailedError)
144 return; 154 return;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 } 236 }
227 237
228 return true; 238 return true;
229 } 239 }
230 240
231 scoped_ptr<base::DictionaryValue> PopulateConnectionDetails( 241 scoped_ptr<base::DictionaryValue> PopulateConnectionDetails(
232 const NetworkState* network, 242 const NetworkState* network,
233 const base::DictionaryValue& onc_properties) { 243 const base::DictionaryValue& onc_properties) {
234 scoped_ptr<base::DictionaryValue> dictionary(onc_properties.DeepCopy()); 244 scoped_ptr<base::DictionaryValue> dictionary(onc_properties.DeepCopy());
235 245
246 // Append Service Path for now.
236 dictionary->SetString(kNetworkInfoKeyServicePath, network->path()); 247 dictionary->SetString(kNetworkInfoKeyServicePath, network->path());
248 // Append a Chrome specific translated error message.
237 dictionary->SetString( 249 dictionary->SetString(
238 kTagErrorMessage, 250 kTagErrorMessage,
239 ash::network_connect::ErrorString(network->error(), network->path())); 251 ash::network_connect::ErrorString(network->error(), network->path()));
240 252
241 const std::string& type = network->type();
242
243 const NetworkState* connected_network =
244 NetworkHandler::Get()->network_state_handler()->ConnectedNetworkByType(
245 NetworkTypePattern::Primitive(type));
246 dictionary->SetBoolean(kTagDeviceConnected, connected_network != NULL);
247
248 if (type == shill::kTypeCellular) {
249 dictionary->SetBoolean(
250 kTagCarrierSelectFlag,
251 CommandLine::ForCurrentProcess()
252 ->HasSwitch(chromeos::switches::kEnableCarrierSwitching));
253 dictionary->SetBoolean(kTagShowViewAccountButton,
254 ShowViewAccountButton(network));
255 }
256 return dictionary.Pass(); 253 return dictionary.Pass();
257 } 254 }
258 255
259 // Helper methods for SetIPConfigProperties 256 // Helper methods for SetIPConfigProperties
260 bool AppendPropertyKeyIfPresent(const std::string& key, 257 bool AppendPropertyKeyIfPresent(const std::string& key,
261 const base::DictionaryValue& old_properties, 258 const base::DictionaryValue& old_properties,
262 std::vector<std::string>* property_keys) { 259 std::vector<std::string>* property_keys) {
263 if (old_properties.HasKey(key)) { 260 if (old_properties.HasKey(key)) {
264 property_keys->push_back(key); 261 property_keys->push_back(key);
265 return true; 262 return true;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 dictionary); 344 dictionary);
348 NetworkHandler::Get()->network_state_handler()->RequestScan(); 345 NetworkHandler::Get()->network_state_handler()->RequestScan();
349 RefreshNetworkData(); 346 RefreshNetworkData();
350 } 347 }
351 348
352 void InternetOptionsHandler::RegisterMessages() { 349 void InternetOptionsHandler::RegisterMessages() {
353 // Setup handlers specific to this panel. 350 // Setup handlers specific to this panel.
354 web_ui()->RegisterMessageCallback(kNetworkCommandMessage, 351 web_ui()->RegisterMessageCallback(kNetworkCommandMessage,
355 base::Bind(&InternetOptionsHandler::NetworkCommandCallback, 352 base::Bind(&InternetOptionsHandler::NetworkCommandCallback,
356 base::Unretained(this))); 353 base::Unretained(this)));
357 web_ui()->RegisterMessageCallback(kRefreshNetworksMessage,
358 base::Bind(&InternetOptionsHandler::RefreshNetworksCallback,
359 base::Unretained(this)));
360 web_ui()->RegisterMessageCallback(kSetPreferNetworkMessage, 354 web_ui()->RegisterMessageCallback(kSetPreferNetworkMessage,
361 base::Bind(&InternetOptionsHandler::SetPreferNetworkCallback, 355 base::Bind(&InternetOptionsHandler::SetPreferNetworkCallback,
362 base::Unretained(this))); 356 base::Unretained(this)));
363 web_ui()->RegisterMessageCallback(kSetAutoConnectMessage, 357 web_ui()->RegisterMessageCallback(kSetAutoConnectMessage,
364 base::Bind(&InternetOptionsHandler::SetAutoConnectCallback, 358 base::Bind(&InternetOptionsHandler::SetAutoConnectCallback,
365 base::Unretained(this))); 359 base::Unretained(this)));
366 web_ui()->RegisterMessageCallback(kSetIPConfigMessage, 360 web_ui()->RegisterMessageCallback(kSetIPConfigMessage,
367 base::Bind(&InternetOptionsHandler::SetIPConfigCallback, 361 base::Bind(&InternetOptionsHandler::SetIPConfigCallback,
368 base::Unretained(this))); 362 base::Unretained(this)));
369 web_ui()->RegisterMessageCallback(kEnableWifiMessage,
370 base::Bind(&InternetOptionsHandler::EnableWifiCallback,
371 base::Unretained(this)));
372 web_ui()->RegisterMessageCallback(kDisableWifiMessage,
373 base::Bind(&InternetOptionsHandler::DisableWifiCallback,
374 base::Unretained(this)));
375 web_ui()->RegisterMessageCallback(kEnableCellularMessage,
376 base::Bind(&InternetOptionsHandler::EnableCellularCallback,
377 base::Unretained(this)));
378 web_ui()->RegisterMessageCallback(kDisableCellularMessage,
379 base::Bind(&InternetOptionsHandler::DisableCellularCallback,
380 base::Unretained(this)));
381 web_ui()->RegisterMessageCallback(kEnableWimaxMessage,
382 base::Bind(&InternetOptionsHandler::EnableWimaxCallback,
383 base::Unretained(this)));
384 web_ui()->RegisterMessageCallback(kDisableWimaxMessage,
385 base::Bind(&InternetOptionsHandler::DisableWimaxCallback,
386 base::Unretained(this)));
387 web_ui()->RegisterMessageCallback(kShowMorePlanInfoMessage, 363 web_ui()->RegisterMessageCallback(kShowMorePlanInfoMessage,
388 base::Bind(&InternetOptionsHandler::ShowMorePlanInfoCallback, 364 base::Bind(&InternetOptionsHandler::ShowMorePlanInfoCallback,
389 base::Unretained(this))); 365 base::Unretained(this)));
390 web_ui()->RegisterMessageCallback(kSetApnMessage, 366 web_ui()->RegisterMessageCallback(kSetApnMessage,
391 base::Bind(&InternetOptionsHandler::SetApnCallback, 367 base::Bind(&InternetOptionsHandler::SetApnCallback,
392 base::Unretained(this))); 368 base::Unretained(this)));
393 web_ui()->RegisterMessageCallback(kSetCarrierMessage, 369 web_ui()->RegisterMessageCallback(kSetCarrierMessage,
394 base::Bind(&InternetOptionsHandler::SetCarrierCallback, 370 base::Bind(&InternetOptionsHandler::SetCarrierCallback,
395 base::Unretained(this))); 371 base::Unretained(this)));
396 web_ui()->RegisterMessageCallback(kSetSimCardLockMessage, 372 web_ui()->RegisterMessageCallback(kSimOperationMessage,
397 base::Bind(&InternetOptionsHandler::SetSimCardLockCallback, 373 base::Bind(&InternetOptionsHandler::SimOperationCallback,
398 base::Unretained(this)));
399 web_ui()->RegisterMessageCallback(kChangePinMessage,
400 base::Bind(&InternetOptionsHandler::ChangePinCallback,
401 base::Unretained(this))); 374 base::Unretained(this)));
402 web_ui()->RegisterMessageCallback(kSetServerHostname, 375 web_ui()->RegisterMessageCallback(kSetServerHostname,
403 base::Bind(&InternetOptionsHandler::SetServerHostnameCallback, 376 base::Bind(&InternetOptionsHandler::SetServerHostnameCallback,
404 base::Unretained(this))); 377 base::Unretained(this)));
405 }
406 378
407 void InternetOptionsHandler::EnableWifiCallback(const base::ListValue* args) { 379 // networkingPrivate methods
408 NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled( 380 web_ui()->RegisterMessageCallback(kDisableNetworkTypeMessage,
409 NetworkTypePattern::WiFi(), true, 381 base::Bind(&InternetOptionsHandler::DisableNetworkTypeCallback,
410 base::Bind(&ShillError, "EnableWifiCallback")); 382 base::Unretained(this)));
411 } 383 web_ui()->RegisterMessageCallback(kEnableNetworkTypeMessage,
412 384 base::Bind(&InternetOptionsHandler::EnableNetworkTypeCallback,
413 void InternetOptionsHandler::DisableWifiCallback(const base::ListValue* args) { 385 base::Unretained(this)));
414 NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled( 386 web_ui()->RegisterMessageCallback(kGetManagedPropertiesMessage,
415 NetworkTypePattern::WiFi(), false, 387 base::Bind(&InternetOptionsHandler::GetManagedPropertiesCallback,
416 base::Bind(&ShillError, "DisableWifiCallback")); 388 base::Unretained(this)));
417 } 389 web_ui()->RegisterMessageCallback(kRequestNetworkScanMessage,
418 390 base::Bind(&InternetOptionsHandler::RequestNetworkScanCallback,
419 void InternetOptionsHandler::EnableCellularCallback( 391 base::Unretained(this)));
420 const base::ListValue* args) { 392 web_ui()->RegisterMessageCallback(kStartConnectMessage,
421 NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler(); 393 base::Bind(&InternetOptionsHandler::StartConnectCallback,
422 const DeviceState* device = 394 base::Unretained(this)));
423 handler->GetDeviceStateByType(NetworkTypePattern::Cellular()); 395 web_ui()->RegisterMessageCallback(kStartDisconnectMessage,
424 if (!device) { 396 base::Bind(&InternetOptionsHandler::StartDisconnectCallback,
425 LOG(ERROR) << "Mobile device not found."; 397 base::Unretained(this)));
426 return;
427 }
428 if (!device->sim_lock_type().empty()) {
429 SimDialogDelegate::ShowDialog(GetNativeWindow(),
430 SimDialogDelegate::SIM_DIALOG_UNLOCK);
431 return;
432 }
433 if (!handler->IsTechnologyEnabled(NetworkTypePattern::Cellular())) {
434 handler->SetTechnologyEnabled(
435 NetworkTypePattern::Cellular(), true,
436 base::Bind(&ShillError, "EnableCellularCallback"));
437 return;
438 }
439 if (device->IsSimAbsent()) {
440 mobile_config_ui::DisplayConfigDialog();
441 return;
442 }
443 LOG(ERROR) << "EnableCellularCallback called for enabled mobile device";
444 }
445
446 void InternetOptionsHandler::DisableCellularCallback(
447 const base::ListValue* args) {
448 NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled(
449 NetworkTypePattern::Mobile(), false,
450 base::Bind(&ShillError, "DisableCellularCallback"));
451 }
452
453 void InternetOptionsHandler::EnableWimaxCallback(const base::ListValue* args) {
454 NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled(
455 NetworkTypePattern::Wimax(), true,
456 base::Bind(&ShillError, "EnableWimaxCallback"));
457 }
458
459 void InternetOptionsHandler::DisableWimaxCallback(const base::ListValue* args) {
460 NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled(
461 NetworkTypePattern::Wimax(), false,
462 base::Bind(&ShillError, "DisableWimaxCallback"));
463 } 398 }
464 399
465 void InternetOptionsHandler::ShowMorePlanInfoCallback( 400 void InternetOptionsHandler::ShowMorePlanInfoCallback(
466 const base::ListValue* args) { 401 const base::ListValue* args) {
467 if (!web_ui()) 402 if (!web_ui())
468 return; 403 return;
469 std::string service_path; 404 std::string service_path;
470 if (args->GetSize() != 1 || !args->GetString(0, &service_path)) { 405 if (args->GetSize() != 1 || !args->GetString(0, &service_path)) {
471 NOTREACHED(); 406 NOTREACHED();
472 return; 407 return;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 base::Bind(&ShillError, "SetApnProperties")); 468 base::Bind(&ShillError, "SetApnProperties"));
534 } 469 }
535 470
536 void InternetOptionsHandler::CarrierStatusCallback() { 471 void InternetOptionsHandler::CarrierStatusCallback() {
537 NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler(); 472 NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler();
538 const DeviceState* device = 473 const DeviceState* device =
539 handler->GetDeviceStateByType(NetworkTypePattern::Cellular()); 474 handler->GetDeviceStateByType(NetworkTypePattern::Cellular());
540 if (device && (device->carrier() == shill::kCarrierSprint)) { 475 if (device && (device->carrier() == shill::kCarrierSprint)) {
541 const NetworkState* network = 476 const NetworkState* network =
542 handler->FirstNetworkByType(NetworkTypePattern::Cellular()); 477 handler->FirstNetworkByType(NetworkTypePattern::Cellular());
543 if (network) { 478 if (network && network->path() == details_path_) {
544 ash::network_connect::ActivateCellular(network->path()); 479 ash::network_connect::ActivateCellular(network->path());
545 UpdateConnectionData(network->path()); 480 UpdateConnectionData(network->path());
546 } 481 }
547 } 482 }
548 UpdateCarrier(); 483 UpdateCarrier();
549 } 484 }
550 485
551 void InternetOptionsHandler::SetCarrierCallback(const base::ListValue* args) { 486 void InternetOptionsHandler::SetCarrierCallback(const base::ListValue* args) {
552 std::string service_path; 487 std::string service_path;
553 std::string carrier; 488 std::string carrier;
(...skipping 10 matching lines...) Expand all
564 return; 499 return;
565 } 500 }
566 NetworkHandler::Get()->network_device_handler()->SetCarrier( 501 NetworkHandler::Get()->network_device_handler()->SetCarrier(
567 device->path(), 502 device->path(),
568 carrier, 503 carrier,
569 base::Bind(&InternetOptionsHandler::CarrierStatusCallback, 504 base::Bind(&InternetOptionsHandler::CarrierStatusCallback,
570 weak_factory_.GetWeakPtr()), 505 weak_factory_.GetWeakPtr()),
571 base::Bind(&ShillError, "SetCarrierCallback")); 506 base::Bind(&ShillError, "SetCarrierCallback"));
572 } 507 }
573 508
574 void InternetOptionsHandler::SetSimCardLockCallback( 509 void InternetOptionsHandler::SimOperationCallback(const base::ListValue* args) {
575 const base::ListValue* args) { 510 std::string operation;
576 bool require_pin_new_value; 511 if (args->GetSize() != 1 || !args->GetString(0, &operation)) {
577 if (!args->GetBoolean(0, &require_pin_new_value)) {
578 NOTREACHED(); 512 NOTREACHED();
579 return; 513 return;
580 } 514 }
515 if (operation == kTagSimOpConfigure) {
516 mobile_config_ui::DisplayConfigDialog();
517 return;
518 }
581 // 1. Bring up SIM unlock dialog, pass new RequirePin setting in URL. 519 // 1. Bring up SIM unlock dialog, pass new RequirePin setting in URL.
582 // 2. Dialog will ask for current PIN in any case. 520 // 2. Dialog will ask for current PIN in any case.
583 // 3. If card is locked it will first call PIN unlock operation 521 // 3. If card is locked it will first call PIN unlock operation
584 // 4. Then it will call Set RequirePin, passing the same PIN. 522 // 4. Then it will call Set RequirePin, passing the same PIN.
585 // 5. The dialog may change device properties, in which case 523 // 5. The dialog may change device properties, in which case
586 // DevicePropertiesUpdated() will get called which will update the UI. 524 // DevicePropertiesUpdated() will get called which will update the UI.
587 SimDialogDelegate::SimDialogMode mode; 525 SimDialogDelegate::SimDialogMode mode;
588 if (require_pin_new_value) 526 if (operation == kTagSimOpSetLocked) {
589 mode = SimDialogDelegate::SIM_DIALOG_SET_LOCK_ON; 527 mode = SimDialogDelegate::SIM_DIALOG_SET_LOCK_ON;
590 else 528 } else if (operation == kTagSimOpSetUnlocked) {
591 mode = SimDialogDelegate::SIM_DIALOG_SET_LOCK_OFF; 529 mode = SimDialogDelegate::SIM_DIALOG_SET_LOCK_OFF;
530 } else if (operation == kTagSimOpUnlock) {
531 mode = SimDialogDelegate::SIM_DIALOG_UNLOCK;
532 } else if (operation == kTagSimOpChangePin) {
533 mode = SimDialogDelegate::SIM_DIALOG_CHANGE_PIN;
534 } else {
535 NOTREACHED();
536 return;
537 }
592 SimDialogDelegate::ShowDialog(GetNativeWindow(), mode); 538 SimDialogDelegate::ShowDialog(GetNativeWindow(), mode);
593 } 539 }
594 540
595 void InternetOptionsHandler::ChangePinCallback(const base::ListValue* args) { 541 ////////////////////////////////////////////////////////////////////////////////
596 SimDialogDelegate::ShowDialog(GetNativeWindow(), 542 // networkingPrivate implementation methods. TODO(stevenjb): Replace these with
597 SimDialogDelegate::SIM_DIALOG_CHANGE_PIN); 543 // the matching networkingPrivate methods, crbug.com/279351.
armansito 2014/09/16 17:38:56 nit: I guess by replacing we mean that these metho
stevenjb 2014/09/16 18:27:33 Done.
544
545 void InternetOptionsHandler::DisableNetworkTypeCallback(
546 const base::ListValue* args) {
547 std::string type;
548 if (!args->GetString(0, &type)) {
549 NOTREACHED();
550 return;
551 }
552 NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled(
553 chromeos::onc::NetworkTypePatternFromOncType(type), false,
554 base::Bind(&ShillError, "DisableNetworkType"));
598 } 555 }
599 556
600 void InternetOptionsHandler::RefreshNetworksCallback( 557 void InternetOptionsHandler::EnableNetworkTypeCallback(
558 const base::ListValue* args) {
559 std::string type;
560 if (!args->GetString(0, &type)) {
561 NOTREACHED();
562 return;
563 }
564 NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled(
565 chromeos::onc::NetworkTypePatternFromOncType(type), true,
566 base::Bind(&ShillError, "EnableNetworkType"));
567 }
568
569 void InternetOptionsHandler::GetManagedPropertiesCallback(
570 const base::ListValue* args) {
571 std::string service_path;
572 if (!args->GetString(0, &service_path)) {
573 NOTREACHED();
574 return;
575 }
576 NetworkHandler::Get()->managed_network_configuration_handler()
577 ->GetManagedProperties(
578 LoginState::Get()->primary_user_hash(),
579 service_path,
580 base::Bind(
581 &InternetOptionsHandler::PopulateDictionaryDetailsCallback,
582 weak_factory_.GetWeakPtr()),
583 base::Bind(&ShillError, "GetManagedProperties"));
584 }
585
586 void InternetOptionsHandler::RequestNetworkScanCallback(
601 const base::ListValue* args) { 587 const base::ListValue* args) {
602 NetworkHandler::Get()->network_state_handler()->RequestScan(); 588 NetworkHandler::Get()->network_state_handler()->RequestScan();
603 } 589 }
604 590
591 void InternetOptionsHandler::StartConnectCallback(const base::ListValue* args) {
592 std::string service_path;
593 if (!args->GetString(0, &service_path)) {
594 NOTREACHED();
595 return;
596 }
597 ash::network_connect::ConnectToNetwork(service_path, GetNativeWindow());
598 }
599
600 void InternetOptionsHandler::StartDisconnectCallback(
601 const base::ListValue* args) {
602 std::string service_path;
603 if (!args->GetString(0, &service_path)) {
604 NOTREACHED();
605 return;
606 }
607 NetworkHandler::Get()->network_connection_handler()->DisconnectNetwork(
608 service_path,
609 base::Bind(&base::DoNothing),
610 base::Bind(&ShillError, "StartDisconnectCallback"));
611 }
612
613 ////////////////////////////////////////////////////////////////////////////////
614
605 std::string InternetOptionsHandler::GetIconDataUrl(int resource_id) const { 615 std::string InternetOptionsHandler::GetIconDataUrl(int resource_id) const {
606 gfx::ImageSkia* icon = 616 gfx::ImageSkia* icon =
607 ResourceBundle::GetSharedInstance().GetImageSkiaNamed(resource_id); 617 ResourceBundle::GetSharedInstance().GetImageSkiaNamed(resource_id);
608 gfx::ImageSkiaRep image_rep = icon->GetRepresentation( 618 gfx::ImageSkiaRep image_rep = icon->GetRepresentation(
609 web_ui()->GetDeviceScaleFactor()); 619 web_ui()->GetDeviceScaleFactor());
610 return webui::GetBitmapDataUrl(image_rep.sk_bitmap()); 620 return webui::GetBitmapDataUrl(image_rep.sk_bitmap());
611 } 621 }
612 622
613 void InternetOptionsHandler::RefreshNetworkData() { 623 void InternetOptionsHandler::RefreshNetworkData() {
614 base::DictionaryValue dictionary; 624 base::DictionaryValue dictionary;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 void InternetOptionsHandler::NetworkListChanged() { 662 void InternetOptionsHandler::NetworkListChanged() {
653 if (!web_ui()) 663 if (!web_ui())
654 return; 664 return;
655 RefreshNetworkData(); 665 RefreshNetworkData();
656 } 666 }
657 667
658 void InternetOptionsHandler::NetworkConnectionStateChanged( 668 void InternetOptionsHandler::NetworkConnectionStateChanged(
659 const NetworkState* network) { 669 const NetworkState* network) {
660 if (!web_ui()) 670 if (!web_ui())
661 return; 671 return;
662 // Update the connection data for the detailed view when the connection state 672 if (network->path() == details_path_)
663 // of any network changes. 673 UpdateConnectionData(network->path());
664 if (!details_path_.empty())
665 UpdateConnectionData(details_path_);
666 } 674 }
667 675
668 void InternetOptionsHandler::NetworkPropertiesUpdated( 676 void InternetOptionsHandler::NetworkPropertiesUpdated(
669 const NetworkState* network) { 677 const NetworkState* network) {
670 if (!web_ui()) 678 if (!web_ui())
671 return; 679 return;
672 RefreshNetworkData(); 680 RefreshNetworkData();
673 UpdateConnectionData(network->path()); 681 if (network->path() == details_path_)
682 UpdateConnectionData(network->path());
674 } 683 }
675 684
676 void InternetOptionsHandler::DevicePropertiesUpdated( 685 void InternetOptionsHandler::DevicePropertiesUpdated(
677 const DeviceState* device) { 686 const DeviceState* device) {
678 if (!web_ui()) 687 if (!web_ui())
679 return; 688 return;
680 if (device->type() != shill::kTypeCellular) 689 if (device->type() != shill::kTypeCellular)
681 return; 690 return;
682 const NetworkState* network = 691 const NetworkState* network =
683 NetworkHandler::Get()->network_state_handler()->FirstNetworkByType( 692 NetworkHandler::Get()->network_state_handler()->FirstNetworkByType(
684 NetworkTypePattern::Cellular()); 693 NetworkTypePattern::Cellular());
685 if (network) 694 if (network && network->path() == details_path_)
686 UpdateConnectionData(network->path()); // Update sim lock status. 695 UpdateConnectionData(network->path());
687 } 696 }
688 697
689 void InternetOptionsHandler::SetServerHostnameCallback( 698 void InternetOptionsHandler::SetServerHostnameCallback(
690 const base::ListValue* args) { 699 const base::ListValue* args) {
691 std::string service_path, server_hostname; 700 std::string service_path, server_hostname;
692 if (args->GetSize() < 2 || 701 if (args->GetSize() < 2 ||
693 !args->GetString(0, &service_path) || 702 !args->GetString(0, &service_path) ||
694 !args->GetString(1, &server_hostname)) { 703 !args->GetString(1, &server_hostname)) {
695 NOTREACHED(); 704 NOTREACHED();
696 return; 705 return;
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 } 841 }
833 842
834 void InternetOptionsHandler::PopulateDictionaryDetailsCallback( 843 void InternetOptionsHandler::PopulateDictionaryDetailsCallback(
835 const std::string& service_path, 844 const std::string& service_path,
836 const base::DictionaryValue& onc_properties) { 845 const base::DictionaryValue& onc_properties) {
837 const NetworkState* network = GetNetworkState(service_path); 846 const NetworkState* network = GetNetworkState(service_path);
838 if (!network) { 847 if (!network) {
839 LOG(ERROR) << "Network properties not found: " << service_path; 848 LOG(ERROR) << "Network properties not found: " << service_path;
840 return; 849 return;
841 } 850 }
842
843 details_path_ = service_path;
844
845 scoped_ptr<base::DictionaryValue> dictionary = 851 scoped_ptr<base::DictionaryValue> dictionary =
846 PopulateConnectionDetails(network, onc_properties); 852 PopulateConnectionDetails(network, onc_properties);
847 853
848 // Show details dialog 854 // Show details dialog
849 web_ui()->CallJavascriptFunction(kShowDetailedInfoFunction, *dictionary); 855 web_ui()->CallJavascriptFunction(kSendNetworkDetailsFunction, *dictionary);
850 } 856 }
851 857
852 gfx::NativeWindow InternetOptionsHandler::GetNativeWindow() const { 858 gfx::NativeWindow InternetOptionsHandler::GetNativeWindow() const {
853 return web_ui()->GetWebContents()->GetTopLevelNativeWindow(); 859 return web_ui()->GetWebContents()->GetTopLevelNativeWindow();
854 } 860 }
855 861
856 float InternetOptionsHandler::GetScaleFactor() const { 862 float InternetOptionsHandler::GetScaleFactor() const {
857 return web_ui()->GetDeviceScaleFactor(); 863 return web_ui()->GetDeviceScaleFactor();
858 } 864 }
859 865
(...skipping 21 matching lines...) Expand all
881 } 887 }
882 // Process commands that do not require an existing network. 888 // Process commands that do not require an existing network.
883 if (command == kTagAddConnection) { 889 if (command == kTagAddConnection) {
884 AddConnection(type); 890 AddConnection(type);
885 } else if (command == kTagForget) { 891 } else if (command == kTagForget) {
886 NetworkHandler::Get()->network_configuration_handler()-> 892 NetworkHandler::Get()->network_configuration_handler()->
887 RemoveConfiguration( 893 RemoveConfiguration(
888 service_path, 894 service_path,
889 base::Bind(&base::DoNothing), 895 base::Bind(&base::DoNothing),
890 base::Bind(&ShillError, "NetworkCommand: " + command)); 896 base::Bind(&ShillError, "NetworkCommand: " + command));
891 } else if (command == kTagOptions) { 897 } else if (command == kTagShowDetails) {
892 NetworkHandler::Get() 898 SendShowDetailedInfo(service_path);
893 ->managed_network_configuration_handler()
894 ->GetManagedProperties(
895 LoginState::Get()->primary_user_hash(),
896 service_path,
897 base::Bind(
898 &InternetOptionsHandler::PopulateDictionaryDetailsCallback,
899 weak_factory_.GetWeakPtr()),
900 base::Bind(&ShillError, "NetworkCommand: " + command));
901 } else if (command == kTagConnect) {
902 ash::network_connect::ConnectToNetwork(service_path, GetNativeWindow());
903 } else if (command == kTagDisconnect) {
904 NetworkHandler::Get()->network_connection_handler()->DisconnectNetwork(
905 service_path,
906 base::Bind(&base::DoNothing),
907 base::Bind(&ShillError, "NetworkCommand: " + command));
908 } else if (command == kTagConfigure) { 899 } else if (command == kTagConfigure) {
909 NetworkConfigView::Show(service_path, GetNativeWindow()); 900 NetworkConfigView::Show(service_path, GetNativeWindow());
910 } else if (command == kTagActivate && type == shill::kTypeCellular) { 901 } else if (command == kTagActivate && type == shill::kTypeCellular) {
911 ash::network_connect::ActivateCellular(service_path); 902 ash::network_connect::ActivateCellular(service_path);
912 // Activation may update network properties (e.g. ActivationState), so 903 // Activation may update network properties (e.g. ActivationState), so
913 // request them here in case they change. 904 // request them here in case they change.
914 UpdateConnectionData(service_path); 905 UpdateConnectionData(service_path);
915 } else { 906 } else {
916 VLOG(1) << "Unknown command: " << command; 907 LOG(ERROR) << "Unknown internet options command: " << command;
917 NOTREACHED(); 908 NOTREACHED();
918 } 909 }
919 } 910 }
920 911
921 void InternetOptionsHandler::AddConnection(const std::string& type) { 912 void InternetOptionsHandler::AddConnection(const std::string& type) {
922 if (type == shill::kTypeWifi) { 913 if (type == shill::kTypeWifi) {
923 NetworkConfigView::ShowForType(shill::kTypeWifi, GetNativeWindow()); 914 NetworkConfigView::ShowForType(shill::kTypeWifi, GetNativeWindow());
924 } else if (type == shill::kTypeVPN) { 915 } else if (type == shill::kTypeVPN) {
925 NetworkConfigView::ShowForType(shill::kTypeVPN, GetNativeWindow()); 916 NetworkConfigView::ShowForType(shill::kTypeVPN, GetNativeWindow());
926 } else if (type == shill::kTypeCellular) { 917 } else if (type == shill::kTypeCellular) {
927 ChooseMobileNetworkDialog::ShowDialog(GetNativeWindow()); 918 ChooseMobileNetworkDialog::ShowDialog(GetNativeWindow());
928 } else { 919 } else {
929 LOG(ERROR) << "Unsupported type for AddConnection"; 920 LOG(ERROR) << "Unsupported type for AddConnection";
930 } 921 }
931 } 922 }
932 923
924 void InternetOptionsHandler::SendShowDetailedInfo(
925 const std::string& service_path) {
926 details_path_ = service_path;
927
928 scoped_ptr<base::DictionaryValue> dictionary(new base::DictionaryValue);
929 const NetworkState* network = GetNetworkState(service_path);
930 if (network) {
931 dictionary->SetString(kNetworkInfoKeyServicePath, service_path);
932 dictionary->SetString(kNetworkInfoKeyGUID, network->guid());
933 if (network->type() == shill::kTypeCellular) {
934 dictionary->SetBoolean(
935 kTagCarrierSelectFlag,
936 CommandLine::ForCurrentProcess()
937 ->HasSwitch(chromeos::switches::kEnableCarrierSwitching));
938 dictionary->SetBoolean(kTagShowViewAccountButton,
939 ShowViewAccountButton(network));
940 }
941 }
942 web_ui()->CallJavascriptFunction(kShowDetailedInfoFunction, *dictionary);
943 }
944
933 base::ListValue* InternetOptionsHandler::GetWiredList() { 945 base::ListValue* InternetOptionsHandler::GetWiredList() {
934 base::ListValue* list = new base::ListValue(); 946 base::ListValue* list = new base::ListValue();
935 const NetworkState* network = NetworkHandler::Get()->network_state_handler()-> 947 const NetworkState* network = NetworkHandler::Get()->network_state_handler()->
936 FirstNetworkByType(NetworkTypePattern::Ethernet()); 948 FirstNetworkByType(NetworkTypePattern::Ethernet());
937 if (!network) 949 if (!network)
938 return list; 950 return list;
939 list->Append(BuildNetworkDictionary(network, GetScaleFactor(), GetPrefs())); 951 list->Append(BuildNetworkDictionary(network, GetScaleFactor(), GetPrefs()));
940 return list; 952 return list;
941 } 953 }
942 954
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 dictionary->Set(kTagVpnList, GetVPNList()); 1013 dictionary->Set(kTagVpnList, GetVPNList());
1002 dictionary->Set(kTagRememberedList, GetRememberedList()); 1014 dictionary->Set(kTagRememberedList, GetRememberedList());
1003 1015
1004 dictionary->SetBoolean( 1016 dictionary->SetBoolean(
1005 kTagWifiAvailable, 1017 kTagWifiAvailable,
1006 handler->IsTechnologyAvailable(NetworkTypePattern::WiFi())); 1018 handler->IsTechnologyAvailable(NetworkTypePattern::WiFi()));
1007 dictionary->SetBoolean( 1019 dictionary->SetBoolean(
1008 kTagWifiEnabled, 1020 kTagWifiEnabled,
1009 handler->IsTechnologyEnabled(NetworkTypePattern::WiFi())); 1021 handler->IsTechnologyEnabled(NetworkTypePattern::WiFi()));
1010 1022
1023 const DeviceState* cellular =
1024 handler->GetDeviceStateByType(NetworkTypePattern::Mobile());
1011 dictionary->SetBoolean( 1025 dictionary->SetBoolean(
1012 kTagCellularAvailable, 1026 kTagCellularAvailable,
1013 handler->IsTechnologyAvailable(NetworkTypePattern::Mobile())); 1027 handler->IsTechnologyAvailable(NetworkTypePattern::Mobile()));
1014 dictionary->SetBoolean( 1028 dictionary->SetBoolean(
1015 kTagCellularEnabled, 1029 kTagCellularEnabled,
1016 handler->IsTechnologyEnabled(NetworkTypePattern::Mobile())); 1030 handler->IsTechnologyEnabled(NetworkTypePattern::Mobile()));
1017 const DeviceState* cellular = 1031 dictionary->SetBoolean(kTagCellularSupportsScan,
1018 handler->GetDeviceStateByType(NetworkTypePattern::Mobile()); 1032 cellular && cellular->support_network_scan());
1019 dictionary->SetBoolean( 1033 dictionary->SetBoolean(kTagCellularSimAbsent,
1020 kTagCellularSupportsScan, 1034 cellular && cellular->IsSimAbsent());
1021 cellular && cellular->support_network_scan()); 1035 dictionary->SetString(kTagCellularSimLockType,
1036 cellular ? cellular->sim_lock_type() : "");
1022 1037
1023 dictionary->SetBoolean( 1038 dictionary->SetBoolean(
1024 kTagWimaxAvailable, 1039 kTagWimaxAvailable,
1025 handler->IsTechnologyAvailable(NetworkTypePattern::Wimax())); 1040 handler->IsTechnologyAvailable(NetworkTypePattern::Wimax()));
1026 dictionary->SetBoolean( 1041 dictionary->SetBoolean(
1027 kTagWimaxEnabled, 1042 kTagWimaxEnabled,
1028 handler->IsTechnologyEnabled(NetworkTypePattern::Wimax())); 1043 handler->IsTechnologyEnabled(NetworkTypePattern::Wimax()));
1029 } 1044 }
1030 1045
1031 } // namespace options 1046 } // namespace options
1032 } // namespace chromeos 1047 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698