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

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

Issue 673313003: More changes to make network settings better match extension API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Feedback + fix Created 6 years, 1 month 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
« no previous file with comments | « chrome/browser/ui/webui/options/chromeos/internet_options_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 #include "ui/base/resource/resource_bundle.h" 56 #include "ui/base/resource/resource_bundle.h"
57 #include "ui/base/webui/web_ui_util.h" 57 #include "ui/base/webui/web_ui_util.h"
58 #include "ui/chromeos/network/network_icon.h" 58 #include "ui/chromeos/network/network_icon.h"
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 initial "localized" dictionary values.
67 const char kLoggedInAsOwnerKey[] = "loggedInAsOwner";
68 const char kShowCarrierSelectKey[] = "showCarrierSelect";
69 const char kNetworkDataKey[] = "networkData";
70
66 // Keys for the network description dictionary passed to the web ui. Make sure 71 // 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. 72 // to keep the strings in sync with what the JavaScript side uses.
68 const char kNetworkInfoKeyIconURL[] = "iconURL"; 73 const char kNetworkInfoKeyIconURL[] = "iconURL";
69 const char kNetworkInfoKeyPolicyManaged[] = "policyManaged"; 74 const char kNetworkInfoKeyPolicyManaged[] = "policyManaged";
70 75
71 // These are types of name server selections from the web ui. 76 // These are types of name server selections from the web ui.
72 const char kNameServerTypeAutomatic[] = "automatic"; 77 const char kNameServerTypeAutomatic[] = "automatic";
73 const char kNameServerTypeGoogle[] = "google"; 78 const char kNameServerTypeGoogle[] = "google";
74 79
75 // Google public name servers (DNS). 80 // Google public name servers (DNS).
76 const char kGoogleNameServers[] = "8.8.4.4,8.8.8.8"; 81 const char kGoogleNameServers[] = "8.8.4.4,8.8.8.8";
77 82
78 // Functions we call in JavaScript. 83 // Functions we call in JavaScript.
79 const char kRefreshNetworkDataFunction[] = 84 const char kRefreshNetworkDataFunction[] =
80 "options.network.NetworkList.refreshNetworkData"; 85 "options.network.NetworkList.refreshNetworkData";
81 const char kSetDefaultNetworkIconsFunction[] = 86 const char kSetDefaultNetworkIconsFunction[] =
82 "options.network.NetworkList.setDefaultNetworkIcons"; 87 "options.network.NetworkList.setDefaultNetworkIcons";
83 const char kSendNetworkDetailsFunction[] = 88 const char kGetManagedPropertiesResultFunction[] =
84 "options.internet.DetailsInternetPage.sendNetworkDetails"; 89 "options.internet.DetailsInternetPage.getManagedPropertiesResult";
85 const char kShowDetailedInfoFunction[] =
86 "options.internet.DetailsInternetPage.showDetailedInfo";
87 const char kUpdateConnectionDataFunction[] = 90 const char kUpdateConnectionDataFunction[] =
88 "options.internet.DetailsInternetPage.updateConnectionData"; 91 "options.internet.DetailsInternetPage.updateConnectionData";
89 const char kUpdateCarrierFunction[] = 92 const char kUpdateCarrierFunction[] =
90 "options.internet.DetailsInternetPage.updateCarrier"; 93 "options.internet.DetailsInternetPage.updateCarrier";
91 94
92 // These are used to register message handlers with JavaScript. 95 // Setter methods called from JS that still need to be converted to match
93 const char kNetworkCommandMessage[] = "networkCommand"; 96 // networkingPrivate methods.
94 const char kSetApnMessage[] = "setApn"; 97 const char kSetApnMessage[] = "setApn";
95 const char kSetAutoConnectMessage[] = "setAutoConnect"; 98 const char kSetAutoConnectMessage[] = "setAutoConnect";
96 const char kSetCarrierMessage[] = "setCarrier"; 99 const char kSetCarrierMessage[] = "setCarrier";
97 const char kSetIPConfigMessage[] = "setIPConfig"; 100 const char kSetIPConfigMessage[] = "setIPConfig";
98 const char kSetPreferNetworkMessage[] = "setPreferNetwork"; 101 const char kSetPreferNetworkMessage[] = "setPreferNetwork";
99 const char kSetServerHostname[] = "setServerHostname"; 102 const char kSetServerHostname[] = "setServerHostname";
100 const char kShowMorePlanInfoMessage[] = "showMorePlanInfo"; 103 const char kShowMorePlanInfoMessage[] = "showMorePlanInfo";
101 const char kSimOperationMessage[] = "simOperation"; 104 const char kSimOperationMessage[] = "simOperation";
102 105
103 // TODO(stevenjb): Replace these with the matching networkingPrivate methods. 106 // TODO(stevenjb): Replace these with the matching networkingPrivate methods.
104 // crbug.com/279351. 107 // crbug.com/279351.
105 const char kDisableNetworkTypeMessage[] = "disableNetworkType"; 108 const char kDisableNetworkTypeMessage[] = "disableNetworkType";
106 const char kEnableNetworkTypeMessage[] = "enableNetworkType"; 109 const char kEnableNetworkTypeMessage[] = "enableNetworkType";
107 const char kGetManagedPropertiesMessage[] = "getManagedProperties"; 110 const char kGetManagedPropertiesMessage[] = "getManagedProperties";
108 const char kRequestNetworkScanMessage[] = "requestNetworkScan"; 111 const char kRequestNetworkScanMessage[] = "requestNetworkScan";
109 const char kStartConnectMessage[] = "startConnect"; 112 const char kStartConnectMessage[] = "startConnect";
110 const char kStartDisconnectMessage[] = "startDisconnect"; 113 const char kStartDisconnectMessage[] = "startDisconnect";
111 114
115 // TODO(stevenjb): Add these to networkingPrivate.
116 const char kRemoveNetworkMessage[] = "removeNetwork";
117
118 // TODO(stevenjb): Deprecate these and integrate with settings Web UI.
119 const char kAddConnectionMessage[] = "addConnection";
120 const char kConfigureNetworkMessage[] = "configureNetwork";
121 const char kActivateNetworkMessage[] = "activateNetwork";
122
112 // These are strings used to communicate with JavaScript. 123 // These are strings used to communicate with JavaScript.
113 const char kTagActivate[] = "activate";
114 const char kTagAddConnection[] = "add";
115 const char kTagCarrierSelectFlag[] = "showCarrierSelect";
116 const char kTagCellularAvailable[] = "cellularAvailable"; 124 const char kTagCellularAvailable[] = "cellularAvailable";
117 const char kTagCellularEnabled[] = "cellularEnabled"; 125 const char kTagCellularEnabled[] = "cellularEnabled";
118 const char kTagCellularSimAbsent[] = "cellularSimAbsent"; 126 const char kTagCellularSimAbsent[] = "cellularSimAbsent";
119 const char kTagCellularSimLockType[] = "cellularSimLockType"; 127 const char kTagCellularSimLockType[] = "cellularSimLockType";
120 const char kTagCellularSupportsScan[] = "cellularSupportsScan"; 128 const char kTagCellularSupportsScan[] = "cellularSupportsScan";
121 const char kTagConfigure[] = "configure";
122 const char kTagForget[] = "forget";
123 const char kTagRememberedList[] = "rememberedList"; 129 const char kTagRememberedList[] = "rememberedList";
124 const char kTagShowDetails[] = "showDetails";
125 const char kTagShowViewAccountButton[] = "showViewAccountButton";
126 const char kTagSimOpChangePin[] = "changePin"; 130 const char kTagSimOpChangePin[] = "changePin";
127 const char kTagSimOpConfigure[] = "configure"; 131 const char kTagSimOpConfigure[] = "configure";
128 const char kTagSimOpSetLocked[] = "setLocked"; 132 const char kTagSimOpSetLocked[] = "setLocked";
129 const char kTagSimOpSetUnlocked[] = "setUnlocked"; 133 const char kTagSimOpSetUnlocked[] = "setUnlocked";
130 const char kTagSimOpUnlock[] = "unlock"; 134 const char kTagSimOpUnlock[] = "unlock";
131 const char kTagTrue[] = "true";
132 const char kTagVpnList[] = "vpnList"; 135 const char kTagVpnList[] = "vpnList";
133 const char kTagWifiAvailable[] = "wifiAvailable"; 136 const char kTagWifiAvailable[] = "wifiAvailable";
134 const char kTagWifiEnabled[] = "wifiEnabled"; 137 const char kTagWifiEnabled[] = "wifiEnabled";
135 const char kTagWimaxAvailable[] = "wimaxAvailable"; 138 const char kTagWimaxAvailable[] = "wimaxAvailable";
136 const char kTagWimaxEnabled[] = "wimaxEnabled"; 139 const char kTagWimaxEnabled[] = "wimaxEnabled";
137 const char kTagWiredList[] = "wiredList"; 140 const char kTagWiredList[] = "wiredList";
138 const char kTagWirelessList[] = "wirelessList"; 141 const char kTagWirelessList[] = "wirelessList";
139 142
140 // Pseudo-ONC chrome specific properties appended to the ONC dictionary. 143 // Pseudo-ONC chrome specific properties appended to the ONC dictionary.
144 const char kNetworkInfoKeyServicePath[] = "servicePath";
141 const char kTagErrorMessage[] = "errorMessage"; 145 const char kTagErrorMessage[] = "errorMessage";
142 const char kNetworkInfoKeyServicePath[] = "servicePath"; 146 const char kTagShowViewAccountButton[] = "showViewAccountButton";
143 const char kNetworkInfoKeyGUID[] = "GUID";
144 147
145 const int kPreferredPriority = 1; 148 const int kPreferredPriority = 1;
146 149
147 void ShillError(const std::string& function, 150 void ShillError(const std::string& function,
148 const std::string& error_name, 151 const std::string& error_name,
149 scoped_ptr<base::DictionaryValue> error_data) { 152 scoped_ptr<base::DictionaryValue> error_data) {
150 // UpdateConnectionData may send requests for stale services; ignore 153 // UpdateConnectionData may send requests for stale services; ignore
151 // these errors. 154 // these errors.
152 if (function == "UpdateConnectionData" && 155 if (function == "UpdateConnectionData" &&
153 error_name == network_handler::kDBusFailedError) 156 error_name == network_handler::kDBusFailedError)
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 device->properties().GetStringWithoutPathExpansion(shill::kMdnProperty, 234 device->properties().GetStringWithoutPathExpansion(shill::kMdnProperty,
232 &mdn); 235 &mdn);
233 } 236 }
234 if (mdn.empty()) 237 if (mdn.empty())
235 return false; 238 return false;
236 } 239 }
237 240
238 return true; 241 return true;
239 } 242 }
240 243
241 scoped_ptr<base::DictionaryValue> PopulateConnectionDetails(
242 const NetworkState* network,
243 const base::DictionaryValue& onc_properties) {
244 scoped_ptr<base::DictionaryValue> dictionary(onc_properties.DeepCopy());
245
246 // Append Service Path for now.
247 dictionary->SetString(kNetworkInfoKeyServicePath, network->path());
248 // Append a Chrome specific translated error message.
249 dictionary->SetString(
250 kTagErrorMessage,
251 ash::network_connect::ErrorString(network->error(), network->path()));
252
253 return dictionary.Pass();
254 }
255
256 // Helper methods for SetIPConfigProperties 244 // Helper methods for SetIPConfigProperties
257 bool AppendPropertyKeyIfPresent(const std::string& key, 245 bool AppendPropertyKeyIfPresent(const std::string& key,
258 const base::DictionaryValue& old_properties, 246 const base::DictionaryValue& old_properties,
259 std::vector<std::string>* property_keys) { 247 std::vector<std::string>* property_keys) {
260 if (old_properties.HasKey(key)) { 248 if (old_properties.HasKey(key)) {
261 property_keys->push_back(key); 249 property_keys->push_back(key);
262 return true; 250 return true;
263 } 251 }
264 return false; 252 return false;
265 } 253 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 294
307 void InternetOptionsHandler::GetLocalizedValues( 295 void InternetOptionsHandler::GetLocalizedValues(
308 base::DictionaryValue* localized_strings) { 296 base::DictionaryValue* localized_strings) {
309 DCHECK(localized_strings); 297 DCHECK(localized_strings);
310 internet_options_strings::RegisterLocalizedStrings(localized_strings); 298 internet_options_strings::RegisterLocalizedStrings(localized_strings);
311 299
312 // TODO(stevenjb): Find a better way to populate initial data before 300 // TODO(stevenjb): Find a better way to populate initial data before
313 // InitializePage() gets called. 301 // InitializePage() gets called.
314 std::string owner; 302 std::string owner;
315 chromeos::CrosSettings::Get()->GetString(chromeos::kDeviceOwner, &owner); 303 chromeos::CrosSettings::Get()->GetString(chromeos::kDeviceOwner, &owner);
316 localized_strings->SetString("ownerUserId", base::UTF8ToUTF16(owner));
317 bool logged_in_as_owner = LoginState::Get()->GetLoggedInUserType() == 304 bool logged_in_as_owner = LoginState::Get()->GetLoggedInUserType() ==
318 LoginState::LOGGED_IN_USER_OWNER; 305 LoginState::LOGGED_IN_USER_OWNER;
319 localized_strings->SetBoolean("loggedInAsOwner", logged_in_as_owner); 306 localized_strings->SetBoolean(kLoggedInAsOwnerKey, logged_in_as_owner);
307 localized_strings->SetBoolean(
308 kShowCarrierSelectKey, CommandLine::ForCurrentProcess()->HasSwitch(
309 chromeos::switches::kEnableCarrierSwitching));
320 310
321 base::DictionaryValue* network_dictionary = new base::DictionaryValue; 311 base::DictionaryValue* network_dictionary = new base::DictionaryValue;
322 FillNetworkInfo(network_dictionary); 312 FillNetworkInfo(network_dictionary);
323 localized_strings->Set("networkData", network_dictionary); 313 localized_strings->Set(kNetworkDataKey, network_dictionary);
324 } 314 }
325 315
326 void InternetOptionsHandler::InitializePage() { 316 void InternetOptionsHandler::InitializePage() {
327 base::DictionaryValue dictionary; 317 base::DictionaryValue dictionary;
328 dictionary.SetString(::onc::network_type::kCellular, 318 dictionary.SetString(::onc::network_type::kCellular,
329 GetIconDataUrl(IDR_AURA_UBER_TRAY_NETWORK_BARS_DARK)); 319 GetIconDataUrl(IDR_AURA_UBER_TRAY_NETWORK_BARS_DARK));
330 dictionary.SetString(::onc::network_type::kWiFi, 320 dictionary.SetString(::onc::network_type::kWiFi,
331 GetIconDataUrl(IDR_AURA_UBER_TRAY_NETWORK_ARCS_DARK)); 321 GetIconDataUrl(IDR_AURA_UBER_TRAY_NETWORK_ARCS_DARK));
332 dictionary.SetString(::onc::network_type::kVPN, 322 dictionary.SetString(::onc::network_type::kVPN,
333 GetIconDataUrl(IDR_AURA_UBER_TRAY_NETWORK_VPN)); 323 GetIconDataUrl(IDR_AURA_UBER_TRAY_NETWORK_VPN));
334 web_ui()->CallJavascriptFunction(kSetDefaultNetworkIconsFunction, 324 web_ui()->CallJavascriptFunction(kSetDefaultNetworkIconsFunction,
335 dictionary); 325 dictionary);
336 NetworkHandler::Get()->network_state_handler()->RequestScan(); 326 NetworkHandler::Get()->network_state_handler()->RequestScan();
337 RefreshNetworkData(); 327 RefreshNetworkData();
338 } 328 }
339 329
340 void InternetOptionsHandler::RegisterMessages() { 330 void InternetOptionsHandler::RegisterMessages() {
341 // Setup handlers specific to this panel. 331 web_ui()->RegisterMessageCallback(kAddConnectionMessage,
342 web_ui()->RegisterMessageCallback(kNetworkCommandMessage, 332 base::Bind(&InternetOptionsHandler::AddConnection,
343 base::Bind(&InternetOptionsHandler::NetworkCommandCallback, 333 base::Unretained(this)));
334 web_ui()->RegisterMessageCallback(kRemoveNetworkMessage,
335 base::Bind(&InternetOptionsHandler::RemoveNetwork,
336 base::Unretained(this)));
337 web_ui()->RegisterMessageCallback(kConfigureNetworkMessage,
338 base::Bind(&InternetOptionsHandler::ConfigureNetwork,
339 base::Unretained(this)));
340 web_ui()->RegisterMessageCallback(kActivateNetworkMessage,
341 base::Bind(&InternetOptionsHandler::ActivateNetwork,
344 base::Unretained(this))); 342 base::Unretained(this)));
345 web_ui()->RegisterMessageCallback(kSetPreferNetworkMessage, 343 web_ui()->RegisterMessageCallback(kSetPreferNetworkMessage,
346 base::Bind(&InternetOptionsHandler::SetPreferNetworkCallback, 344 base::Bind(&InternetOptionsHandler::SetPreferNetworkCallback,
347 base::Unretained(this))); 345 base::Unretained(this)));
348 web_ui()->RegisterMessageCallback(kSetAutoConnectMessage, 346 web_ui()->RegisterMessageCallback(kSetAutoConnectMessage,
349 base::Bind(&InternetOptionsHandler::SetAutoConnectCallback, 347 base::Bind(&InternetOptionsHandler::SetAutoConnectCallback,
350 base::Unretained(this))); 348 base::Unretained(this)));
351 web_ui()->RegisterMessageCallback(kSetIPConfigMessage, 349 web_ui()->RegisterMessageCallback(kSetIPConfigMessage,
352 base::Bind(&InternetOptionsHandler::SetIPConfigCallback, 350 base::Bind(&InternetOptionsHandler::SetIPConfigCallback,
353 base::Unretained(this))); 351 base::Unretained(this)));
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 base::Bind(&ShillError, "EnableNetworkType")); 556 base::Bind(&ShillError, "EnableNetworkType"));
559 } 557 }
560 558
561 void InternetOptionsHandler::GetManagedPropertiesCallback( 559 void InternetOptionsHandler::GetManagedPropertiesCallback(
562 const base::ListValue* args) { 560 const base::ListValue* args) {
563 std::string service_path; 561 std::string service_path;
564 if (!args->GetString(0, &service_path)) { 562 if (!args->GetString(0, &service_path)) {
565 NOTREACHED(); 563 NOTREACHED();
566 return; 564 return;
567 } 565 }
568 NetworkHandler::Get()->managed_network_configuration_handler() 566 // This is only ever called to provide properties for the details page, so
567 // set |details_path_| (used by the NetworkState observers) here.
568 details_path_ = service_path;
569 NetworkHandler::Get()
570 ->managed_network_configuration_handler()
569 ->GetManagedProperties( 571 ->GetManagedProperties(
570 LoginState::Get()->primary_user_hash(), 572 LoginState::Get()->primary_user_hash(), service_path,
571 service_path, 573 base::Bind(&InternetOptionsHandler::GetManagedPropertiesResult,
572 base::Bind( 574 weak_factory_.GetWeakPtr(),
573 &InternetOptionsHandler::PopulateDictionaryDetailsCallback, 575 kGetManagedPropertiesResultFunction),
574 weak_factory_.GetWeakPtr()),
575 base::Bind(&ShillError, "GetManagedProperties")); 576 base::Bind(&ShillError, "GetManagedProperties"));
576 } 577 }
577 578
578 void InternetOptionsHandler::RequestNetworkScanCallback( 579 void InternetOptionsHandler::RequestNetworkScanCallback(
579 const base::ListValue* args) { 580 const base::ListValue* args) {
580 NetworkHandler::Get()->network_state_handler()->RequestScan(); 581 NetworkHandler::Get()->network_state_handler()->RequestScan();
581 } 582 }
582 583
583 void InternetOptionsHandler::StartConnectCallback(const base::ListValue* args) { 584 void InternetOptionsHandler::StartConnectCallback(const base::ListValue* args) {
584 std::string service_path; 585 std::string service_path;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 base::DictionaryValue dictionary; 617 base::DictionaryValue dictionary;
617 FillNetworkInfo(&dictionary); 618 FillNetworkInfo(&dictionary);
618 web_ui()->CallJavascriptFunction(kRefreshNetworkDataFunction, dictionary); 619 web_ui()->CallJavascriptFunction(kRefreshNetworkDataFunction, dictionary);
619 } 620 }
620 621
621 void InternetOptionsHandler::UpdateConnectionData( 622 void InternetOptionsHandler::UpdateConnectionData(
622 const std::string& service_path) { 623 const std::string& service_path) {
623 NetworkHandler::Get() 624 NetworkHandler::Get()
624 ->managed_network_configuration_handler() 625 ->managed_network_configuration_handler()
625 ->GetManagedProperties( 626 ->GetManagedProperties(
626 LoginState::Get()->primary_user_hash(), 627 LoginState::Get()->primary_user_hash(), service_path,
627 service_path, 628 base::Bind(&InternetOptionsHandler::GetManagedPropertiesResult,
628 base::Bind(&InternetOptionsHandler::UpdateConnectionDataCallback, 629 weak_factory_.GetWeakPtr(), kUpdateConnectionDataFunction),
629 weak_factory_.GetWeakPtr()),
630 base::Bind(&ShillError, "UpdateConnectionData")); 630 base::Bind(&ShillError, "UpdateConnectionData"));
631 } 631 }
632 632
633 void InternetOptionsHandler::UpdateConnectionDataCallback( 633 void InternetOptionsHandler::GetManagedPropertiesResult(
634 const std::string& js_callback_function,
634 const std::string& service_path, 635 const std::string& service_path,
635 const base::DictionaryValue& onc_properties) { 636 const base::DictionaryValue& onc_properties) {
637 scoped_ptr<base::DictionaryValue> dictionary(onc_properties.DeepCopy());
638 // Append Service Path for now.
tbarzic 2014/10/27 19:21:59 nit: Append sounds a bit strange with a dictionary
stevenjb 2014/10/27 19:42:42 Done.
tbarzic 2014/10/27 20:01:19 you have a few more of these in this method :)
stevenjb 2014/10/29 21:05:44 Done.
639 dictionary->SetString(kNetworkInfoKeyServicePath, service_path);
640
636 const NetworkState* network = GetNetworkState(service_path); 641 const NetworkState* network = GetNetworkState(service_path);
637 if (!network) 642 if (network) {
638 return; 643 // Append a Chrome specific translated error message. TODO(stevenjb): Figure
639 scoped_ptr<base::DictionaryValue> dictionary = 644 // out a more robust way to track errors. Service.Error is transient so we
640 PopulateConnectionDetails(network, onc_properties); 645 // use NetworkState.error() which accurately tracks the "last" error.
641 web_ui()->CallJavascriptFunction(kUpdateConnectionDataFunction, *dictionary); 646 dictionary->SetString(
647 kTagErrorMessage,
648 ash::network_connect::ErrorString(network->error(), service_path));
649 // Append additional cellular properties to inform the UI, not available
650 // in ONC.
651 if (network->type() == shill::kTypeCellular) {
652 dictionary->SetBoolean(kTagShowViewAccountButton,
653 ShowViewAccountButton(network));
654 }
655 }
656 web_ui()->CallJavascriptFunction(js_callback_function, *dictionary);
642 } 657 }
643 658
644 void InternetOptionsHandler::UpdateCarrier() { 659 void InternetOptionsHandler::UpdateCarrier() {
645 web_ui()->CallJavascriptFunction(kUpdateCarrierFunction); 660 web_ui()->CallJavascriptFunction(kUpdateCarrierFunction);
646 } 661 }
647 662
648 void InternetOptionsHandler::DeviceListChanged() { 663 void InternetOptionsHandler::DeviceListChanged() {
649 if (!web_ui()) 664 if (!web_ui())
650 return; 665 return;
651 RefreshNetworkData(); 666 RefreshNetworkData();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 NOTREACHED(); 711 NOTREACHED();
697 return; 712 return;
698 } 713 }
699 SetNetworkProperty(service_path, 714 SetNetworkProperty(service_path,
700 shill::kProviderHostProperty, 715 shill::kProviderHostProperty,
701 new base::StringValue(server_hostname)); 716 new base::StringValue(server_hostname));
702 } 717 }
703 718
704 void InternetOptionsHandler::SetPreferNetworkCallback( 719 void InternetOptionsHandler::SetPreferNetworkCallback(
705 const base::ListValue* args) { 720 const base::ListValue* args) {
706 std::string service_path, prefer_network_str; 721 std::string service_path;
722 bool prefer_network;
707 if (args->GetSize() < 2 || 723 if (args->GetSize() < 2 ||
708 !args->GetString(0, &service_path) || 724 !args->GetString(0, &service_path) ||
709 !args->GetString(1, &prefer_network_str)) { 725 !args->GetBoolean(1, &prefer_network)) {
710 NOTREACHED(); 726 NOTREACHED();
711 return; 727 return;
712 } 728 }
713 int priority = (prefer_network_str == kTagTrue) ? kPreferredPriority : 0; 729 int priority = prefer_network ? kPreferredPriority : 0;
714 SetNetworkProperty(service_path, 730 SetNetworkProperty(service_path,
715 shill::kPriorityProperty, 731 shill::kPriorityProperty,
716 new base::FundamentalValue(priority)); 732 new base::FundamentalValue(priority));
717 } 733 }
718 734
719 void InternetOptionsHandler::SetAutoConnectCallback( 735 void InternetOptionsHandler::SetAutoConnectCallback(
720 const base::ListValue* args) { 736 const base::ListValue* args) {
721 std::string service_path, auto_connect_str; 737 std::string service_path;
738 bool auto_connect;
722 if (args->GetSize() < 2 || 739 if (args->GetSize() < 2 ||
723 !args->GetString(0, &service_path) || 740 !args->GetString(0, &service_path) ||
724 !args->GetString(1, &auto_connect_str)) { 741 !args->GetBoolean(1, &auto_connect)) {
725 NOTREACHED(); 742 NOTREACHED();
726 return; 743 return;
727 } 744 }
728 bool auto_connect = auto_connect_str == kTagTrue;
729 SetNetworkProperty(service_path, 745 SetNetworkProperty(service_path,
730 shill::kAutoConnectProperty, 746 shill::kAutoConnectProperty,
731 new base::FundamentalValue(auto_connect)); 747 new base::FundamentalValue(auto_connect));
732 } 748 }
733 749
734 void InternetOptionsHandler::SetIPConfigCallback(const base::ListValue* args) { 750 void InternetOptionsHandler::SetIPConfigCallback(const base::ListValue* args) {
735 std::string service_path; 751 std::string service_path;
736 if (!args->GetString(0, &service_path)) { 752 if (!args->GetString(0, &service_path)) {
737 NOTREACHED(); 753 NOTREACHED();
738 return; 754 return;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 shill_properties.GetStringWithoutPathExpansion(shill::kDeviceProperty, 842 shill_properties.GetStringWithoutPathExpansion(shill::kDeviceProperty,
827 &device_path); 843 &device_path);
828 if (!device_path.empty()) { 844 if (!device_path.empty()) {
829 NetworkHandler::Get()->network_device_handler()->RequestRefreshIPConfigs( 845 NetworkHandler::Get()->network_device_handler()->RequestRefreshIPConfigs(
830 device_path, 846 device_path,
831 base::Bind(&base::DoNothing), 847 base::Bind(&base::DoNothing),
832 base::Bind(&ShillError, "RequestRefreshIPConfigs")); 848 base::Bind(&ShillError, "RequestRefreshIPConfigs"));
833 } 849 }
834 } 850 }
835 851
836 void InternetOptionsHandler::PopulateDictionaryDetailsCallback(
837 const std::string& service_path,
838 const base::DictionaryValue& onc_properties) {
839 const NetworkState* network = GetNetworkState(service_path);
840 if (!network) {
841 LOG(ERROR) << "Network properties not found: " << service_path;
842 return;
843 }
844 scoped_ptr<base::DictionaryValue> dictionary =
845 PopulateConnectionDetails(network, onc_properties);
846
847 // Show details dialog
848 web_ui()->CallJavascriptFunction(kSendNetworkDetailsFunction, *dictionary);
849 }
850
851 gfx::NativeWindow InternetOptionsHandler::GetNativeWindow() const { 852 gfx::NativeWindow InternetOptionsHandler::GetNativeWindow() const {
852 return web_ui()->GetWebContents()->GetTopLevelNativeWindow(); 853 return web_ui()->GetWebContents()->GetTopLevelNativeWindow();
853 } 854 }
854 855
855 float InternetOptionsHandler::GetScaleFactor() const { 856 float InternetOptionsHandler::GetScaleFactor() const {
856 return web_ui()->GetDeviceScaleFactor(); 857 return web_ui()->GetDeviceScaleFactor();
857 } 858 }
858 859
859 const PrefService* InternetOptionsHandler::GetPrefs() const { 860 const PrefService* InternetOptionsHandler::GetPrefs() const {
860 return Profile::FromWebUI(web_ui())->GetPrefs(); 861 return Profile::FromWebUI(web_ui())->GetPrefs();
861 } 862 }
862 863
863 void InternetOptionsHandler::NetworkCommandCallback( 864 void InternetOptionsHandler::AddConnection(const base::ListValue* args) {
864 const base::ListValue* args) {
865 std::string onc_type; 865 std::string onc_type;
866 std::string service_path; 866 if (args->GetSize() != 1 || !args->GetString(0, &onc_type)) {
867 std::string command;
868 if (args->GetSize() != 3 ||
869 !args->GetString(0, &onc_type) ||
870 !args->GetString(1, &service_path) ||
871 !args->GetString(2, &command)) {
872 NOTREACHED(); 867 NOTREACHED();
873 return; 868 return;
874 } 869 }
875 std::string type; // Shill type 870 if (onc_type == ::onc::network_type::kWiFi) {
876 if (!onc_type.empty()) {
877 type = network_util::TranslateONCTypeToShill(onc_type);
878 if (type.empty())
879 LOG(ERROR) << "Unable to translate ONC type: " << onc_type;
880 }
881 // Process commands that do not require an existing network.
882 if (command == kTagAddConnection) {
883 AddConnection(type);
884 } else if (command == kTagForget) {
885 NetworkHandler::Get()->network_configuration_handler()->
886 RemoveConfiguration(
887 service_path,
888 base::Bind(&base::DoNothing),
889 base::Bind(&ShillError, "NetworkCommand: " + command));
890 } else if (command == kTagShowDetails) {
891 SendShowDetailedInfo(service_path);
892 } else if (command == kTagConfigure) {
893 NetworkConfigView::Show(service_path, GetNativeWindow());
894 } else if (command == kTagActivate && type == shill::kTypeCellular) {
895 ash::network_connect::ActivateCellular(service_path);
896 // Activation may update network properties (e.g. ActivationState), so
897 // request them here in case they change.
898 UpdateConnectionData(service_path);
899 } else {
900 LOG(ERROR) << "Unknown internet options command: " << command;
901 NOTREACHED();
902 }
903 }
904
905 void InternetOptionsHandler::AddConnection(const std::string& type) {
906 if (type == shill::kTypeWifi) {
907 NetworkConfigView::ShowForType(shill::kTypeWifi, GetNativeWindow()); 871 NetworkConfigView::ShowForType(shill::kTypeWifi, GetNativeWindow());
908 } else if (type == shill::kTypeVPN) { 872 } else if (onc_type == ::onc::network_type::kVPN) {
909 NetworkConfigView::ShowForType(shill::kTypeVPN, GetNativeWindow()); 873 NetworkConfigView::ShowForType(shill::kTypeVPN, GetNativeWindow());
910 } else if (type == shill::kTypeCellular) { 874 } else if (onc_type == ::onc::network_type::kCellular) {
911 ChooseMobileNetworkDialog::ShowDialog(GetNativeWindow()); 875 ChooseMobileNetworkDialog::ShowDialog(GetNativeWindow());
912 } else { 876 } else {
913 LOG(ERROR) << "Unsupported type for AddConnection"; 877 LOG(ERROR) << "Unsupported type for AddConnection";
914 } 878 }
915 } 879 }
916 880
917 void InternetOptionsHandler::SendShowDetailedInfo( 881 void InternetOptionsHandler::ConfigureNetwork(const base::ListValue* args) {
918 const std::string& service_path) { 882 std::string service_path;
919 details_path_ = service_path; 883 if (args->GetSize() != 1 || !args->GetString(0, &service_path)) {
884 NOTREACHED();
885 return;
886 }
887 NetworkConfigView::Show(service_path, GetNativeWindow());
888 }
920 889
921 scoped_ptr<base::DictionaryValue> dictionary(new base::DictionaryValue); 890 void InternetOptionsHandler::ActivateNetwork(const base::ListValue* args) {
922 const NetworkState* network = GetNetworkState(service_path); 891 std::string service_path;
923 if (network) { 892 if (args->GetSize() != 1 || !args->GetString(0, &service_path)) {
924 dictionary->SetString(kNetworkInfoKeyServicePath, service_path); 893 NOTREACHED();
925 dictionary->SetString(kNetworkInfoKeyGUID, network->guid()); 894 return;
926 if (network->type() == shill::kTypeCellular) {
927 dictionary->SetBoolean(
928 kTagCarrierSelectFlag,
929 CommandLine::ForCurrentProcess()
930 ->HasSwitch(chromeos::switches::kEnableCarrierSwitching));
931 dictionary->SetBoolean(kTagShowViewAccountButton,
932 ShowViewAccountButton(network));
933 }
934 } 895 }
935 web_ui()->CallJavascriptFunction(kShowDetailedInfoFunction, *dictionary); 896 ash::network_connect::ActivateCellular(service_path);
897 }
898
899 void InternetOptionsHandler::RemoveNetwork(const base::ListValue* args) {
900 std::string service_path;
901 if (args->GetSize() != 1 || !args->GetString(0, &service_path)) {
902 NOTREACHED();
903 return;
904 }
905 NetworkHandler::Get()
906 ->managed_network_configuration_handler()
907 ->RemoveConfiguration(service_path, base::Bind(&base::DoNothing),
908 base::Bind(&ShillError, "RemoveNetwork"));
936 } 909 }
937 910
938 base::ListValue* InternetOptionsHandler::GetWiredList() { 911 base::ListValue* InternetOptionsHandler::GetWiredList() {
939 base::ListValue* list = new base::ListValue(); 912 base::ListValue* list = new base::ListValue();
940 const NetworkState* network = NetworkHandler::Get()->network_state_handler()-> 913 const NetworkState* network = NetworkHandler::Get()->network_state_handler()->
941 FirstNetworkByType(NetworkTypePattern::Ethernet()); 914 FirstNetworkByType(NetworkTypePattern::Ethernet());
942 if (!network) 915 if (!network)
943 return list; 916 return list;
944 list->Append(BuildNetworkDictionary(network, GetScaleFactor(), GetPrefs())); 917 list->Append(BuildNetworkDictionary(network, GetScaleFactor(), GetPrefs()));
945 return list; 918 return list;
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 dictionary->SetBoolean( 1004 dictionary->SetBoolean(
1032 kTagWimaxAvailable, 1005 kTagWimaxAvailable,
1033 handler->IsTechnologyAvailable(NetworkTypePattern::Wimax())); 1006 handler->IsTechnologyAvailable(NetworkTypePattern::Wimax()));
1034 dictionary->SetBoolean( 1007 dictionary->SetBoolean(
1035 kTagWimaxEnabled, 1008 kTagWimaxEnabled,
1036 handler->IsTechnologyEnabled(NetworkTypePattern::Wimax())); 1009 handler->IsTechnologyEnabled(NetworkTypePattern::Wimax()));
1037 } 1010 }
1038 1011
1039 } // namespace options 1012 } // namespace options
1040 } // namespace chromeos 1013 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/options/chromeos/internet_options_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698