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

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

Issue 17738004: Apply cross-origin auth prompt blocking to image resources only. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Even simpler implementation using load flags. Created 7 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/test/data/login/load_iframe_from_b.html » ('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/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/prerender/prerender_manager.h" 10 #include "chrome/browser/prerender/prerender_manager.h"
(...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 746
747 load_stop_waiter.Wait(); 747 load_stop_waiter.Wait();
748 } 748 }
749 749
750 EXPECT_EQ(0, observer.auth_supplied_count_); 750 EXPECT_EQ(0, observer.auth_supplied_count_);
751 EXPECT_EQ(1, observer.auth_needed_count_); 751 EXPECT_EQ(1, observer.auth_needed_count_);
752 EXPECT_EQ(1, observer.auth_cancelled_count_); 752 EXPECT_EQ(1, observer.auth_cancelled_count_);
753 EXPECT_TRUE(test_server()->Stop()); 753 EXPECT_TRUE(test_server()->Stop());
754 } 754 }
755 755
756 // Block crossdomain subresource login prompting as a phishing defense. 756 // Block crossdomain image login prompting as a phishing defense.
757 // Disabled per http://crbug.com/174179.
758 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, 757 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest,
759 DISABLED_BlockCrossdomainPrompt) { 758 BlockCrossdomainPrompt) {
760 const char* kTestPage = "files/login/load_img_from_b.html"; 759 const char* kTestPage = "files/login/load_img_from_b.html";
761 760
762 host_resolver()->AddRule("www.a.com", "127.0.0.1"); 761 host_resolver()->AddRule("www.a.com", "127.0.0.1");
763 host_resolver()->AddRule("www.b.com", "127.0.0.1"); 762 host_resolver()->AddRule("www.b.com", "127.0.0.1");
764 ASSERT_TRUE(test_server()->Start()); 763 ASSERT_TRUE(test_server()->Start());
765 764
766 content::WebContents* contents = 765 content::WebContents* contents =
767 browser()->tab_strip_model()->GetActiveWebContents(); 766 browser()->tab_strip_model()->GetActiveWebContents();
768 NavigationController* controller = &contents->GetController(); 767 NavigationController* controller = &contents->GetController();
769 LoginPromptBrowserTestObserver observer; 768 LoginPromptBrowserTestObserver observer;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 ASSERT_TRUE(handler); 817 ASSERT_TRUE(handler);
819 handler->CancelAuth(); 818 handler->CancelAuth();
820 auth_cancelled_waiter.Wait(); 819 auth_cancelled_waiter.Wait();
821 } 820 }
822 } 821 }
823 822
824 EXPECT_EQ(1, observer.auth_needed_count_); 823 EXPECT_EQ(1, observer.auth_needed_count_);
825 EXPECT_TRUE(test_server()->Stop()); 824 EXPECT_TRUE(test_server()->Stop());
826 } 825 }
827 826
827 // Allow crossdomain iframe login prompting despite the above.
828 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest,
829 AllowCrossdomainPrompt) {
830 const char* kTestPage = "files/login/load_iframe_from_b.html";
831
832 host_resolver()->AddRule("www.a.com", "127.0.0.1");
833 host_resolver()->AddRule("www.b.com", "127.0.0.1");
834 ASSERT_TRUE(test_server()->Start());
835
836 content::WebContents* contents =
837 browser()->tab_strip_model()->GetActiveWebContents();
838 NavigationController* controller = &contents->GetController();
839 LoginPromptBrowserTestObserver observer;
840 observer.Register(content::Source<NavigationController>(controller));
841
842 // Load a page that has a cross-domain iframe authentication.
843 {
844 GURL test_page = test_server()->GetURL(kTestPage);
845 ASSERT_EQ("127.0.0.1", test_page.host());
846
847 // Change the host from 127.0.0.1 to www.a.com so that when the
848 // page tries to load from b, it will be cross-origin.
849 std::string new_host("www.a.com");
850 GURL::Replacements replacements;
851 replacements.SetHostStr(new_host);
852 test_page = test_page.ReplaceComponents(replacements);
853
854 WindowedAuthNeededObserver auth_needed_waiter(controller);
855 browser()->OpenURL(OpenURLParams(
856 test_page, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED,
857 false));
858 auth_needed_waiter.Wait();
859 ASSERT_EQ(1u, observer.handlers_.size());
860
861 while (!observer.handlers_.empty()) {
862 WindowedAuthCancelledObserver auth_cancelled_waiter(controller);
863 LoginHandler* handler = *observer.handlers_.begin();
864
865 ASSERT_TRUE(handler);
866 handler->CancelAuth();
867 auth_cancelled_waiter.Wait();
868 }
869 }
870
871 EXPECT_EQ(1, observer.auth_needed_count_);
872 EXPECT_TRUE(test_server()->Stop());
873 }
874
828 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, SupplyRedundantAuths) { 875 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, SupplyRedundantAuths) {
829 ASSERT_TRUE(test_server()->Start()); 876 ASSERT_TRUE(test_server()->Start());
830 877
831 // Get NavigationController for tab 1. 878 // Get NavigationController for tab 1.
832 content::WebContents* contents_1 = 879 content::WebContents* contents_1 =
833 browser()->tab_strip_model()->GetActiveWebContents(); 880 browser()->tab_strip_model()->GetActiveWebContents();
834 NavigationController* controller_1 = &contents_1->GetController(); 881 NavigationController* controller_1 = &contents_1->GetController();
835 882
836 // Open a new tab. 883 // Open a new tab.
837 ui_test_utils::NavigateToURLWithDisposition( 884 ui_test_utils::NavigateToURLWithDisposition(
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
1020 EXPECT_EQ(1, observer.auth_needed_count_); 1067 EXPECT_EQ(1, observer.auth_needed_count_);
1021 EXPECT_EQ(1, observer.auth_supplied_count_); 1068 EXPECT_EQ(1, observer.auth_supplied_count_);
1022 EXPECT_EQ(0, observer.auth_cancelled_count_); 1069 EXPECT_EQ(0, observer.auth_cancelled_count_);
1023 EXPECT_EQ(1, observer_incognito.auth_needed_count_); 1070 EXPECT_EQ(1, observer_incognito.auth_needed_count_);
1024 EXPECT_EQ(0, observer_incognito.auth_supplied_count_); 1071 EXPECT_EQ(0, observer_incognito.auth_supplied_count_);
1025 EXPECT_EQ(0, observer_incognito.auth_cancelled_count_); 1072 EXPECT_EQ(0, observer_incognito.auth_cancelled_count_);
1026 EXPECT_TRUE(test_server()->Stop()); 1073 EXPECT_TRUE(test_server()->Stop());
1027 } 1074 }
1028 1075
1029 } // namespace 1076 } // namespace
OLDNEW
« no previous file with comments | « no previous file | chrome/test/data/login/load_iframe_from_b.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698