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

Side by Side Diff: chrome/browser/chromeos/login/signin/oauth2_browsertest.cc

Issue 1083683003: Speculative revert by sheriff (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed an unrelated commit that had accidentally slipped in. Created 5 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string> 5 #include <string>
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/prefs/pref_service.h" 8 #include "base/prefs/pref_service.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "base/synchronization/waitable_event.h" 10 #include "base/synchronization/waitable_event.h"
11 #include "chrome/browser/browser_process.h" 11 #include "chrome/browser/browser_process.h"
12 #include "chrome/browser/chrome_notification_types.h" 12 #include "chrome/browser/chrome_notification_types.h"
13 #include "chrome/browser/chromeos/login/signin/oauth2_login_manager.h" 13 #include "chrome/browser/chromeos/login/signin/oauth2_login_manager.h"
14 #include "chrome/browser/chromeos/login/signin/oauth2_login_manager_factory.h" 14 #include "chrome/browser/chromeos/login/signin/oauth2_login_manager_factory.h"
15 #include "chrome/browser/chromeos/login/signin_specifics.h" 15 #include "chrome/browser/chromeos/login/signin_specifics.h"
16 #include "chrome/browser/chromeos/login/startup_utils.h"
17 #include "chrome/browser/chromeos/login/test/oobe_base_test.h" 16 #include "chrome/browser/chromeos/login/test/oobe_base_test.h"
18 #include "chrome/browser/chromeos/login/wizard_controller.h" 17 #include "chrome/browser/chromeos/login/wizard_controller.h"
19 #include "chrome/browser/profiles/profile_manager.h" 18 #include "chrome/browser/profiles/profile_manager.h"
20 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 19 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
21 #include "chrome/browser/ui/browser.h" 20 #include "chrome/browser/ui/browser.h"
22 #include "chrome/browser/ui/browser_tabstrip.h" 21 #include "chrome/browser/ui/browser_tabstrip.h"
23 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" 22 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h"
24 #include "chrome/browser/ui/tabs/tab_strip_model.h" 23 #include "chrome/browser/ui/tabs/tab_strip_model.h"
25 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" 24 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
26 #include "chrome/common/chrome_switches.h" 25 #include "chrome/common/chrome_switches.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 std::set<OAuth2LoginManager::SessionRestoreState> states_; 123 std::set<OAuth2LoginManager::SessionRestoreState> states_;
125 bool waiting_for_state_; 124 bool waiting_for_state_;
126 OAuth2LoginManager::SessionRestoreState final_state_; 125 OAuth2LoginManager::SessionRestoreState final_state_;
127 scoped_refptr<content::MessageLoopRunner> runner_; 126 scoped_refptr<content::MessageLoopRunner> runner_;
128 127
129 DISALLOW_COPY_AND_ASSIGN(OAuth2LoginManagerStateWaiter); 128 DISALLOW_COPY_AND_ASSIGN(OAuth2LoginManagerStateWaiter);
130 }; 129 };
131 130
132 } // namespace 131 } // namespace
133 132
134 // Boolean parameter is used to run this test for webview (true) and for 133 class OAuth2Test : public OobeBaseTest {
135 // iframe (false) GAIA sign in.
136 class OAuth2Test : public OobeBaseTest,
137 public testing::WithParamInterface<bool> {
138 protected: 134 protected:
139 OAuth2Test() { set_use_webview(GetParam()); } 135 OAuth2Test() {}
140 136
141 void SetUpCommandLine(base::CommandLine* command_line) override { 137 void SetUpCommandLine(base::CommandLine* command_line) override {
142 OobeBaseTest::SetUpCommandLine(command_line); 138 OobeBaseTest::SetUpCommandLine(command_line);
143 139
144 // Disable sync sinc we don't really need this for these tests and it also 140 // Disable sync sinc we don't really need this for these tests and it also
145 // makes OAuth2Test.MergeSession test flaky http://crbug.com/408867. 141 // makes OAuth2Test.MergeSession test flaky http://crbug.com/408867.
146 command_line->AppendSwitch(switches::kDisableSync); 142 command_line->AppendSwitch(switches::kDisableSync);
147 } 143 }
148 144
149 void SetupGaiaServerForNewAccount() { 145 void SetupGaiaServerForNewAccount() {
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 states.insert(OAuth2LoginManager::SESSION_RESTORE_FAILED); 320 states.insert(OAuth2LoginManager::SESSION_RESTORE_FAILED);
325 states.insert(OAuth2LoginManager::SESSION_RESTORE_CONNECTION_FAILED); 321 states.insert(OAuth2LoginManager::SESSION_RESTORE_CONNECTION_FAILED);
326 OAuth2LoginManagerStateWaiter merge_session_waiter(profile()); 322 OAuth2LoginManagerStateWaiter merge_session_waiter(profile());
327 merge_session_waiter.WaitForStates(states); 323 merge_session_waiter.WaitForStates(states);
328 EXPECT_EQ(merge_session_waiter.final_state(), final_state); 324 EXPECT_EQ(merge_session_waiter.final_state(), final_state);
329 } 325 }
330 326
331 void StartNewUserSession(bool wait_for_merge) { 327 void StartNewUserSession(bool wait_for_merge) {
332 SetupGaiaServerForNewAccount(); 328 SetupGaiaServerForNewAccount();
333 SimulateNetworkOnline(); 329 SimulateNetworkOnline();
334 WaitForGaiaPageLoad(); 330 chromeos::WizardController::SkipPostLoginScreensForTesting();
331 chromeos::WizardController* wizard_controller =
332 chromeos::WizardController::default_controller();
333 wizard_controller->SkipToLoginForTesting(LoginScreenContext());
335 334
336 content::WindowedNotificationObserver session_start_waiter( 335 content::WindowedNotificationObserver(
337 chrome::NOTIFICATION_SESSION_STARTED, 336 chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE,
338 content::NotificationService::AllSources()); 337 content::NotificationService::AllSources()).Wait();
339 338
340 // Use capitalized and dotted user name on purpose to make sure 339 // Use capitalized and dotted user name on purpose to make sure
341 // our email normalization kicks in. 340 // our email normalization kicks in.
342 GetLoginDisplay()->ShowSigninScreenForCreds(kTestRawAccountId, 341 GetLoginDisplay()->ShowSigninScreenForCreds(kTestRawAccountId,
343 kTestAccountPassword); 342 kTestAccountPassword);
344 session_start_waiter.Wait(); 343
344 content::WindowedNotificationObserver(
345 chrome::NOTIFICATION_SESSION_STARTED,
346 content::NotificationService::AllSources()).Wait();
345 347
346 if (wait_for_merge) { 348 if (wait_for_merge) {
347 // Wait for the session merge to finish. 349 // Wait for the session merge to finish.
348 WaitForMergeSessionCompletion(OAuth2LoginManager::SESSION_RESTORE_DONE); 350 WaitForMergeSessionCompletion(OAuth2LoginManager::SESSION_RESTORE_DONE);
349 } 351 }
350 } 352 }
351 353
352 DISALLOW_COPY_AND_ASSIGN(OAuth2Test); 354 DISALLOW_COPY_AND_ASSIGN(OAuth2Test);
353 }; 355 };
354 356
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 } 407 }
406 408
407 scoped_refptr<net::URLRequestContextGetter> context_; 409 scoped_refptr<net::URLRequestContextGetter> context_;
408 net::CookieList cookie_list_; 410 net::CookieList cookie_list_;
409 scoped_refptr<content::MessageLoopRunner> runner_; 411 scoped_refptr<content::MessageLoopRunner> runner_;
410 412
411 DISALLOW_COPY_AND_ASSIGN(CookieReader); 413 DISALLOW_COPY_AND_ASSIGN(CookieReader);
412 }; 414 };
413 415
414 // PRE_MergeSession is testing merge session for a new profile. 416 // PRE_MergeSession is testing merge session for a new profile.
415 IN_PROC_BROWSER_TEST_P(OAuth2Test, PRE_PRE_PRE_MergeSession) { 417 IN_PROC_BROWSER_TEST_F(OAuth2Test, PRE_PRE_PRE_MergeSession) {
416 StartNewUserSession(true); 418 StartNewUserSession(true);
417 // Check for existance of refresh token. 419 // Check for existance of refresh token.
418 ProfileOAuth2TokenService* token_service = 420 ProfileOAuth2TokenService* token_service =
419 ProfileOAuth2TokenServiceFactory::GetForProfile( 421 ProfileOAuth2TokenServiceFactory::GetForProfile(
420 profile()); 422 profile());
421 EXPECT_TRUE(token_service->RefreshTokenIsAvailable(kTestAccountId)); 423 EXPECT_TRUE(token_service->RefreshTokenIsAvailable(kTestAccountId));
422 424
423 EXPECT_EQ(GetOAuthStatusFromLocalState(kTestAccountId), 425 EXPECT_EQ(GetOAuthStatusFromLocalState(kTestAccountId),
424 user_manager::User::OAUTH2_TOKEN_STATUS_VALID); 426 user_manager::User::OAUTH2_TOKEN_STATUS_VALID);
427
425 scoped_refptr<CookieReader> cookie_reader(new CookieReader()); 428 scoped_refptr<CookieReader> cookie_reader(new CookieReader());
426 cookie_reader->ReadCookies(profile()); 429 cookie_reader->ReadCookies(profile());
427 EXPECT_EQ(cookie_reader->GetCookieValue("SID"), kTestSessionSIDCookie); 430 EXPECT_EQ(cookie_reader->GetCookieValue("SID"), kTestSessionSIDCookie);
428 EXPECT_EQ(cookie_reader->GetCookieValue("LSID"), kTestSessionLSIDCookie); 431 EXPECT_EQ(cookie_reader->GetCookieValue("LSID"), kTestSessionLSIDCookie);
429 } 432 }
430 433
431 // MergeSession test is running merge session process for an existing profile 434 // MergeSession test is running merge session process for an existing profile
432 // that was generated in PRE_PRE_PRE_MergeSession test. In this test, we 435 // that was generated in PRE_PRE_PRE_MergeSession test. In this test, we
433 // are not running /MergeSession process since the /ListAccounts call confirms 436 // are not running /MergeSession process since the /ListAccounts call confirms
434 // that the session is not stale. 437 // that the session is not stale.
435 IN_PROC_BROWSER_TEST_P(OAuth2Test, PRE_PRE_MergeSession) { 438 IN_PROC_BROWSER_TEST_F(OAuth2Test, PRE_PRE_MergeSession) {
436 SetupGaiaServerForUnexpiredAccount(); 439 SetupGaiaServerForUnexpiredAccount();
437 SimulateNetworkOnline(); 440 SimulateNetworkOnline();
438 LoginAsExistingUser(); 441 LoginAsExistingUser();
439 scoped_refptr<CookieReader> cookie_reader(new CookieReader()); 442 scoped_refptr<CookieReader> cookie_reader(new CookieReader());
440 cookie_reader->ReadCookies(profile()); 443 cookie_reader->ReadCookies(profile());
441 // These are still cookie values form the initial session since 444 // These are still cookie values form the initial session since
442 // /ListAccounts 445 // /ListAccounts
443 EXPECT_EQ(cookie_reader->GetCookieValue("SID"), kTestSessionSIDCookie); 446 EXPECT_EQ(cookie_reader->GetCookieValue("SID"), kTestSessionSIDCookie);
444 EXPECT_EQ(cookie_reader->GetCookieValue("LSID"), kTestSessionLSIDCookie); 447 EXPECT_EQ(cookie_reader->GetCookieValue("LSID"), kTestSessionLSIDCookie);
445 } 448 }
446 449
447 // MergeSession test is running merge session process for an existing profile 450 // MergeSession test is running merge session process for an existing profile
448 // that was generated in PRE_PRE_MergeSession test. 451 // that was generated in PRE_PRE_MergeSession test.
449 IN_PROC_BROWSER_TEST_P(OAuth2Test, PRE_MergeSession) { 452 IN_PROC_BROWSER_TEST_F(OAuth2Test, PRE_MergeSession) {
450 SetupGaiaServerForExpiredAccount(); 453 SetupGaiaServerForExpiredAccount();
451 SimulateNetworkOnline(); 454 SimulateNetworkOnline();
452 LoginAsExistingUser(); 455 LoginAsExistingUser();
453 scoped_refptr<CookieReader> cookie_reader(new CookieReader()); 456 scoped_refptr<CookieReader> cookie_reader(new CookieReader());
454 cookie_reader->ReadCookies(profile()); 457 cookie_reader->ReadCookies(profile());
455 // These should be cookie values that we generated by calling /MergeSession, 458 // These should be cookie values that we generated by calling /MergeSession,
456 // since /ListAccounts should have tell us that the initial session cookies 459 // since /ListAccounts should have tell us that the initial session cookies
457 // are stale. 460 // are stale.
458 EXPECT_EQ(cookie_reader->GetCookieValue("SID"), kTestSession2SIDCookie); 461 EXPECT_EQ(cookie_reader->GetCookieValue("SID"), kTestSession2SIDCookie);
459 EXPECT_EQ(cookie_reader->GetCookieValue("LSID"), kTestSession2LSIDCookie); 462 EXPECT_EQ(cookie_reader->GetCookieValue("LSID"), kTestSession2LSIDCookie);
460 } 463 }
461 464
462 // MergeSession test is attempting to merge session for an existing profile 465 // MergeSession test is attempting to merge session for an existing profile
463 // that was generated in PRE_PRE_MergeSession test. This attempt should fail 466 // that was generated in PRE_PRE_MergeSession test. This attempt should fail
464 // since FakeGaia instance isn't configured to return relevant tokens/cookies. 467 // since FakeGaia instance isn't configured to return relevant tokens/cookies.
465 IN_PROC_BROWSER_TEST_P(OAuth2Test, MergeSession) { 468 IN_PROC_BROWSER_TEST_F(OAuth2Test, MergeSession) {
466 SimulateNetworkOnline(); 469 SimulateNetworkOnline();
467 470
468 content::WindowedNotificationObserver( 471 content::WindowedNotificationObserver(
469 chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE, 472 chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE,
470 content::NotificationService::AllSources()).Wait(); 473 content::NotificationService::AllSources()).Wait();
471 474
472 JsExpect("!!document.querySelector('#account-picker')"); 475 JsExpect("!!document.querySelector('#account-picker')");
473 JsExpect("!!document.querySelector('#pod-row')"); 476 JsExpect("!!document.querySelector('#pod-row')");
474 477
475 EXPECT_EQ(GetOAuthStatusFromLocalState(kTestAccountId), 478 EXPECT_EQ(GetOAuthStatusFromLocalState(kTestAccountId),
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 http_response->set_content_type("text/html"); 528 http_response->set_content_type("text/html");
526 http_response->set_content(kRandomPageContent); 529 http_response->set_content(kRandomPageContent);
527 } else { 530 } else {
528 return scoped_ptr<HttpResponse>(); // Request not understood. 531 return scoped_ptr<HttpResponse>(); // Request not understood.
529 } 532 }
530 533
531 return http_response.Pass(); 534 return http_response.Pass();
532 } 535 }
533 536
534 // True if we have already served the test page. 537 // True if we have already served the test page.
535 bool IsPageRequested() { return start_event_.IsSignaled(); } 538 bool IsPageRequested () {
539 return start_event_.IsSignaled();
540 }
536 541
537 // Waits until we receive a request to serve the test page. 542 // Waits until we receive a request to serve the test page.
538 void WaitForPageRequest() { 543 void WaitForPageRequest() {
539 // If we have already served the request, bail out. 544 // If we have already served the request, bail out.
540 if (start_event_.IsSignaled()) 545 if (start_event_.IsSignaled())
541 return; 546 return;
542 547
543 runner_ = new content::MessageLoopRunner; 548 runner_ = new content::MessageLoopRunner;
544 runner_->Run(); 549 runner_->Run();
545 } 550 }
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 692
688 Browser* FindOrCreateVisibleBrowser(Profile* profile) { 693 Browser* FindOrCreateVisibleBrowser(Profile* profile) {
689 chrome::ScopedTabbedBrowserDisplayer displayer( 694 chrome::ScopedTabbedBrowserDisplayer displayer(
690 profile, chrome::GetActiveDesktop()); 695 profile, chrome::GetActiveDesktop());
691 Browser* browser = displayer.browser(); 696 Browser* browser = displayer.browser();
692 if (browser->tab_strip_model()->count() == 0) 697 if (browser->tab_strip_model()->count() == 0)
693 chrome::AddTabAt(browser, GURL(), -1, true); 698 chrome::AddTabAt(browser, GURL(), -1, true);
694 return browser; 699 return browser;
695 } 700 }
696 701
697 IN_PROC_BROWSER_TEST_P(MergeSessionTest, PageThrottle) { 702 IN_PROC_BROWSER_TEST_F(MergeSessionTest, PageThrottle) {
698 StartNewUserSession(false); 703 StartNewUserSession(false);
699 704
700 // Try to open a page from google.com. 705 // Try to open a page from google.com.
701 Browser* browser = 706 Browser* browser =
702 FindOrCreateVisibleBrowser(profile()); 707 FindOrCreateVisibleBrowser(profile());
703 ui_test_utils::NavigateToURLWithDisposition( 708 ui_test_utils::NavigateToURLWithDisposition(
704 browser, 709 browser,
705 fake_google_page_url_, 710 fake_google_page_url_,
706 CURRENT_TAB, ui_test_utils::BROWSER_TEST_NONE); 711 CURRENT_TAB, ui_test_utils::BROWSER_TEST_NONE);
707 712
(...skipping 22 matching lines...) Expand all
730 AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog(); 735 AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog();
731 ASSERT_TRUE(dialog->IsJavaScriptModalDialog()); 736 ASSERT_TRUE(dialog->IsJavaScriptModalDialog());
732 JavaScriptAppModalDialog* js_dialog = 737 JavaScriptAppModalDialog* js_dialog =
733 static_cast<JavaScriptAppModalDialog*>(dialog); 738 static_cast<JavaScriptAppModalDialog*>(dialog);
734 js_dialog->native_dialog()->AcceptAppModalDialog(); 739 js_dialog->native_dialog()->AcceptAppModalDialog();
735 740
736 ui_test_utils::GetCurrentTabTitle(browser, &title); 741 ui_test_utils::GetCurrentTabTitle(browser, &title);
737 DVLOG(1) << "Loaded page at the end : " << title; 742 DVLOG(1) << "Loaded page at the end : " << title;
738 } 743 }
739 744
740 IN_PROC_BROWSER_TEST_P(MergeSessionTest, XHRThrottle) { 745 IN_PROC_BROWSER_TEST_F(MergeSessionTest, XHRThrottle) {
741 StartNewUserSession(false); 746 StartNewUserSession(false);
742 747
743 // Wait until we get send merge session request. 748 // Wait until we get send merge session request.
744 WaitForMergeSessionToStart(); 749 WaitForMergeSessionToStart();
745 750
746 // Reset ExtensionBrowserTest::observer_ to the right browser object. 751 // Reset ExtensionBrowserTest::observer_ to the right browser object.
747 Browser* browser = FindOrCreateVisibleBrowser(profile()); 752 Browser* browser = FindOrCreateVisibleBrowser(profile());
748 observer_.reset(new ExtensionTestNotificationObserver(browser)); 753 observer_.reset(new ExtensionTestNotificationObserver(browser));
749 754
750 // Run background page tests. The tests will just wait for XHR request 755 // Run background page tests. The tests will just wait for XHR request
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 ASSERT_TRUE(non_google_xhr_listener->WaitUntilSatisfied()); 789 ASSERT_TRUE(non_google_xhr_listener->WaitUntilSatisfied());
785 790
786 if (!catcher.GetNextResult()) { 791 if (!catcher.GetNextResult()) {
787 std::string message = catcher.message(); 792 std::string message = catcher.message();
788 ADD_FAILURE() << "Tests failed: " << message; 793 ADD_FAILURE() << "Tests failed: " << message;
789 } 794 }
790 795
791 EXPECT_TRUE(fake_google_.IsPageRequested()); 796 EXPECT_TRUE(fake_google_.IsPageRequested());
792 } 797 }
793 798
794 INSTANTIATE_TEST_CASE_P(OAuth2Suite, OAuth2Test, testing::Bool());
795 INSTANTIATE_TEST_CASE_P(MergeSessionSuite, MergeSessionTest, testing::Bool());
796
797 } // namespace chromeos 799 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/session/user_session_manager.cc ('k') | chrome/browser/chromeos/login/startup_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698