Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(619)

Unified Diff: chrome/browser/chromeos/policy/device_local_account_browsertest.cc

Issue 423073009: Fix race in locale changes during DeviceLocalAccountTest (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix typo. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/policy/device_local_account_browsertest.cc
diff --git a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
index e49b48f525baef30b2e2b7fbe7875cf5a3d48f2f..f940dc85dc46cdbf623e78a8b78e4cc483a26c8b 100644
--- a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
+++ b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
@@ -482,6 +482,19 @@ class DeviceLocalAccountTest : public DevicePolicyCrosBrowserTest,
base::Bind(&DisplayNameMatches, user_id_1_, kDisplayName)).Wait();
}
+ void GetWebContents(content::WebContents** contents) {
+ chromeos::LoginDisplayHostImpl* host =
+ reinterpret_cast<chromeos::LoginDisplayHostImpl*>(
+ chromeos::LoginDisplayHostImpl::default_host());
+ ASSERT_TRUE(host);
+ chromeos::WebUILoginView* web_ui_login_view = host->GetWebUILoginView();
+ ASSERT_TRUE(web_ui_login_view);
+ content::WebUI* web_ui = web_ui_login_view->GetWebUI();
+ ASSERT_TRUE(web_ui);
+ *contents = web_ui->GetWebContents();
+ ASSERT_TRUE(*contents);
+ }
+
void WaitForLoginUI() {
// Wait for the login UI to be ready.
chromeos::LoginDisplayHostImpl* host =
@@ -494,6 +507,26 @@ class DeviceLocalAccountTest : public DevicePolicyCrosBrowserTest,
const bool oobe_ui_ready = oobe_ui->IsJSReady(run_loop.QuitClosure());
if (!oobe_ui_ready)
run_loop.Run();
+
+ // The network selection screen changes the application locale on load and
+ // once again on blur. Wait for the screen to load and blur it so that any
+ // locale changes caused by this screen happen now and do not affect any
+ // subsequent parts of the test.
+ content::WebContents* contents = NULL;
+ ASSERT_NO_FATAL_FAILURE(GetWebContents(&contents));
+ bool done = false;
+ ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
+ contents,
+ "var languageSelect = document.getElementById('language-select');"
+ "var blurAndReportSuccess = function() {"
+ " languageSelect.blur();"
+ " domAutomationController.send(true);"
+ "};"
+ "if (document.activeElement == languageSelect)"
+ " blurAndReportSuccess();"
+ "else"
+ " languageSelect.addEventListener('focus', blurAndReportSuccess);",
+ &done));
}
void StartLogin(const std::string& locale,
@@ -1244,16 +1277,8 @@ IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest,
wizard_controller->current_screen()->GetName());
// Wait for the Terms of Service to finish downloading.
- chromeos::LoginDisplayHostImpl* host =
- reinterpret_cast<chromeos::LoginDisplayHostImpl*>(
- chromeos::LoginDisplayHostImpl::default_host());
- ASSERT_TRUE(host);
- chromeos::WebUILoginView* web_ui_login_view = host->GetWebUILoginView();
- ASSERT_TRUE(web_ui_login_view);
- content::WebUI* web_ui = web_ui_login_view->GetWebUI();
- ASSERT_TRUE(web_ui);
- content::WebContents* contents = web_ui->GetWebContents();
- ASSERT_TRUE(contents);
+ content::WebContents* contents = NULL;
+ ASSERT_NO_FATAL_FAILURE(GetWebContents(&contents));
bool done = false;
ASSERT_TRUE(content::ExecuteScriptAndExtractBool(contents,
"var screenElement = document.getElementById('terms-of-service');"
@@ -1334,16 +1359,8 @@ IN_PROC_BROWSER_TEST_P(TermsOfServiceDownloadTest, TermsOfServiceScreen) {
// Wait for the Terms of Service to finish downloading, then get the status of
// the screen's UI elements.
- chromeos::LoginDisplayHostImpl* host =
- reinterpret_cast<chromeos::LoginDisplayHostImpl*>(
- chromeos::LoginDisplayHostImpl::default_host());
- ASSERT_TRUE(host);
- chromeos::WebUILoginView* web_ui_login_view = host->GetWebUILoginView();
- ASSERT_TRUE(web_ui_login_view);
- content::WebUI* web_ui = web_ui_login_view->GetWebUI();
- ASSERT_TRUE(web_ui);
- content::WebContents* contents = web_ui->GetWebContents();
- ASSERT_TRUE(contents);
+ content::WebContents* contents = NULL;
+ ASSERT_NO_FATAL_FAILURE(GetWebContents(&contents));
std::string json;
ASSERT_TRUE(content::ExecuteScriptAndExtractString(contents,
"var screenElement = document.getElementById('terms-of-service');"
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698