Chromium Code Reviews| Index: chrome/browser/ui/login/login_handler_browsertest.cc |
| diff --git a/chrome/browser/ui/login/login_handler_browsertest.cc b/chrome/browser/ui/login/login_handler_browsertest.cc |
| index 321c7c7a7c44ed1dba0b1bbd4565d65935ce86bb..b98ab6428ce6c115b9ab44c51d67bb8978781bc3 100644 |
| --- a/chrome/browser/ui/login/login_handler_browsertest.cc |
| +++ b/chrome/browser/ui/login/login_handler_browsertest.cc |
| @@ -317,98 +317,134 @@ IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, TestTwoAuths) { |
| EXPECT_EQ(expected_title2, title_watcher2.WaitAndGetTitle()); |
| } |
| -// Test login prompt cancellation. |
| -// Flaky on Mac crbug.com/636875 |
| -IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, DISABLED_TestCancelAuth) { |
| +// Test manual login prompt cancellation. |
| +IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, TestCancelAuth_Manual) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| - GURL auth_page = embedded_test_server()->GetURL(kAuthBasicPage); |
| - GURL no_auth_page_1 = embedded_test_server()->GetURL("/a"); |
| - GURL no_auth_page_2 = embedded_test_server()->GetURL("/b"); |
| - GURL no_auth_page_3 = embedded_test_server()->GetURL("/c"); |
| + const GURL auth_page = embedded_test_server()->GetURL(kAuthBasicPage); |
| - content::WebContents* contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - NavigationController* controller = &contents->GetController(); |
| + NavigationController* controller = |
| + &browser()->tab_strip_model()->GetActiveWebContents()->GetController(); |
| LoginPromptBrowserTestObserver observer; |
| observer.Register(content::Source<NavigationController>(controller)); |
| - // First navigate to an unauthenticated page so we have something to |
| - // go back to. |
| - ui_test_utils::NavigateToURL(browser(), no_auth_page_1); |
| - |
| - // Navigating while auth is requested is the same as cancelling. |
| { |
|
meacer
2016/08/12 17:45:06
No need for braces anymore.
vabr (Chromium)
2016/08/12 19:39:37
Done.
|
| - // We need to wait for two LOAD_STOP events. One for auth_page and one for |
| - // no_auth_page_2. |
| - WindowedLoadStopObserver load_stop_waiter(controller, 2); |
| + WindowedLoadStopObserver load_stop_waiter(controller, 1); |
| WindowedAuthNeededObserver auth_needed_waiter(controller); |
| - browser()->OpenURL(OpenURLParams( |
| - auth_page, Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, |
| - false)); |
| + browser()->OpenURL(OpenURLParams(auth_page, Referrer(), CURRENT_TAB, |
| + ui::PAGE_TRANSITION_TYPED, false)); |
| auth_needed_waiter.Wait(); |
| WindowedAuthCancelledObserver auth_cancelled_waiter(controller); |
| - browser()->OpenURL(OpenURLParams( |
| - no_auth_page_2, Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, |
| - false)); |
| + LoginHandler* handler = *observer.handlers().begin(); |
| + ASSERT_TRUE(handler); |
| + handler->CancelAuth(); |
| auth_cancelled_waiter.Wait(); |
| load_stop_waiter.Wait(); |
| EXPECT_TRUE(observer.handlers().empty()); |
| } |
| +} |
| + |
| +// Test login prompt cancellation on navigation to a new page. |
| +IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, TestCancelAuth_OnNavigation) { |
| + ASSERT_TRUE(embedded_test_server()->Start()); |
| + const GURL auth_page = embedded_test_server()->GetURL(kAuthBasicPage); |
| + const GURL no_auth_page = embedded_test_server()->GetURL("/b"); |
|
meacer
2016/08/12 17:45:05
You might want to use kNoAuthPage here too, instea
vabr (Chromium)
2016/08/12 19:39:37
Done.
|
| - // Try navigating backwards. |
| + NavigationController* controller = |
| + &browser()->tab_strip_model()->GetActiveWebContents()->GetController(); |
| + |
| + LoginPromptBrowserTestObserver observer; |
| + observer.Register(content::Source<NavigationController>(controller)); |
| + |
| + // Navigating while auth is requested is the same as cancelling. |
| { |
|
meacer
2016/08/12 17:45:06
No need for braces.
vabr (Chromium)
2016/08/12 19:39:37
Done.
Also, I moved the comment from line 359 near
|
| - // As above, we wait for two LOAD_STOP events; one for each navigation. |
| - WindowedLoadStopObserver load_stop_waiter(controller, 2); |
| + // One LOAD_STOP event for auth_page and one for no_auth_page. |
| + const int kLoadStopEvents = 2; |
| + WindowedLoadStopObserver load_stop_waiter(controller, kLoadStopEvents); |
| WindowedAuthNeededObserver auth_needed_waiter(controller); |
| - browser()->OpenURL(OpenURLParams( |
| - auth_page, Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, |
| - false)); |
| + browser()->OpenURL(OpenURLParams(auth_page, Referrer(), CURRENT_TAB, |
| + ui::PAGE_TRANSITION_TYPED, false)); |
| auth_needed_waiter.Wait(); |
| WindowedAuthCancelledObserver auth_cancelled_waiter(controller); |
| - ASSERT_TRUE(chrome::CanGoBack(browser())); |
| - chrome::GoBack(browser(), CURRENT_TAB); |
| + browser()->OpenURL(OpenURLParams(no_auth_page, Referrer(), CURRENT_TAB, |
| + ui::PAGE_TRANSITION_TYPED, false)); |
| auth_cancelled_waiter.Wait(); |
| load_stop_waiter.Wait(); |
| EXPECT_TRUE(observer.handlers().empty()); |
| } |
| +} |
| - // Now add a page and go back, so we have something to go forward to. |
| - ui_test_utils::NavigateToURL(browser(), no_auth_page_3); |
| - { |
| - WindowedLoadStopObserver load_stop_waiter(controller, 1); |
| - chrome::GoBack(browser(), CURRENT_TAB); // Should take us to page 1 |
| - load_stop_waiter.Wait(); |
| - } |
| +// Test login prompt cancellation on navigation to back. |
| +IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, TestCancelAuth_OnBack) { |
| + ASSERT_TRUE(embedded_test_server()->Start()); |
| + const GURL auth_page = embedded_test_server()->GetURL(kAuthBasicPage); |
| + const GURL no_auth_page = embedded_test_server()->GetURL("/a"); |
|
meacer
2016/08/12 17:45:05
Same here (kNoAuthPage)
vabr (Chromium)
2016/08/12 19:39:37
Done.
|
| + |
| + NavigationController* controller = |
| + &browser()->tab_strip_model()->GetActiveWebContents()->GetController(); |
| + |
| + LoginPromptBrowserTestObserver observer; |
| + observer.Register(content::Source<NavigationController>(controller)); |
| + |
| + // First navigate to an unauthenticated page so we have something to |
| + // go back to. |
| + ui_test_utils::NavigateToURL(browser(), no_auth_page); |
| + // Navigating back while auth is requested is the same as cancelling. |
|
meacer
2016/08/12 17:45:06
nit: No braces
vabr (Chromium)
2016/08/12 19:39:37
Done.
|
| { |
| - // We wait for two LOAD_STOP events; one for each navigation. |
| - WindowedLoadStopObserver load_stop_waiter(controller, 2); |
| + // One LOAD_STOP event for auth_page and one for no_auth_page. |
| + const int kLoadStopEvents = 2; |
| + WindowedLoadStopObserver load_stop_waiter(controller, kLoadStopEvents); |
| WindowedAuthNeededObserver auth_needed_waiter(controller); |
| - browser()->OpenURL(OpenURLParams( |
| - auth_page, Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, |
| - false)); |
| + browser()->OpenURL(OpenURLParams(auth_page, Referrer(), CURRENT_TAB, |
| + ui::PAGE_TRANSITION_TYPED, false)); |
| auth_needed_waiter.Wait(); |
| WindowedAuthCancelledObserver auth_cancelled_waiter(controller); |
| - ASSERT_TRUE(chrome::CanGoForward(browser())); |
| - chrome::GoForward(browser(), CURRENT_TAB); // Should take us to page 3 |
| + ASSERT_TRUE(controller->CanGoBack()); |
| + controller->GoBack(); |
| auth_cancelled_waiter.Wait(); |
| load_stop_waiter.Wait(); |
| EXPECT_TRUE(observer.handlers().empty()); |
| } |
| +} |
| + |
| +// Test login prompt cancellation on navigation to forward. |
| +// TODO(crbug.com/636875) Flaky on Mac and Linux at least. |
| +IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, |
| + DISABLED_TestCancelAuth_OnForward) { |
| + ASSERT_TRUE(embedded_test_server()->Start()); |
| + const GURL auth_page = embedded_test_server()->GetURL(kAuthBasicPage); |
| + const GURL no_auth_page_1 = embedded_test_server()->GetURL("/a"); |
|
meacer
2016/08/12 17:45:06
nit: Seems like these could be named kNoAuthURL1 a
vabr (Chromium)
2016/08/12 19:39:37
Done.
|
| + const GURL no_auth_page_2 = embedded_test_server()->GetURL("/c"); |
|
meacer
2016/08/12 17:45:06
And here.
vabr (Chromium)
2016/08/12 19:39:37
Done.
|
| + |
| + NavigationController* controller = |
| + &browser()->tab_strip_model()->GetActiveWebContents()->GetController(); |
| - // Now test that cancelling works as expected. |
| + LoginPromptBrowserTestObserver observer; |
| + observer.Register(content::Source<NavigationController>(controller)); |
| + |
| + ui_test_utils::NavigateToURL(browser(), no_auth_page_1); |
| + |
| + // Now add a page and go back, so we have something to go forward to. |
| + ui_test_utils::NavigateToURL(browser(), no_auth_page_2); |
| { |
| WindowedLoadStopObserver load_stop_waiter(controller, 1); |
| + ASSERT_TRUE(controller->CanGoBack()); |
| + controller->GoBack(); |
| + load_stop_waiter.Wait(); |
| + } |
| + |
| + { |
| + // One LOAD_STOP event for auth_page and one for no_auth_page. |
| + const int kLoadStopEvents = 2; |
| + WindowedLoadStopObserver load_stop_waiter(controller, kLoadStopEvents); |
| WindowedAuthNeededObserver auth_needed_waiter(controller); |
| - browser()->OpenURL(OpenURLParams( |
| - auth_page, Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, |
| - false)); |
| + browser()->OpenURL(OpenURLParams(auth_page, Referrer(), CURRENT_TAB, |
| + ui::PAGE_TRANSITION_TYPED, false)); |
| auth_needed_waiter.Wait(); |
| WindowedAuthCancelledObserver auth_cancelled_waiter(controller); |
| - LoginHandler* handler = *observer.handlers().begin(); |
| - ASSERT_TRUE(handler); |
| - handler->CancelAuth(); |
| + ASSERT_TRUE(controller->CanGoForward()); |
| + controller->GoForward(); |
| auth_cancelled_waiter.Wait(); |
| load_stop_waiter.Wait(); |
| EXPECT_TRUE(observer.handlers().empty()); |