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

Side by Side Diff: chrome/browser/ui/login/login_handler_browsertest.cc

Issue 2779603002: Enable blocking of subresource requests whose URLs include credentials. (Closed)
Patch Set: Tests. Created 3 years, 9 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
« no previous file with comments | « no previous file | content/child/runtime_features.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <algorithm> 5 #include <algorithm>
6 #include <list> 6 #include <list>
7 #include <map> 7 #include <map>
8 8
9 #include "base/metrics/field_trial.h" 9 #include "base/metrics/field_trial.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 965 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 } 976 }
977 977
978 EXPECT_EQ(1, observer.auth_needed_count()); 978 EXPECT_EQ(1, observer.auth_needed_count());
979 EXPECT_EQ(1, observer.auth_supplied_count()); 979 EXPECT_EQ(1, observer.auth_supplied_count());
980 EXPECT_EQ(0, observer.auth_cancelled_count()); 980 EXPECT_EQ(0, observer.auth_cancelled_count());
981 EXPECT_EQ(1, observer_incognito.auth_needed_count()); 981 EXPECT_EQ(1, observer_incognito.auth_needed_count());
982 EXPECT_EQ(0, observer_incognito.auth_supplied_count()); 982 EXPECT_EQ(0, observer_incognito.auth_supplied_count());
983 EXPECT_EQ(0, observer_incognito.auth_cancelled_count()); 983 EXPECT_EQ(0, observer_incognito.auth_cancelled_count());
984 } 984 }
985 985
986 // If an XMLHttpRequest is made with incorrect credentials, there should be no
987 // login prompt; instead the 401 status should be returned to the script.
988 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest,
989 NoLoginPromptForXHRWithBadCredentials) {
990 const char kXHRTestPage[] = "/login/xhr_with_credentials.html#incorrect";
Mike West 2017/03/27 11:58:50 Dropping both of these tests, as they rely on XHR
991
992 ASSERT_TRUE(embedded_test_server()->Start());
993
994 content::WebContents* contents =
995 browser()->tab_strip_model()->GetActiveWebContents();
996 NavigationController* controller = &contents->GetController();
997 LoginPromptBrowserTestObserver observer;
998
999 observer.Register(content::Source<NavigationController>(controller));
1000
1001 // Load a page which makes a synchronous XMLHttpRequest for an authenticated
1002 // resource with the wrong credentials. There should be no login prompt.
1003 {
1004 GURL test_page = embedded_test_server()->GetURL(kXHRTestPage);
1005 WindowedLoadStopObserver load_stop_waiter(controller, 1);
1006 browser()->OpenURL(OpenURLParams(test_page, Referrer(),
1007 WindowOpenDisposition::CURRENT_TAB,
1008 ui::PAGE_TRANSITION_TYPED, false));
1009 load_stop_waiter.Wait();
1010 }
1011
1012 base::string16 expected_title(base::UTF8ToUTF16("status=401"));
1013
1014 EXPECT_EQ(expected_title, contents->GetTitle());
1015 EXPECT_EQ(0, observer.auth_supplied_count());
1016 EXPECT_EQ(0, observer.auth_needed_count());
1017 EXPECT_EQ(0, observer.auth_cancelled_count());
1018 }
1019
1020 // If an XMLHttpRequest is made with correct credentials, there should be no
1021 // login prompt either.
1022 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest,
1023 NoLoginPromptForXHRWithGoodCredentials) {
1024 const char kXHRTestPage[] = "/login/xhr_with_credentials.html#secret";
1025
1026 ASSERT_TRUE(embedded_test_server()->Start());
1027
1028 content::WebContents* contents =
1029 browser()->tab_strip_model()->GetActiveWebContents();
1030 NavigationController* controller = &contents->GetController();
1031 LoginPromptBrowserTestObserver observer;
1032
1033 observer.Register(content::Source<NavigationController>(controller));
1034
1035 // Load a page which makes a synchronous XMLHttpRequest for an authenticated
1036 // resource with the wrong credentials. There should be no login prompt.
1037 {
1038 GURL test_page = embedded_test_server()->GetURL(kXHRTestPage);
1039 WindowedLoadStopObserver load_stop_waiter(controller, 1);
1040 browser()->OpenURL(OpenURLParams(test_page, Referrer(),
1041 WindowOpenDisposition::CURRENT_TAB,
1042 ui::PAGE_TRANSITION_TYPED, false));
1043 load_stop_waiter.Wait();
1044 }
1045
1046 base::string16 expected_title(base::UTF8ToUTF16("status=200"));
1047
1048 EXPECT_EQ(expected_title, contents->GetTitle());
1049 EXPECT_EQ(0, observer.auth_supplied_count());
1050 EXPECT_EQ(0, observer.auth_needed_count());
1051 EXPECT_EQ(0, observer.auth_cancelled_count());
1052 }
1053
1054 // If an XMLHttpRequest is made without credentials, there should be a login 986 // If an XMLHttpRequest is made without credentials, there should be a login
1055 // prompt. 987 // prompt.
1056 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, 988 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest,
1057 LoginPromptForXHRWithoutCredentials) { 989 LoginPromptForXHRWithoutCredentials) {
1058 const char kXHRTestPage[] = "/login/xhr_without_credentials.html"; 990 const char kXHRTestPage[] = "/login/xhr_without_credentials.html";
1059 991
1060 ASSERT_TRUE(embedded_test_server()->Start()); 992 ASSERT_TRUE(embedded_test_server()->Start());
1061 993
1062 content::WebContents* contents = 994 content::WebContents* contents =
1063 browser()->tab_strip_model()->GetActiveWebContents(); 995 browser()->tab_strip_model()->GetActiveWebContents();
1064 NavigationController* controller = &contents->GetController(); 996 NavigationController* controller = &contents->GetController();
1065 LoginPromptBrowserTestObserver observer; 997 LoginPromptBrowserTestObserver observer;
1066 998
1067 observer.Register(content::Source<NavigationController>(controller)); 999 observer.Register(content::Source<NavigationController>(controller));
1068 1000
1069 // Load a page which makes a synchronous XMLHttpRequest for an authenticated 1001 // Load a page which makes a synchronous XMLHttpRequest for an authenticated
1070 // resource with the wrong credentials. There should be no login prompt. 1002 // resource without credentials. There should be a login prompt.
1071 { 1003 {
1072 GURL test_page = embedded_test_server()->GetURL(kXHRTestPage); 1004 GURL test_page = embedded_test_server()->GetURL(kXHRTestPage);
1073 WindowedAuthNeededObserver auth_needed_waiter(controller); 1005 WindowedAuthNeededObserver auth_needed_waiter(controller);
1074 browser()->OpenURL(OpenURLParams(test_page, Referrer(), 1006 browser()->OpenURL(OpenURLParams(test_page, Referrer(),
1075 WindowOpenDisposition::CURRENT_TAB, 1007 WindowOpenDisposition::CURRENT_TAB,
1076 ui::PAGE_TRANSITION_TYPED, false)); 1008 ui::PAGE_TRANSITION_TYPED, false));
1077 auth_needed_waiter.Wait(); 1009 auth_needed_waiter.Wait();
1078 } 1010 }
1079 1011
1080 ASSERT_FALSE(observer.handlers().empty()); 1012 ASSERT_FALSE(observer.handlers().empty());
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
1497 // out. 1429 // out.
1498 EXPECT_TRUE( 1430 EXPECT_TRUE(
1499 WaitForRenderFrameReady(contents->GetInterstitialPage()->GetMainFrame())); 1431 WaitForRenderFrameReady(contents->GetInterstitialPage()->GetMainFrame()));
1500 EXPECT_TRUE(contents->ShowingInterstitialPage()); 1432 EXPECT_TRUE(contents->ShowingInterstitialPage());
1501 EXPECT_EQ(SSLBlockingPage::kTypeForTesting, contents->GetInterstitialPage() 1433 EXPECT_EQ(SSLBlockingPage::kTypeForTesting, contents->GetInterstitialPage()
1502 ->GetDelegateForTesting() 1434 ->GetDelegateForTesting()
1503 ->GetTypeForTesting()); 1435 ->GetTypeForTesting());
1504 } 1436 }
1505 1437
1506 } // namespace 1438 } // namespace
OLDNEW
« no previous file with comments | « no previous file | content/child/runtime_features.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698