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

Unified Diff: chrome/browser/ui/login/login_handler_browsertest.cc

Issue 2244643002: Split LoginPromptBrowserTest.TestCancelAuth (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments Created 4 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/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..7460dfb12274b8a14b4ebda920d5d4a094cd8951 100644
--- a/chrome/browser/ui/login/login_handler_browsertest.cc
+++ b/chrome/browser/ui/login/login_handler_browsertest.cc
@@ -103,6 +103,9 @@ const char kSingleRealmTestPage[] = "/login/single_realm.html";
const char kAuthBasicPage[] = "/auth-basic";
const char kAuthDigestPage[] = "/auth-digest";
+const char kNoAuthPage1[] = "/a";
+const char kNoAuthPage2[] = "/b";
+
base::string16 ExpectedTitleFromAuth(const base::string16& username,
const base::string16& password) {
// The TestServer sets the title to username/password on successful login.
@@ -317,102 +320,130 @@ 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 kAuthURL = 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));
+
+ WindowedLoadStopObserver load_stop_waiter(controller, 1);
+ WindowedAuthNeededObserver auth_needed_waiter(controller);
+ browser()->OpenURL(OpenURLParams(kAuthURL, 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();
+ 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 kAuthURL = embedded_test_server()->GetURL(kAuthBasicPage);
+ const GURL kNoAuthURL = embedded_test_server()->GetURL(kNoAuthPage1);
+
+ NavigationController* controller =
+ &browser()->tab_strip_model()->GetActiveWebContents()->GetController();
+
+ LoginPromptBrowserTestObserver observer;
+ observer.Register(content::Source<NavigationController>(controller));
+
+ // One LOAD_STOP event for kAuthURL and one for kNoAuthURL.
+ const int kLoadStopEvents = 2;
+ WindowedLoadStopObserver load_stop_waiter(controller, kLoadStopEvents);
+ WindowedAuthNeededObserver auth_needed_waiter(controller);
+ browser()->OpenURL(OpenURLParams(kAuthURL, Referrer(), CURRENT_TAB,
+ ui::PAGE_TRANSITION_TYPED, false));
+ auth_needed_waiter.Wait();
+ WindowedAuthCancelledObserver auth_cancelled_waiter(controller);
+ // Navigating while auth is requested is the same as cancelling.
+ browser()->OpenURL(OpenURLParams(kNoAuthURL, Referrer(), CURRENT_TAB,
+ ui::PAGE_TRANSITION_TYPED, false));
+ auth_cancelled_waiter.Wait();
+ load_stop_waiter.Wait();
+ EXPECT_TRUE(observer.handlers().empty());
+}
+
+// Test login prompt cancellation on navigation to back.
+IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, TestCancelAuth_OnBack) {
+ ASSERT_TRUE(embedded_test_server()->Start());
+ const GURL kAuthURL = embedded_test_server()->GetURL(kAuthBasicPage);
+ const GURL kNoAuthURL = embedded_test_server()->GetURL(kNoAuthPage1);
+
+ 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);
+ ui_test_utils::NavigateToURL(browser(), kNoAuthURL);
- // Navigating while auth is requested is the same as cancelling.
- {
- // 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);
- WindowedAuthNeededObserver auth_needed_waiter(controller);
- 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));
- auth_cancelled_waiter.Wait();
- load_stop_waiter.Wait();
- EXPECT_TRUE(observer.handlers().empty());
- }
+ // One LOAD_STOP event for kAuthURL and one for kNoAuthURL.
+ const int kLoadStopEvents = 2;
+ WindowedLoadStopObserver load_stop_waiter(controller, kLoadStopEvents);
+ WindowedAuthNeededObserver auth_needed_waiter(controller);
+ browser()->OpenURL(OpenURLParams(kAuthURL, Referrer(), CURRENT_TAB,
+ ui::PAGE_TRANSITION_TYPED, false));
+ auth_needed_waiter.Wait();
+ WindowedAuthCancelledObserver auth_cancelled_waiter(controller);
+ // Navigating back while auth is requested is the same as cancelling.
+ ASSERT_TRUE(controller->CanGoBack());
+ controller->GoBack();
+ auth_cancelled_waiter.Wait();
+ load_stop_waiter.Wait();
+ EXPECT_TRUE(observer.handlers().empty());
+}
- // Try navigating backwards.
- {
- // As above, we wait for two LOAD_STOP events; one for each navigation.
- WindowedLoadStopObserver load_stop_waiter(controller, 2);
- WindowedAuthNeededObserver auth_needed_waiter(controller);
- 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);
- 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 kAuthURL = embedded_test_server()->GetURL(kAuthBasicPage);
+ const GURL kNoAuthURL1 = embedded_test_server()->GetURL(kNoAuthPage1);
+ const GURL kNoAuthURL2 = embedded_test_server()->GetURL(kNoAuthPage2);
- // 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();
- }
+ NavigationController* controller =
+ &browser()->tab_strip_model()->GetActiveWebContents()->GetController();
- {
- // We wait for two LOAD_STOP events; one for each navigation.
- WindowedLoadStopObserver load_stop_waiter(controller, 2);
- WindowedAuthNeededObserver auth_needed_waiter(controller);
- 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
- auth_cancelled_waiter.Wait();
- load_stop_waiter.Wait();
- EXPECT_TRUE(observer.handlers().empty());
- }
+ LoginPromptBrowserTestObserver observer;
+ observer.Register(content::Source<NavigationController>(controller));
+
+ ui_test_utils::NavigateToURL(browser(), kNoAuthURL1);
- // Now test that cancelling works as expected.
+ // Now add a page and go back, so we have something to go forward to.
+ ui_test_utils::NavigateToURL(browser(), kNoAuthURL2);
{
WindowedLoadStopObserver load_stop_waiter(controller, 1);
- WindowedAuthNeededObserver auth_needed_waiter(controller);
- 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();
- auth_cancelled_waiter.Wait();
+ ASSERT_TRUE(controller->CanGoBack());
+ controller->GoBack();
load_stop_waiter.Wait();
- EXPECT_TRUE(observer.handlers().empty());
}
+
+ // One LOAD_STOP event for kAuthURL and one for kNoAuthURL.
+ const int kLoadStopEvents = 2;
+ WindowedLoadStopObserver load_stop_waiter(controller, kLoadStopEvents);
+ WindowedAuthNeededObserver auth_needed_waiter(controller);
+ browser()->OpenURL(OpenURLParams(kAuthURL, Referrer(), CURRENT_TAB,
+ ui::PAGE_TRANSITION_TYPED, false));
+ auth_needed_waiter.Wait();
+ WindowedAuthCancelledObserver auth_cancelled_waiter(controller);
+ ASSERT_TRUE(controller->CanGoForward());
+ controller->GoForward();
+ auth_cancelled_waiter.Wait();
+ load_stop_waiter.Wait();
+ EXPECT_TRUE(observer.handlers().empty());
}
// Test handling of resources that require authentication even though
« 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