Commit 1ce9bfec authored by glotov@chromium.org's avatar glotov@chromium.org

Fix the data race of OobeTest.NewUser browser test and enable it.

BUG=178009
TEST=for i in {1..20}; do \
     out/Debug/interactive_ui_tests --gtest_filter=OobeTest.NewUser --disable-test-compositor; \
     if [ $? != 0 ]; then break; fi; \
     done;

Review URL: https://chromiumcodereview.appspot.com/13895008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@195157 0039d316-1c4b-4281-b951-d872f2087c98
parent 3d5c5383
...@@ -40,7 +40,10 @@ class TestBrowserMainExtraParts ...@@ -40,7 +40,10 @@ class TestBrowserMainExtraParts
: public ChromeBrowserMainExtraParts, : public ChromeBrowserMainExtraParts,
public content::NotificationObserver { public content::NotificationObserver {
public: public:
TestBrowserMainExtraParts() {} TestBrowserMainExtraParts()
: webui_visible_(false),
browsing_data_removed_(false),
signin_screen_shown_(false) {}
virtual ~TestBrowserMainExtraParts() {} virtual ~TestBrowserMainExtraParts() {}
// ChromeBrowserMainExtraParts implementation. // ChromeBrowserMainExtraParts implementation.
...@@ -49,6 +52,8 @@ class TestBrowserMainExtraParts ...@@ -49,6 +52,8 @@ class TestBrowserMainExtraParts
content::NotificationService::AllSources()); content::NotificationService::AllSources());
registrar_.Add(this, chrome::NOTIFICATION_SESSION_STARTED, registrar_.Add(this, chrome::NOTIFICATION_SESSION_STARTED,
content::NotificationService::AllSources()); content::NotificationService::AllSources());
registrar_.Add(this, chrome::NOTIFICATION_BROWSING_DATA_REMOVED,
content::NotificationService::AllSources());
} }
void set_quit_task(const base::Closure& quit_task) { quit_task_ = quit_task; } void set_quit_task(const base::Closure& quit_task) { quit_task_ = quit_task; }
...@@ -61,17 +66,18 @@ class TestBrowserMainExtraParts ...@@ -61,17 +66,18 @@ class TestBrowserMainExtraParts
const content::NotificationDetails& details) OVERRIDE { const content::NotificationDetails& details) OVERRIDE {
if (type == chrome::NOTIFICATION_LOGIN_WEBUI_VISIBLE) { if (type == chrome::NOTIFICATION_LOGIN_WEBUI_VISIBLE) {
LOG(INFO) << "NOTIFICATION_LOGIN_WEBUI_VISIBLE"; LOG(INFO) << "NOTIFICATION_LOGIN_WEBUI_VISIBLE";
chromeos::ExistingUserController* controller = webui_visible_ = true;
chromeos::ExistingUserController::current_controller(); if (browsing_data_removed_ && !signin_screen_shown_) {
CHECK(controller); signin_screen_shown_ = true;
chromeos::WebUILoginDisplay* webui_login_display = ShowSigninScreen();
static_cast<chromeos::WebUILoginDisplay*>( }
controller->login_display()); } else if (type == chrome::NOTIFICATION_BROWSING_DATA_REMOVED) {
CHECK(webui_login_display); LOG(INFO) << "chrome::NOTIFICATION_BROWSING_DATA_REMOVED";
webui_login_display->SetGaiaOriginForTesting(gaia_url_); browsing_data_removed_ = true;
webui_login_display->ShowSigninScreenForCreds("username", "password"); if (webui_visible_ && !signin_screen_shown_) {
// TODO(glotov): mock GAIA server (test_server_) should support signin_screen_shown_ = true;
// username/password configuration. ShowSigninScreen();
}
} else if (type == chrome::NOTIFICATION_SESSION_STARTED) { } else if (type == chrome::NOTIFICATION_SESSION_STARTED) {
LOG(INFO) << "chrome::NOTIFICATION_SESSION_STARTED"; LOG(INFO) << "chrome::NOTIFICATION_SESSION_STARTED";
quit_task_.Run(); quit_task_.Run();
...@@ -80,6 +86,21 @@ class TestBrowserMainExtraParts ...@@ -80,6 +86,21 @@ class TestBrowserMainExtraParts
} }
} }
void ShowSigninScreen() {
chromeos::ExistingUserController* controller =
chromeos::ExistingUserController::current_controller();
CHECK(controller);
chromeos::WebUILoginDisplay* webui_login_display =
static_cast<chromeos::WebUILoginDisplay*>(
controller->login_display());
CHECK(webui_login_display);
webui_login_display->SetGaiaOriginForTesting(gaia_url_);
webui_login_display->ShowSigninScreenForCreds("username", "password");
// TODO(glotov): mock GAIA server (test_server_) should support
// username/password configuration.
}
bool webui_visible_, browsing_data_removed_, signin_screen_shown_;
content::NotificationRegistrar registrar_; content::NotificationRegistrar registrar_;
base::Closure quit_task_; base::Closure quit_task_;
std::string gaia_url_; std::string gaia_url_;
...@@ -187,8 +208,7 @@ class OobeTest : public chromeos::CrosInProcessBrowserTest { ...@@ -187,8 +208,7 @@ class OobeTest : public chromeos::CrosInProcessBrowserTest {
// needs UI thread. // needs UI thread.
}; };
// Temporally disabled because of a race: crbug.com/178009 IN_PROC_BROWSER_TEST_F(OobeTest, NewUser) {
IN_PROC_BROWSER_TEST_F(OobeTest, DISABLED_NewUser) {
chromeos::WizardController::SkipPostLoginScreensForTesting(); chromeos::WizardController::SkipPostLoginScreensForTesting();
chromeos::WizardController* wizard_controller = chromeos::WizardController* wizard_controller =
chromeos::WizardController::default_controller(); chromeos::WizardController::default_controller();
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
cr.define('login', function() { cr.define('login', function() {
// Gaia loading time after which error message must be displayed and // Gaia loading time after which error message must be displayed and
// lazy portal check should be fired. // lazy portal check should be fired.
/** @const */ var GAIA_LOADING_PORTAL_SUSSPECT_TIME_SEC = 15; /** @const */ var GAIA_LOADING_PORTAL_SUSSPECT_TIME_SEC = 7;
// Maximum Gaia loading time in seconds. // Maximum Gaia loading time in seconds.
/** @const */ var MAX_GAIA_LOADING_TIME_SEC = 60; /** @const */ var MAX_GAIA_LOADING_TIME_SEC = 60;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment