| 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 73b3b613b137c1c6f8fa60c148204f1d9d112f6a..aea1ff04ec2a016eb2e0905436a0b6057c07901c 100644
|
| --- a/chrome/browser/ui/login/login_handler_browsertest.cc
|
| +++ b/chrome/browser/ui/login/login_handler_browsertest.cc
|
| @@ -985,6 +985,74 @@ IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest,
|
| EXPECT_EQ(0, observer_incognito.auth_cancelled_count());
|
| }
|
|
|
| +// If an XMLHttpRequest is made with incorrect credentials, there should be no
|
| +// login prompt; instead the 401 status should be returned to the script.
|
| +IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest,
|
| + NoLoginPromptForXHRWithBadCredentials) {
|
| + const char kXHRTestPage[] = "/login/xhr_with_credentials.html#incorrect";
|
| +
|
| + ASSERT_TRUE(embedded_test_server()->Start());
|
| +
|
| + content::WebContents* contents =
|
| + browser()->tab_strip_model()->GetActiveWebContents();
|
| + NavigationController* controller = &contents->GetController();
|
| + LoginPromptBrowserTestObserver observer;
|
| +
|
| + observer.Register(content::Source<NavigationController>(controller));
|
| +
|
| + // Load a page which makes a synchronous XMLHttpRequest for an authenticated
|
| + // resource with the wrong credentials. There should be no login prompt.
|
| + {
|
| + GURL test_page = embedded_test_server()->GetURL(kXHRTestPage);
|
| + WindowedLoadStopObserver load_stop_waiter(controller, 1);
|
| + browser()->OpenURL(OpenURLParams(test_page, Referrer(),
|
| + WindowOpenDisposition::CURRENT_TAB,
|
| + ui::PAGE_TRANSITION_TYPED, false));
|
| + load_stop_waiter.Wait();
|
| + }
|
| +
|
| + base::string16 expected_title(base::UTF8ToUTF16("status=401"));
|
| +
|
| + EXPECT_EQ(expected_title, contents->GetTitle());
|
| + EXPECT_EQ(0, observer.auth_supplied_count());
|
| + EXPECT_EQ(0, observer.auth_needed_count());
|
| + EXPECT_EQ(0, observer.auth_cancelled_count());
|
| +}
|
| +
|
| +// If an XMLHttpRequest is made with correct credentials, there should be no
|
| +// login prompt either.
|
| +IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest,
|
| + NoLoginPromptForXHRWithGoodCredentials) {
|
| + const char kXHRTestPage[] = "/login/xhr_with_credentials.html#secret";
|
| +
|
| + ASSERT_TRUE(embedded_test_server()->Start());
|
| +
|
| + content::WebContents* contents =
|
| + browser()->tab_strip_model()->GetActiveWebContents();
|
| + NavigationController* controller = &contents->GetController();
|
| + LoginPromptBrowserTestObserver observer;
|
| +
|
| + observer.Register(content::Source<NavigationController>(controller));
|
| +
|
| + // Load a page which makes a synchronous XMLHttpRequest for an authenticated
|
| + // resource with the wrong credentials. There should be no login prompt.
|
| + {
|
| + GURL test_page = embedded_test_server()->GetURL(kXHRTestPage);
|
| + WindowedLoadStopObserver load_stop_waiter(controller, 1);
|
| + browser()->OpenURL(OpenURLParams(test_page, Referrer(),
|
| + WindowOpenDisposition::CURRENT_TAB,
|
| + ui::PAGE_TRANSITION_TYPED, false));
|
| + load_stop_waiter.Wait();
|
| + }
|
| +
|
| + base::string16 expected_title(base::UTF8ToUTF16("status=200"));
|
| +
|
| + EXPECT_EQ(expected_title, contents->GetTitle());
|
| + EXPECT_EQ(0, observer.auth_supplied_count());
|
| + EXPECT_EQ(0, observer.auth_needed_count());
|
| + EXPECT_EQ(0, observer.auth_cancelled_count());
|
| +}
|
| +
|
| // If an XMLHttpRequest is made without credentials, there should be a login
|
| // prompt.
|
| IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest,
|
| @@ -1001,7 +1069,7 @@ IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest,
|
| observer.Register(content::Source<NavigationController>(controller));
|
|
|
| // Load a page which makes a synchronous XMLHttpRequest for an authenticated
|
| - // resource without credentials. There should be a login prompt.
|
| + // resource with the wrong credentials. There should be no login prompt.
|
| {
|
| GURL test_page = embedded_test_server()->GetURL(kXHRTestPage);
|
| WindowedAuthNeededObserver auth_needed_waiter(controller);
|
|
|