Chromium Code Reviews| Index: chrome/browser/chromeos/login/screens/network_screen.cc |
| diff --git a/chrome/browser/chromeos/login/screens/network_screen.cc b/chrome/browser/chromeos/login/screens/network_screen.cc |
| index e6c7ca6e5481aa091cdc6590ec1caaa9cc021474..57f858b69990aa71b2b90b5ed313bf69f830adcf 100644 |
| --- a/chrome/browser/chromeos/login/screens/network_screen.cc |
| +++ b/chrome/browser/chromeos/login/screens/network_screen.cc |
| @@ -4,10 +4,12 @@ |
| #include "chrome/browser/chromeos/login/screens/network_screen.h" |
| +#include "base/json/json_writer.h" |
| #include "base/location.h" |
| #include "base/logging.h" |
| #include "base/prefs/pref_service.h" |
| #include "base/strings/string16.h" |
| +#include "base/strings/string_number_conversions.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "chrome/browser/browser_process.h" |
| #include "chrome/browser/chromeos/base/locale_util.h" |
| @@ -25,7 +27,9 @@ |
| #include "chrome/grit/chromium_strings.h" |
| #include "chrome/grit/generated_resources.h" |
| #include "chromeos/network/network_handler.h" |
| +#include "chromeos/network/network_state.h" |
| #include "chromeos/network/network_state_handler.h" |
| +#include "chromeos/network/network_util.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "ui/base/l10n/l10n_util.h" |
| @@ -229,8 +233,43 @@ std::string NetworkScreen::GetTimezone() const { |
| return timezone_; |
| } |
| -void NetworkScreen::CreateNetworkFromOnc(const std::string& onc_spec) { |
| - network_state_helper_->CreateNetworkFromOnc(onc_spec); |
| +void NetworkScreen::GetConnectedWifiNetwork(std::string* out_onc_spec) { |
|
dzhioev (left Google)
2015/11/10 00:33:10
My two cents: why this method is a part of Network
|
| + // Currently We can only transfer unsecured WiFi configuration from shark to |
| + // remora. There is no way to get password for a secured Wifi network in Cros |
| + // for security reasons. |
| + const NetworkState* network_state = |
| + NetworkHandler::Get()->network_state_handler()->ConnectedNetworkByType( |
| + NetworkTypePattern::WiFi()); |
| + |
| + if (!network_state) |
| + return; |
| + |
| + scoped_ptr<base::DictionaryValue> current_onc = |
| + network_util::TranslateNetworkStateToONC(network_state); |
| + std::string security; |
| + current_onc->GetString( |
| + onc::network_config::WifiProperty(onc::wifi::kSecurity), &security); |
| + if (security != onc::wifi::kSecurityNone) |
| + return; |
| + |
| + const std::string hex_ssid = network_state->GetHexSsid(); |
| + |
| + scoped_ptr<base::DictionaryValue> copied_onc(new base::DictionaryValue()); |
| + copied_onc->Set(onc::toplevel_config::kType, |
| + new base::StringValue(onc::network_type::kWiFi)); |
| + copied_onc->Set(onc::network_config::WifiProperty(onc::wifi::kHexSSID), |
| + new base::StringValue(hex_ssid)); |
| + copied_onc->Set(onc::network_config::WifiProperty(onc::wifi::kSecurity), |
| + new base::StringValue(security)); |
| + base::JSONWriter::Write(*copied_onc.get(), out_onc_spec); |
| +} |
| + |
| +void NetworkScreen::CreateAndConnectNetworkFromOnc( |
| + const std::string& onc_spec) { |
| + network_state_helper_->CreateAndConnectNetworkFromOnc( |
| + onc_spec, base::Bind(&base::DoNothing), |
| + base::Bind(&NetworkScreen::OnConnectNetworkFromOncFailed, |
| + base::Unretained(this))); |
| } |
| void NetworkScreen::AddObserver(Observer* observer) { |
| @@ -398,4 +437,13 @@ void NetworkScreen::OnSystemTimezoneChanged() { |
| GetContextEditor().SetString(kContextKeyTimezone, current_timezone_id); |
| } |
| +void NetworkScreen::OnConnectNetworkFromOncFailed() { |
| + if (!network_state_helper_->IsConnected() && view_) { |
| + // Show error bubble. |
| + view_->ShowError(l10n_util::GetStringFUTF16( |
| + IDS_NETWORK_SELECTION_ERROR, |
| + l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_OS_NAME))); |
| + } |
| +} |
| + |
| } // namespace chromeos |