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

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: Append -> Add 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(kTagErrorMessage,
250 ash::NetworkConnect::Get()->GetErrorString(
251 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 // Add service path for now.
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 // Add 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(kTagErrorMessage,
647 ash::NetworkConnect::Get()->GetErrorString(
648 network->error(), service_path));
649 // Add additional non-ONC cellular properties to inform the UI.
650 if (network->type() == shill::kTypeCellular) {
651 dictionary->SetBoolean(kTagShowViewAccountButton,
652 ShowViewAccountButton(network));
653 }
654 }
655 web_ui()->CallJavascriptFunction(js_callback_function, *dictionary);
642 } 656 }
643 657
644 void InternetOptionsHandler::UpdateCarrier() { 658 void InternetOptionsHandler::UpdateCarrier() {
645 web_ui()->CallJavascriptFunction(kUpdateCarrierFunction); 659 web_ui()->CallJavascriptFunction(kUpdateCarrierFunction);
646 } 660 }
647 661
648 void InternetOptionsHandler::DeviceListChanged() { 662 void InternetOptionsHandler::DeviceListChanged() {
649 if (!web_ui()) 663 if (!web_ui())
650 return; 664 return;
651 RefreshNetworkData(); 665 RefreshNetworkData();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 NOTREACHED(); 710 NOTREACHED();
697 return; 711 return;
698 } 712 }
699 SetNetworkProperty(service_path, 713 SetNetworkProperty(service_path,
700 shill::kProviderHostProperty, 714 shill::kProviderHostProperty,
701 new base::StringValue(server_hostname)); 715 new base::StringValue(server_hostname));
702 } 716 }
703 717
704 void InternetOptionsHandler::SetPreferNetworkCallback( 718 void InternetOptionsHandler::SetPreferNetworkCallback(
705 const base::ListValue* args) { 719 const base::ListValue* args) {
706 std::string service_path, prefer_network_str; 720 std::string service_path;
721 bool prefer_network;
707 if (args->GetSize() < 2 || 722 if (args->GetSize() < 2 ||
708 !args->GetString(0, &service_path) || 723 !args->GetString(0, &service_path) ||
709 !args->GetString(1, &prefer_network_str)) { 724 !args->GetBoolean(1, &prefer_network)) {
710 NOTREACHED(); 725 NOTREACHED();
711 return; 726 return;
712 } 727 }
713 int priority = (prefer_network_str == kTagTrue) ? kPreferredPriority : 0; 728 int priority = prefer_network ? kPreferredPriority : 0;
714 SetNetworkProperty(service_path, 729 SetNetworkProperty(service_path,
715 shill::kPriorityProperty, 730 shill::kPriorityProperty,
716 new base::FundamentalValue(priority)); 731 new base::FundamentalValue(priority));
717 } 732 }
718 733
719 void InternetOptionsHandler::SetAutoConnectCallback( 734 void InternetOptionsHandler::SetAutoConnectCallback(
720 const base::ListValue* args) { 735 const base::ListValue* args) {
721 std::string service_path, auto_connect_str; 736 std::string service_path;
737 bool auto_connect;
722 if (args->GetSize() < 2 || 738 if (args->GetSize() < 2 ||
723 !args->GetString(0, &service_path) || 739 !args->GetString(0, &service_path) ||
724 !args->GetString(1, &auto_connect_str)) { 740 !args->GetBoolean(1, &auto_connect)) {
725 NOTREACHED(); 741 NOTREACHED();
726 return; 742 return;
727 } 743 }
728 bool auto_connect = auto_connect_str == kTagTrue;
729 SetNetworkProperty(service_path, 744 SetNetworkProperty(service_path,
730 shill::kAutoConnectProperty, 745 shill::kAutoConnectProperty,
731 new base::FundamentalValue(auto_connect)); 746 new base::FundamentalValue(auto_connect));
732 } 747 }
733 748
734 void InternetOptionsHandler::SetIPConfigCallback(const base::ListValue* args) { 749 void InternetOptionsHandler::SetIPConfigCallback(const base::ListValue* args) {
735 std::string service_path; 750 std::string service_path;
736 if (!args->GetString(0, &service_path)) { 751 if (!args->GetString(0, &service_path)) {
737 NOTREACHED(); 752 NOTREACHED();
738 return; 753 return;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 shill_properties.GetStringWithoutPathExpansion(shill::kDeviceProperty, 841 shill_properties.GetStringWithoutPathExpansion(shill::kDeviceProperty,
827 &device_path); 842 &device_path);
828 if (!device_path.empty()) { 843 if (!device_path.empty()) {
829 NetworkHandler::Get()->network_device_handler()->RequestRefreshIPConfigs( 844 NetworkHandler::Get()->network_device_handler()->RequestRefreshIPConfigs(
830 device_path, 845 device_path,
831 base::Bind(&base::DoNothing), 846 base::Bind(&base::DoNothing),
832 base::Bind(&ShillError, "RequestRefreshIPConfigs")); 847 base::Bind(&ShillError, "RequestRefreshIPConfigs"));
833 } 848 }
834 } 849 }
835 850
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 { 851 gfx::NativeWindow InternetOptionsHandler::GetNativeWindow() const {
852 return web_ui()->GetWebContents()->GetTopLevelNativeWindow(); 852 return web_ui()->GetWebContents()->GetTopLevelNativeWindow();
853 } 853 }
854 854
855 float InternetOptionsHandler::GetScaleFactor() const { 855 float InternetOptionsHandler::GetScaleFactor() const {
856 return web_ui()->GetDeviceScaleFactor(); 856 return web_ui()->GetDeviceScaleFactor();
857 } 857 }
858 858
859 const PrefService* InternetOptionsHandler::GetPrefs() const { 859 const PrefService* InternetOptionsHandler::GetPrefs() const {
860 return Profile::FromWebUI(web_ui())->GetPrefs(); 860 return Profile::FromWebUI(web_ui())->GetPrefs();
861 } 861 }
862 862
863 void InternetOptionsHandler::NetworkCommandCallback( 863 void InternetOptionsHandler::AddConnection(const base::ListValue* args) {
864 const base::ListValue* args) {
865 std::string onc_type; 864 std::string onc_type;
866 std::string service_path; 865 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(); 866 NOTREACHED();
873 return; 867 return;
874 } 868 }
875 std::string type; // Shill type 869 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::NetworkConnect::Get()->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()); 870 NetworkConfigView::ShowForType(shill::kTypeWifi, GetNativeWindow());
908 } else if (type == shill::kTypeVPN) { 871 } else if (onc_type == ::onc::network_type::kVPN) {
909 NetworkConfigView::ShowForType(shill::kTypeVPN, GetNativeWindow()); 872 NetworkConfigView::ShowForType(shill::kTypeVPN, GetNativeWindow());
910 } else if (type == shill::kTypeCellular) { 873 } else if (onc_type == ::onc::network_type::kCellular) {
911 ChooseMobileNetworkDialog::ShowDialog(GetNativeWindow()); 874 ChooseMobileNetworkDialog::ShowDialog(GetNativeWindow());
912 } else { 875 } else {
913 LOG(ERROR) << "Unsupported type for AddConnection"; 876 LOG(ERROR) << "Unsupported type for AddConnection";
914 } 877 }
915 } 878 }
916 879
917 void InternetOptionsHandler::SendShowDetailedInfo( 880 void InternetOptionsHandler::ConfigureNetwork(const base::ListValue* args) {
918 const std::string& service_path) { 881 std::string service_path;
919 details_path_ = service_path; 882 if (args->GetSize() != 1 || !args->GetString(0, &service_path)) {
883 NOTREACHED();
884 return;
885 }
886 NetworkConfigView::Show(service_path, GetNativeWindow());
887 }
920 888
921 scoped_ptr<base::DictionaryValue> dictionary(new base::DictionaryValue); 889 void InternetOptionsHandler::ActivateNetwork(const base::ListValue* args) {
922 const NetworkState* network = GetNetworkState(service_path); 890 std::string service_path;
923 if (network) { 891 if (args->GetSize() != 1 || !args->GetString(0, &service_path)) {
924 dictionary->SetString(kNetworkInfoKeyServicePath, service_path); 892 NOTREACHED();
925 dictionary->SetString(kNetworkInfoKeyGUID, network->guid()); 893 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 } 894 }
935 web_ui()->CallJavascriptFunction(kShowDetailedInfoFunction, *dictionary); 895 ash::NetworkConnect::Get()->ActivateCellular(service_path);
896 }
897
898 void InternetOptionsHandler::RemoveNetwork(const base::ListValue* args) {
899 std::string service_path;
900 if (args->GetSize() != 1 || !args->GetString(0, &service_path)) {
901 NOTREACHED();
902 return;
903 }
904 NetworkHandler::Get()
905 ->managed_network_configuration_handler()
906 ->RemoveConfiguration(service_path, base::Bind(&base::DoNothing),
907 base::Bind(&ShillError, "RemoveNetwork"));
936 } 908 }
937 909
938 base::ListValue* InternetOptionsHandler::GetWiredList() { 910 base::ListValue* InternetOptionsHandler::GetWiredList() {
939 base::ListValue* list = new base::ListValue(); 911 base::ListValue* list = new base::ListValue();
940 const NetworkState* network = NetworkHandler::Get()->network_state_handler()-> 912 const NetworkState* network = NetworkHandler::Get()->network_state_handler()->
941 FirstNetworkByType(NetworkTypePattern::Ethernet()); 913 FirstNetworkByType(NetworkTypePattern::Ethernet());
942 if (!network) 914 if (!network)
943 return list; 915 return list;
944 list->Append(BuildNetworkDictionary(network, GetScaleFactor(), GetPrefs())); 916 list->Append(BuildNetworkDictionary(network, GetScaleFactor(), GetPrefs()));
945 return list; 917 return list;
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 dictionary->SetBoolean( 1003 dictionary->SetBoolean(
1032 kTagWimaxAvailable, 1004 kTagWimaxAvailable,
1033 handler->IsTechnologyAvailable(NetworkTypePattern::Wimax())); 1005 handler->IsTechnologyAvailable(NetworkTypePattern::Wimax()));
1034 dictionary->SetBoolean( 1006 dictionary->SetBoolean(
1035 kTagWimaxEnabled, 1007 kTagWimaxEnabled,
1036 handler->IsTechnologyEnabled(NetworkTypePattern::Wimax())); 1008 handler->IsTechnologyEnabled(NetworkTypePattern::Wimax()));
1037 } 1009 }
1038 1010
1039 } // namespace options 1011 } // namespace options
1040 } // namespace chromeos 1012 } // 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