| OLD | NEW |
| 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 643 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 654 observer.Register(content::Source<NavigationController>(controller)); | 654 observer.Register(content::Source<NavigationController>(controller)); |
| 655 | 655 |
| 656 // Load a page that has a cross-domain sub-resource authentication. | 656 // Load a page that has a cross-domain sub-resource authentication. |
| 657 // There should be no login prompt. | 657 // There should be no login prompt. |
| 658 { | 658 { |
| 659 GURL test_page = test_server()->GetURL(kTestPage); | 659 GURL test_page = test_server()->GetURL(kTestPage); |
| 660 ASSERT_EQ("127.0.0.1", test_page.host()); | 660 ASSERT_EQ("127.0.0.1", test_page.host()); |
| 661 | 661 |
| 662 // Change the host from 127.0.0.1 to www.a.com so that when the | 662 // Change the host from 127.0.0.1 to www.a.com so that when the |
| 663 // page tries to load from b, it will be cross-origin. | 663 // page tries to load from b, it will be cross-origin. |
| 664 std::string new_host("www.a.com"); | |
| 665 GURL::Replacements replacements; | 664 GURL::Replacements replacements; |
| 666 replacements.SetHostStr(new_host); | 665 replacements.SetHostStr("www.a.com"); |
| 667 test_page = test_page.ReplaceComponents(replacements); | 666 test_page = test_page.ReplaceComponents(replacements); |
| 668 | 667 |
| 669 WindowedLoadStopObserver load_stop_waiter(controller, 1); | 668 WindowedLoadStopObserver load_stop_waiter(controller, 1); |
| 670 browser()->OpenURL(OpenURLParams( | 669 browser()->OpenURL(OpenURLParams( |
| 671 test_page, Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, | 670 test_page, Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, |
| 672 false)); | 671 false)); |
| 673 load_stop_waiter.Wait(); | 672 load_stop_waiter.Wait(); |
| 674 } | 673 } |
| 675 | 674 |
| 676 EXPECT_EQ(0, observer.auth_needed_count()); | 675 EXPECT_EQ(0, observer.auth_needed_count()); |
| 677 | 676 |
| 678 // Now request the same page, but from the same origin. | 677 // Now request the same page, but from the same origin. |
| 679 // There should be one login prompt. | 678 // There should be one login prompt. |
| 680 { | 679 { |
| 681 GURL test_page = test_server()->GetURL(kTestPage); | 680 GURL test_page = test_server()->GetURL(kTestPage); |
| 682 ASSERT_EQ("127.0.0.1", test_page.host()); | 681 ASSERT_EQ("127.0.0.1", test_page.host()); |
| 683 | 682 |
| 684 // Change the host from 127.0.0.1 to www.b.com so that when the | 683 // Change the host from 127.0.0.1 to www.b.com so that when the |
| 685 // page tries to load from b, it will be same-origin. | 684 // page tries to load from b, it will be same-origin. |
| 686 std::string new_host("www.b.com"); | |
| 687 GURL::Replacements replacements; | 685 GURL::Replacements replacements; |
| 688 replacements.SetHostStr(new_host); | 686 replacements.SetHostStr("www.b.com"); |
| 689 test_page = test_page.ReplaceComponents(replacements); | 687 test_page = test_page.ReplaceComponents(replacements); |
| 690 | 688 |
| 691 WindowedAuthNeededObserver auth_needed_waiter(controller); | 689 WindowedAuthNeededObserver auth_needed_waiter(controller); |
| 692 browser()->OpenURL(OpenURLParams( | 690 browser()->OpenURL(OpenURLParams( |
| 693 test_page, Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, | 691 test_page, Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, |
| 694 false)); | 692 false)); |
| 695 auth_needed_waiter.Wait(); | 693 auth_needed_waiter.Wait(); |
| 696 ASSERT_EQ(1u, observer.handlers().size()); | 694 ASSERT_EQ(1u, observer.handlers().size()); |
| 697 | 695 |
| 698 while (!observer.handlers().empty()) { | 696 while (!observer.handlers().empty()) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 724 LoginPromptBrowserTestObserver observer; | 722 LoginPromptBrowserTestObserver observer; |
| 725 observer.Register(content::Source<NavigationController>(controller)); | 723 observer.Register(content::Source<NavigationController>(controller)); |
| 726 | 724 |
| 727 // Load a page that has a cross-domain iframe authentication. | 725 // Load a page that has a cross-domain iframe authentication. |
| 728 { | 726 { |
| 729 GURL test_page = test_server()->GetURL(kTestPage); | 727 GURL test_page = test_server()->GetURL(kTestPage); |
| 730 ASSERT_EQ("127.0.0.1", test_page.host()); | 728 ASSERT_EQ("127.0.0.1", test_page.host()); |
| 731 | 729 |
| 732 // Change the host from 127.0.0.1 to www.a.com so that when the | 730 // Change the host from 127.0.0.1 to www.a.com so that when the |
| 733 // page tries to load from b, it will be cross-origin. | 731 // page tries to load from b, it will be cross-origin. |
| 734 std::string new_host("www.a.com"); | 732 static const char kNewHost[] = "www.a.com"; |
| 735 GURL::Replacements replacements; | 733 GURL::Replacements replacements; |
| 736 replacements.SetHostStr(new_host); | 734 replacements.SetHostStr(kNewHost); |
| 737 test_page = test_page.ReplaceComponents(replacements); | 735 test_page = test_page.ReplaceComponents(replacements); |
| 738 | 736 |
| 739 WindowedAuthNeededObserver auth_needed_waiter(controller); | 737 WindowedAuthNeededObserver auth_needed_waiter(controller); |
| 740 browser()->OpenURL(OpenURLParams( | 738 browser()->OpenURL(OpenURLParams( |
| 741 test_page, Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, | 739 test_page, Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, |
| 742 false)); | 740 false)); |
| 743 auth_needed_waiter.Wait(); | 741 auth_needed_waiter.Wait(); |
| 744 ASSERT_EQ(1u, observer.handlers().size()); | 742 ASSERT_EQ(1u, observer.handlers().size()); |
| 745 | 743 |
| 746 while (!observer.handlers().empty()) { | 744 while (!observer.handlers().empty()) { |
| 747 WindowedAuthCancelledObserver auth_cancelled_waiter(controller); | 745 WindowedAuthCancelledObserver auth_cancelled_waiter(controller); |
| 748 LoginHandler* handler = *observer.handlers().begin(); | 746 LoginHandler* handler = *observer.handlers().begin(); |
| 749 | 747 |
| 750 ASSERT_TRUE(handler); | 748 ASSERT_TRUE(handler); |
| 751 // When a cross origin iframe displays a login prompt, the blank | 749 // When a cross origin iframe displays a login prompt, the blank |
| 752 // interstitial shouldn't be displayed and the omnibox should show the | 750 // interstitial shouldn't be displayed and the omnibox should show the |
| 753 // main frame's url, not the iframe's. | 751 // main frame's url, not the iframe's. |
| 754 EXPECT_EQ(new_host, contents->GetVisibleURL().host()); | 752 EXPECT_EQ(kNewHost, contents->GetVisibleURL().host()); |
| 755 | 753 |
| 756 handler->CancelAuth(); | 754 handler->CancelAuth(); |
| 757 auth_cancelled_waiter.Wait(); | 755 auth_cancelled_waiter.Wait(); |
| 758 } | 756 } |
| 759 } | 757 } |
| 760 | 758 |
| 761 // Should stay on the main frame's url once the prompt the iframe is closed. | 759 // Should stay on the main frame's url once the prompt the iframe is closed. |
| 762 EXPECT_EQ("www.a.com", contents->GetVisibleURL().host()); | 760 EXPECT_EQ("www.a.com", contents->GetVisibleURL().host()); |
| 763 | 761 |
| 764 EXPECT_EQ(1, observer.auth_needed_count()); | 762 EXPECT_EQ(1, observer.auth_needed_count()); |
| (...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1255 LoginHandler* handler = *observer.handlers().begin(); | 1253 LoginHandler* handler = *observer.handlers().begin(); |
| 1256 content::RunTaskAndWaitForInterstitialDetach( | 1254 content::RunTaskAndWaitForInterstitialDetach( |
| 1257 contents, base::Bind(&LoginHandler::CancelAuth, handler)); | 1255 contents, base::Bind(&LoginHandler::CancelAuth, handler)); |
| 1258 | 1256 |
| 1259 EXPECT_EQ("127.0.0.1", contents->GetVisibleURL().host()); | 1257 EXPECT_EQ("127.0.0.1", contents->GetVisibleURL().host()); |
| 1260 EXPECT_FALSE(contents->ShowingInterstitialPage()); | 1258 EXPECT_FALSE(contents->ShowingInterstitialPage()); |
| 1261 } | 1259 } |
| 1262 } | 1260 } |
| 1263 | 1261 |
| 1264 } // namespace | 1262 } // namespace |
| OLD | NEW |