summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/cros/network_library.cc
diff options
context:
space:
mode:
authorzelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-19 00:33:13 +0000
committerzelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-19 00:33:13 +0000
commit74e8d5fdd5927e70ae6d4cf020631dc72bb12ee7 (patch)
tree79e748ef59e256eb882d572449d5ee7f0b7502ce /chrome/browser/chromeos/cros/network_library.cc
parent3bf8471bcb1ff95660f7dda324ab0ad2d00a8abe (diff)
downloadchromium_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.cc39
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