Index: chrome/test/remoting/remote_desktop_browsertest.cc |
diff --git a/chrome/test/remoting/remote_desktop_browsertest.cc b/chrome/test/remoting/remote_desktop_browsertest.cc |
index d9a826510c65ae179654d548cf479c5a20a54af1..9e53c73184d819ddc7b034358234b2d71c44c2d0 100644 |
--- a/chrome/test/remoting/remote_desktop_browsertest.cc |
+++ b/chrome/test/remoting/remote_desktop_browsertest.cc |
@@ -34,6 +34,15 @@ RemoteDesktopBrowserTest::~RemoteDesktopBrowserTest() {} |
void RemoteDesktopBrowserTest::SetUp() { |
ParseCommandLine(); |
+ |
+ if (!accounts_file_.empty()) { |
+ // We've been passed in a file containing accounts information. |
+ base::FilePath accounts_file_path(accounts_file_); |
+ ASSERT_FALSE(account_type_.empty()); |
+ ASSERT_TRUE(base::PathExists(accounts_file_path)); |
+ SetUserNameAndPassword(accounts_file_path); |
+ } |
+ |
PlatformAppBrowserTest::SetUp(); |
} |
@@ -572,8 +581,9 @@ void RemoteDesktopBrowserTest::ParseCommandLine() { |
override_user_data_dir); |
} |
- username_ = command_line->GetSwitchValueASCII(kUsername); |
- password_ = command_line->GetSwitchValueASCII(kkPassword); |
+ accounts_file_ = command_line->GetSwitchValueASCII(kAccountsFile); |
+ account_type_ = command_line->GetSwitchValueASCII(kAccountType); |
+ |
me2me_pin_ = command_line->GetSwitchValueASCII(kMe2MePin); |
remote_host_name_ = command_line->GetSwitchValueASCII(kRemoteHostName); |
extension_name_ = command_line->GetSwitchValueASCII(kExtensionName); |
@@ -798,6 +808,44 @@ void RemoteDesktopBrowserTest::DismissHostVersionWarningIfVisible() { |
ClickOnControl("host-needs-update-connect-button"); |
} |
+bool RemoteDesktopBrowserTest::SetUserNameAndPassword( |
+ const base::FilePath &accounts_file_path) { |
+ |
+ // Read contents of accounts file. |
+ std::string accounts_info; |
+ if (!base::ReadFileToString(accounts_file_path, &accounts_info)){ |
+ LOG(WARNING) << "Failed to read file: " << accounts_file_path.value(); |
+ return false; |
+ } |
+ |
+ scoped_ptr<base::Value> root( |
+ base::JSONReader::Read(accounts_info, base::JSON_ALLOW_TRAILING_COMMAS)); |
+ DCHECK(root.get() != NULL); |
+ if (!root.get() || root->GetType() != base::Value::TYPE_DICTIONARY) { |
+ LOG(WARNING) << "Bad config file"; |
+ return false; |
+ } |
+ |
+ // Get the root dictionary from the input json file contents. |
+ const base::DictionaryValue* root_dict = |
+ static_cast<base::DictionaryValue*>(root.get()); |
+ // And now the dictionary for the specified account type. |
+ const base::DictionaryValue* account_dict = NULL; |
+ root_dict->GetDictionary(account_type_, &account_dict); |
+ |
+ if (!account_dict->GetString(kUserNameField, &username_)) { |
+ LOG(WARNING) << "account info file missing username"; |
+ return false; |
+ } |
+ |
+ if (!account_dict->GetString(kPasswordField, &password_)) { |
+ LOG(WARNING) << "account info file missing password"; |
+ return false; |
+ } |
+ LOG(INFO) << username_ << "=" << password_; |
+ return true; |
+} |
+ |
// static |
bool RemoteDesktopBrowserTest::IsAuthenticatedInWindow( |
content::WebContents* web_contents) { |