Chromium Code Reviews| Index: chrome/browser/ui/webui/signin/login_ui_test_utils.cc |
| diff --git a/chrome/browser/ui/webui/signin/login_ui_test_utils.cc b/chrome/browser/ui/webui/signin/login_ui_test_utils.cc |
| index 0f9189ba5260bcee52f37844b116caeed3bb8806..80db02598b5604b25d233e28c635fa8aa66df35b 100644 |
| --- a/chrome/browser/ui/webui/signin/login_ui_test_utils.cc |
| +++ b/chrome/browser/ui/webui/signin/login_ui_test_utils.cc |
| @@ -22,10 +22,11 @@ namespace { |
| // GoogleSigninSucceeded or a GoogleSigninFailed notification is fired. |
| class SignInObserver : public SigninTracker::Observer { |
| public: |
| - SignInObserver() |
| + explicit SignInObserver(bool wait_for_account_cookies) |
| : seen_(false), |
| running_(false), |
| - signed_in_(false) {} |
| + signed_in_(false), |
| + wait_for_account_cookies_(wait_for_account_cookies) {} |
| virtual ~SignInObserver() {} |
| @@ -48,19 +49,31 @@ class SignInObserver : public SigninTracker::Observer { |
| void SigninFailed(const GoogleServiceAuthError& error) override { |
| DVLOG(1) << "Google signin failed."; |
| - seen_ = true; |
| - if (!running_) |
| - return; |
| - message_loop_runner_->Quit(); |
| - running_ = false; |
| + QuitLoopRunner(); |
| } |
| - void AccountAddedToCookie(const GoogleServiceAuthError& error) override {} |
| + void AccountAddedToCookie(const GoogleServiceAuthError& error) override { |
| + if (!wait_for_account_cookies_) |
| + return; |
| + if (error.state() != GoogleServiceAuthError::NONE) { |
| + DVLOG(1) << "Error signing the account, error " << error.state(); |
| + } else { |
| + DVLOG(1) << "Account cookies are added to cookie jar."; |
| + signed_in_ = true; |
| + } |
| + QuitLoopRunner(); |
| + } |
| void SigninSuccess() override { |
| DVLOG(1) << "Google signin succeeded."; |
| - seen_ = true; |
| + if (wait_for_account_cookies_) |
| + return; |
| signed_in_ = true; |
| + QuitLoopRunner(); |
| + } |
| + |
| + void QuitLoopRunner() { |
| + seen_ = true; |
| if (!running_) |
| return; |
| message_loop_runner_->Quit(); |
| @@ -75,6 +88,10 @@ class SignInObserver : public SigninTracker::Observer { |
| bool running_; |
| // True if a GoogleSigninSucceeded event has been observed. |
| bool signed_in_; |
| + // Whether we should block until the account cookies are added or not. |
| + // By default, we only wait until SigninSuccess event is fired which happens |
|
Roger Tawa OOO till Jul 10th
2015/11/09 19:34:19
Nit: there is no default really, since callers mus
|
| + // prior to adding account to cookie. |
| + bool wait_for_account_cookies_; |
| scoped_refptr<MessageLoopRunner> message_loop_runner_; |
| }; |
| @@ -187,15 +204,15 @@ void ExecuteJsToSigninInSigninFrame(Browser* browser, |
| bool SignInWithUI(Browser* browser, |
| const std::string& username, |
| - const std::string& password) { |
| - |
| - SignInObserver signin_observer; |
| + const std::string& password, |
| + bool wait_for_account_cookies, |
| + signin_metrics::Source signin_source) { |
| + SignInObserver signin_observer(wait_for_account_cookies); |
| scoped_ptr<SigninTracker> tracker = |
| SigninTrackerFactory::CreateForProfile(browser->profile(), |
| &signin_observer); |
| - GURL signin_url = signin::GetPromoURL( |
| - signin_metrics::SOURCE_START_PAGE, false); |
| + GURL signin_url = signin::GetPromoURL(signin_source, false); |
| DVLOG(1) << "Navigating to " << signin_url; |
| // For some tests, the window is not shown yet and this might be the first tab |
| // navigation, so GetActiveWebContents() for CURRENT_TAB is NULL. That's why |
| @@ -215,4 +232,12 @@ bool SignInWithUI(Browser* browser, |
| return signin_observer.DidSignIn(); |
| } |
| +bool SignInWithUI(Browser* browser, |
| + const std::string& username, |
| + const std::string& password) { |
| + return SignInWithUI(browser, username, password, |
| + false /* wait_for_account_cookies */, |
| + signin_metrics::SOURCE_START_PAGE); |
| +} |
| + |
| } // namespace login_ui_test_utils |