OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |