diff options
author | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-19 00:33:13 +0000 |
---|---|---|
committer | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-19 00:33:13 +0000 |
commit | 74e8d5fdd5927e70ae6d4cf020631dc72bb12ee7 (patch) | |
tree | 79e748ef59e256eb882d572449d5ee7f0b7502ce /chrome/browser/chromeos/cros/network_library.cc | |
parent | 3bf8471bcb1ff95660f7dda324ab0ad2d00a8abe (diff) | |
download | chromium_src-74e8d5fdd5927e70ae6d4cf020631dc72bb12ee7.zip chromium_src-74e8d5fdd5927e70ae6d4cf020631dc72bb12ee7.tar.gz chromium_src-74e8d5fdd5927e70ae6d4cf020631dc72bb12ee7.tar.bz2 |
Added account value substitution support to certain ONC fields.
BUG=chromium-os:23751
TEST=make sure $LOGIN_ID or $LOGIN_EMAIL are substituted with actual values in EAP.Identity and VPN user fields.
Review URL: http://codereview.chromium.org/9188055
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@118194 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/cros/network_library.cc')
-rw-r--r-- | chrome/browser/chromeos/cros/network_library.cc | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc index 5a47d59b..288bc0c 100644 --- a/chrome/browser/chromeos/cros/network_library.cc +++ b/chrome/browser/chromeos/cros/network_library.cc @@ -34,8 +34,10 @@ #include "chrome/browser/chromeos/cros/cros_library.h" #include "chrome/browser/chromeos/cros/native_network_constants.h" #include "chrome/browser/chromeos/cros/native_network_parser.h" +#include "chrome/browser/chromeos/cros/onc_constants.h" #include "chrome/browser/chromeos/cros/onc_network_parser.h" #include "chrome/browser/chromeos/cros_settings.h" +#include "chrome/browser/chromeos/login/user_manager.h" #include "chrome/browser/chromeos/network_login_observer.h" #include "chrome/common/time_format.h" #include "content/public/browser/browser_thread.h" @@ -424,6 +426,26 @@ Network::~Network() { } } +// static. +std::string Network::GetUserExpandedValue(const std::string& value) { + // If running unit test, just return the original value. + if (!BrowserThread::IsMessageLoopValid(BrowserThread::UI)) + return value; + + if (!UserManager::Get()->user_is_logged_in()) + return value; + + std::string temp_value; + std::string final_value; + ReplaceChars(value, onc::substitutes::kLoginIDField, + UserManager::Get()->logged_in_user().GetAccountName(), + &temp_value); + ReplaceChars(temp_value, onc::substitutes::kEmailField, + UserManager::Get()->logged_in_user().email(), + &final_value); + return final_value; +} + void Network::SetNetworkParser(NetworkParser* parser) { network_parser_.reset(parser); } @@ -719,6 +741,10 @@ VirtualNetwork::VirtualNetwork(const std::string& service_path) VirtualNetwork::~VirtualNetwork() {} +std::string VirtualNetwork::GetUserName() const { + return GetUserExpandedValue(username_); +} + void VirtualNetwork::EraseCredentials() { WipeString(&ca_cert_nss_); WipeString(&psk_passphrase_); @@ -739,7 +765,7 @@ void VirtualNetwork::CopyCredentialsFromRemembered(Network* remembered) { DCHECK_EQ(remembered->type(), TYPE_VPN); VirtualNetwork* remembered_vpn = static_cast<VirtualNetwork*>(remembered); VLOG(1) << "Copy VPN credentials: " << name() - << " username: " << remembered_vpn->username(); + << " username: " << remembered_vpn->GetUserName(); if (ca_cert_nss_.empty()) ca_cert_nss_ = remembered_vpn->ca_cert_nss(); if (psk_passphrase_.empty()) @@ -747,7 +773,7 @@ void VirtualNetwork::CopyCredentialsFromRemembered(Network* remembered) { if (client_cert_id_.empty()) client_cert_id_ = remembered_vpn->client_cert_id(); if (username_.empty()) - username_ = remembered_vpn->username(); + username_ = remembered_vpn->GetUserName(); if (user_passphrase_.empty()) user_passphrase_ = remembered_vpn->user_passphrase(); } @@ -1276,6 +1302,15 @@ WifiNetwork::WifiNetwork(const std::string& service_path) WifiNetwork::~WifiNetwork() {} +std::string WifiNetwork::GetEapIdentity() const { + return GetUserExpandedValue(eap_identity_); +} + +std::string WifiNetwork::GetEapAnonymousIdentity() const { + return GetUserExpandedValue(eap_anonymous_identity_); +} + + void WifiNetwork::CalculateUniqueId() { ConnectionSecurity encryption = encryption_; // Flimflam treats wpa and rsn as psk internally, so convert those types |