Chromium Code Reviews| 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 menthods 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 provided properties for the details page, so |
|
pneubeck (no reviews)
2014/10/27 16:37:20
typo: provided -> provide
stevenjb
2014/10/27 17:32:33
Done.
| |
| 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. | |
| 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); | |
|
pneubeck (no reviews)
2014/10/27 16:37:19
I don't see how this is replaced in the new code.
stevenjb
2014/10/27 17:32:33
Not required any more. If there are state changes,
| |
| 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 |