| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/browser/api/networking_private/networking_private_chromeos.
h" | 5 #include "extensions/browser/api/networking_private/networking_private_chromeos.
h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 #include "content/public/browser/browser_context.h" | 29 #include "content/public/browser/browser_context.h" |
| 30 #include "extensions/browser/api/networking_private/networking_private_api.h" | 30 #include "extensions/browser/api/networking_private/networking_private_api.h" |
| 31 #include "extensions/browser/extension_registry.h" | 31 #include "extensions/browser/extension_registry.h" |
| 32 #include "extensions/browser/extensions_browser_client.h" | 32 #include "extensions/browser/extensions_browser_client.h" |
| 33 #include "extensions/common/extension.h" | 33 #include "extensions/common/extension.h" |
| 34 #include "extensions/common/extension_set.h" | 34 #include "extensions/common/extension_set.h" |
| 35 #include "extensions/common/permissions/api_permission.h" | 35 #include "extensions/common/permissions/api_permission.h" |
| 36 #include "extensions/common/permissions/permissions_data.h" | 36 #include "extensions/common/permissions/permissions_data.h" |
| 37 #include "third_party/cros_system_api/dbus/service_constants.h" | 37 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 38 | 38 |
| 39 using chromeos::DeviceState; | |
| 40 using chromeos::NetworkHandler; | 39 using chromeos::NetworkHandler; |
| 41 using chromeos::NetworkStateHandler; | 40 using chromeos::NetworkStateHandler; |
| 42 using chromeos::NetworkTypePattern; | 41 using chromeos::NetworkTypePattern; |
| 43 using chromeos::ShillManagerClient; | 42 using chromeos::ShillManagerClient; |
| 44 using extensions::NetworkingPrivateDelegate; | 43 using extensions::NetworkingPrivateDelegate; |
| 45 | 44 |
| 46 namespace private_api = extensions::api::networking_private; | 45 namespace private_api = extensions::api::networking_private; |
| 47 | 46 |
| 48 namespace { | 47 namespace { |
| 49 | 48 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 *error = "Error.NonPrimaryUser"; | 85 *error = "Error.NonPrimaryUser"; |
| 87 return false; | 86 return false; |
| 88 } | 87 } |
| 89 if (user_hash) | 88 if (user_hash) |
| 90 *user_hash = context_user_hash; | 89 *user_hash = context_user_hash; |
| 91 return true; | 90 return true; |
| 92 } | 91 } |
| 93 | 92 |
| 94 void AppendDeviceState( | 93 void AppendDeviceState( |
| 95 const std::string& type, | 94 const std::string& type, |
| 96 const DeviceState* device, | 95 const chromeos::DeviceState* device, |
| 97 NetworkingPrivateDelegate::DeviceStateList* device_state_list) { | 96 NetworkingPrivateDelegate::DeviceStateList* device_state_list) { |
| 98 DCHECK(!type.empty()); | 97 DCHECK(!type.empty()); |
| 99 NetworkTypePattern pattern = | 98 NetworkTypePattern pattern = |
| 100 chromeos::onc::NetworkTypePatternFromOncType(type); | 99 chromeos::onc::NetworkTypePatternFromOncType(type); |
| 101 NetworkStateHandler::TechnologyState technology_state = | 100 NetworkStateHandler::TechnologyState technology_state = |
| 102 GetStateHandler()->GetTechnologyState(pattern); | 101 GetStateHandler()->GetTechnologyState(pattern); |
| 103 private_api::DeviceStateType state = private_api::DEVICE_STATE_TYPE_NONE; | 102 private_api::DeviceStateType state = private_api::DEVICE_STATE_TYPE_NONE; |
| 104 switch (technology_state) { | 103 switch (technology_state) { |
| 105 case NetworkStateHandler::TECHNOLOGY_UNAVAILABLE: | 104 case NetworkStateHandler::TECHNOLOGY_UNAVAILABLE: |
| 106 if (!device) | 105 if (!device) |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 return nullptr; | 191 return nullptr; |
| 193 if (GetStringFromDictionary(*vpn_dict, ::onc::vpn::kType) != | 192 if (GetStringFromDictionary(*vpn_dict, ::onc::vpn::kType) != |
| 194 ::onc::vpn::kThirdPartyVpn) { | 193 ::onc::vpn::kThirdPartyVpn) { |
| 195 return nullptr; | 194 return nullptr; |
| 196 } | 195 } |
| 197 base::DictionaryValue* third_party_vpn = nullptr; | 196 base::DictionaryValue* third_party_vpn = nullptr; |
| 198 vpn_dict->GetDictionary(::onc::vpn::kThirdPartyVpn, &third_party_vpn); | 197 vpn_dict->GetDictionary(::onc::vpn::kThirdPartyVpn, &third_party_vpn); |
| 199 return third_party_vpn; | 198 return third_party_vpn; |
| 200 } | 199 } |
| 201 | 200 |
| 201 const chromeos::DeviceState* GetCellularDeviceState(const std::string& guid) { |
| 202 const chromeos::NetworkState* network_state = nullptr; |
| 203 if (!guid.empty()) |
| 204 network_state = GetStateHandler()->GetNetworkStateFromGuid(guid); |
| 205 const chromeos::DeviceState* device_state = nullptr; |
| 206 if (network_state) { |
| 207 device_state = |
| 208 GetStateHandler()->GetDeviceState(network_state->device_path()); |
| 209 } |
| 210 if (!device_state) { |
| 211 device_state = |
| 212 GetStateHandler()->GetDeviceStateByType(NetworkTypePattern::Cellular()); |
| 213 } |
| 214 return device_state; |
| 215 } |
| 216 |
| 202 } // namespace | 217 } // namespace |
| 203 | 218 |
| 204 //////////////////////////////////////////////////////////////////////////////// | 219 //////////////////////////////////////////////////////////////////////////////// |
| 205 | 220 |
| 206 namespace extensions { | 221 namespace extensions { |
| 207 | 222 |
| 208 NetworkingPrivateChromeOS::NetworkingPrivateChromeOS( | 223 NetworkingPrivateChromeOS::NetworkingPrivateChromeOS( |
| 209 content::BrowserContext* browser_context, | 224 content::BrowserContext* browser_context, |
| 210 std::unique_ptr<VerifyDelegate> verify_delegate) | 225 std::unique_ptr<VerifyDelegate> verify_delegate) |
| 211 : NetworkingPrivateDelegate(std::move(verify_delegate)), | 226 : NetworkingPrivateDelegate(std::move(verify_delegate)), |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 477 ->GetCaptivePortalState(guid) | 492 ->GetCaptivePortalState(guid) |
| 478 .status)); | 493 .status)); |
| 479 } | 494 } |
| 480 | 495 |
| 481 void NetworkingPrivateChromeOS::UnlockCellularSim( | 496 void NetworkingPrivateChromeOS::UnlockCellularSim( |
| 482 const std::string& guid, | 497 const std::string& guid, |
| 483 const std::string& pin, | 498 const std::string& pin, |
| 484 const std::string& puk, | 499 const std::string& puk, |
| 485 const VoidCallback& success_callback, | 500 const VoidCallback& success_callback, |
| 486 const FailureCallback& failure_callback) { | 501 const FailureCallback& failure_callback) { |
| 487 const chromeos::NetworkState* network_state = | 502 const chromeos::DeviceState* device_state = GetCellularDeviceState(guid); |
| 488 GetStateHandler()->GetNetworkStateFromGuid(guid); | |
| 489 if (!network_state) { | |
| 490 failure_callback.Run(networking_private::kErrorNetworkUnavailable); | |
| 491 return; | |
| 492 } | |
| 493 const chromeos::DeviceState* device_state = | |
| 494 GetStateHandler()->GetDeviceState(network_state->device_path()); | |
| 495 if (!device_state) { | 503 if (!device_state) { |
| 496 failure_callback.Run(networking_private::kErrorNetworkUnavailable); | 504 failure_callback.Run(networking_private::kErrorNetworkUnavailable); |
| 497 return; | 505 return; |
| 498 } | 506 } |
| 499 std::string lock_type = device_state->sim_lock_type(); | 507 std::string lock_type = device_state->sim_lock_type(); |
| 500 if (lock_type.empty()) { | 508 if (lock_type.empty()) { |
| 501 // Sim is already unlocked. | 509 // Sim is already unlocked. |
| 502 failure_callback.Run(networking_private::kErrorInvalidNetworkOperation); | 510 failure_callback.Run(networking_private::kErrorInvalidNetworkOperation); |
| 503 return; | 511 return; |
| 504 } | 512 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 515 } | 523 } |
| 516 } | 524 } |
| 517 | 525 |
| 518 void NetworkingPrivateChromeOS::SetCellularSimState( | 526 void NetworkingPrivateChromeOS::SetCellularSimState( |
| 519 const std::string& guid, | 527 const std::string& guid, |
| 520 bool require_pin, | 528 bool require_pin, |
| 521 const std::string& current_pin, | 529 const std::string& current_pin, |
| 522 const std::string& new_pin, | 530 const std::string& new_pin, |
| 523 const VoidCallback& success_callback, | 531 const VoidCallback& success_callback, |
| 524 const FailureCallback& failure_callback) { | 532 const FailureCallback& failure_callback) { |
| 525 const chromeos::NetworkState* network_state = | 533 const chromeos::DeviceState* device_state = GetCellularDeviceState(guid); |
| 526 GetStateHandler()->GetNetworkStateFromGuid(guid); | |
| 527 if (!network_state) { | |
| 528 failure_callback.Run(networking_private::kErrorNetworkUnavailable); | |
| 529 return; | |
| 530 } | |
| 531 const chromeos::DeviceState* device_state = | |
| 532 GetStateHandler()->GetDeviceState(network_state->device_path()); | |
| 533 if (!device_state) { | 534 if (!device_state) { |
| 534 failure_callback.Run(networking_private::kErrorNetworkUnavailable); | 535 failure_callback.Run(networking_private::kErrorNetworkUnavailable); |
| 535 return; | 536 return; |
| 536 } | 537 } |
| 537 if (!device_state->sim_lock_type().empty()) { | 538 if (!device_state->sim_lock_type().empty()) { |
| 538 // The SIM needs to be unlocked before the state can be changed. | 539 // The SIM needs to be unlocked before the state can be changed. |
| 539 failure_callback.Run(networking_private::kErrorSimLocked); | 540 failure_callback.Run(networking_private::kErrorSimLocked); |
| 540 return; | 541 return; |
| 541 } | 542 } |
| 542 | 543 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 567 return network_list; | 568 return network_list; |
| 568 } | 569 } |
| 569 | 570 |
| 570 std::unique_ptr<NetworkingPrivateDelegate::DeviceStateList> | 571 std::unique_ptr<NetworkingPrivateDelegate::DeviceStateList> |
| 571 NetworkingPrivateChromeOS::GetDeviceStateList() { | 572 NetworkingPrivateChromeOS::GetDeviceStateList() { |
| 572 std::set<std::string> technologies_found; | 573 std::set<std::string> technologies_found; |
| 573 NetworkStateHandler::DeviceStateList devices; | 574 NetworkStateHandler::DeviceStateList devices; |
| 574 NetworkHandler::Get()->network_state_handler()->GetDeviceList(&devices); | 575 NetworkHandler::Get()->network_state_handler()->GetDeviceList(&devices); |
| 575 | 576 |
| 576 std::unique_ptr<DeviceStateList> device_state_list(new DeviceStateList); | 577 std::unique_ptr<DeviceStateList> device_state_list(new DeviceStateList); |
| 577 for (const DeviceState* device : devices) { | 578 for (const chromeos::DeviceState* device : devices) { |
| 578 std::string onc_type = | 579 std::string onc_type = |
| 579 chromeos::network_util::TranslateShillTypeToONC(device->type()); | 580 chromeos::network_util::TranslateShillTypeToONC(device->type()); |
| 580 AppendDeviceState(onc_type, device, device_state_list.get()); | 581 AppendDeviceState(onc_type, device, device_state_list.get()); |
| 581 technologies_found.insert(onc_type); | 582 technologies_found.insert(onc_type); |
| 582 } | 583 } |
| 583 | 584 |
| 584 // For any technologies that we do not have a DeviceState entry for, append | 585 // For any technologies that we do not have a DeviceState entry for, append |
| 585 // an entry if the technolog is available. | 586 // an entry if the technolog is available. |
| 586 const char* technology_types[] = {::onc::network_type::kEthernet, | 587 const char* technology_types[] = {::onc::network_type::kEthernet, |
| 587 ::onc::network_type::kWiFi, | 588 ::onc::network_type::kWiFi, |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 // Eventually the caller (e.g. Settings) should handle any failures and | 666 // Eventually the caller (e.g. Settings) should handle any failures and |
| 666 // show its own configuration UI. crbug.com/380937. | 667 // show its own configuration UI. crbug.com/380937. |
| 667 if (ui_delegate()->HandleConnectFailed(guid, error_name)) { | 668 if (ui_delegate()->HandleConnectFailed(guid, error_name)) { |
| 668 success_callback.Run(); | 669 success_callback.Run(); |
| 669 return; | 670 return; |
| 670 } | 671 } |
| 671 failure_callback.Run(error_name); | 672 failure_callback.Run(error_name); |
| 672 } | 673 } |
| 673 | 674 |
| 674 } // namespace extensions | 675 } // namespace extensions |
| OLD | NEW |