Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/macros.h" | 5 #include "base/macros.h" |
| 6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
| 7 #include "base/values.h" | 7 #include "base/values.h" |
| 8 #include "build/build_config.h" | 8 #include "build/build_config.h" |
| 9 #include "content/browser/frame_host/navigation_entry_impl.h" | 9 #include "content/browser/frame_host/navigation_entry_impl.h" |
| 10 #include "content/browser/renderer_host/render_widget_host_impl.h" | 10 #include "content/browser/renderer_host/render_widget_host_impl.h" |
| (...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 763 shell()->web_contents()->SetPageScale(1.5); | 763 shell()->web_contents()->SetPageScale(1.5); |
| 764 EXPECT_CALL(observer, OnPageScaleFactorChanged(::testing::FloatEq(1.5))); | 764 EXPECT_CALL(observer, OnPageScaleFactorChanged(::testing::FloatEq(1.5))); |
| 765 observer.WaitForPageScaleUpdate(); | 765 observer.WaitForPageScaleUpdate(); |
| 766 | 766 |
| 767 // Navigate to reset the page scale factor. | 767 // Navigate to reset the page scale factor. |
| 768 shell()->LoadURL(embedded_test_server()->GetURL("/title2.html")); | 768 shell()->LoadURL(embedded_test_server()->GetURL("/title2.html")); |
| 769 EXPECT_CALL(observer, OnPageScaleFactorChanged(::testing::_)); | 769 EXPECT_CALL(observer, OnPageScaleFactorChanged(::testing::_)); |
| 770 observer.WaitForPageScaleUpdate(); | 770 observer.WaitForPageScaleUpdate(); |
| 771 } | 771 } |
| 772 | 772 |
| 773 // Test that a direct navigation to a view-source URL works. | |
| 774 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, ViewSourceDirectNavigation) { | |
| 775 ASSERT_TRUE(embedded_test_server()->Start()); | |
| 776 const GURL kUrl(embedded_test_server()->GetURL("/simple_page.html")); | |
| 777 const GURL kViewSourceURL(kViewSourceScheme + std::string(":") + kUrl.spec()); | |
| 778 NavigateToURL(shell(), kViewSourceURL); | |
| 779 // Displayed view-source URLs don't include the scheme of the effective URL | |
|
Charlie Reis
2016/05/24 22:54:16
nit: Just for HTTP, right?
meacer
2016/05/31 23:57:54
Done.
| |
| 780 // (e.g. view-source:example.com instead of view-source:http://example.com). | |
| 781 EXPECT_EQ(base::ASCIIToUTF16(std::string("view-source:") + kUrl.host() + ":" + | |
| 782 kUrl.port() + kUrl.path()), | |
| 783 shell()->web_contents()->GetTitle()); | |
|
Charlie Reis
2016/05/24 22:54:16
Maybe we can also check that we're in view-source
meacer
2016/05/31 23:57:54
Done, except for window.open case where there is n
| |
| 784 } | |
| 785 | |
| 786 // Test that window.open to a view-source URL is blocked. | |
| 787 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | |
| 788 ViewSourceWindowOpen_ShouldBeBlocked) { | |
| 789 ASSERT_TRUE(embedded_test_server()->Start()); | |
| 790 const GURL kUrl(embedded_test_server()->GetURL("/simple_page.html")); | |
| 791 const GURL kViewSourceURL(kViewSourceScheme + std::string(":") + kUrl.spec()); | |
| 792 NavigateToURL(shell(), kUrl); | |
| 793 | |
| 794 ShellAddedObserver new_shell_observer; | |
| 795 EXPECT_TRUE(ExecuteScript(shell()->web_contents(), | |
| 796 "window.open('" + kViewSourceURL.spec() + "');")); | |
| 797 Shell* new_shell = new_shell_observer.GetShell(); | |
| 798 WaitForLoadStop(new_shell->web_contents()); | |
| 799 // EXPECT_EQ("", static_cast<WebContentsImpl*>(new_shell->web_contents()) | |
|
Charlie Reis
2016/05/24 22:54:16
nit: Remove.
meacer
2016/05/31 23:57:54
Done.
| |
| 800 EXPECT_EQ("", new_shell->web_contents()->GetURL().spec()); | |
|
Charlie Reis
2016/05/24 22:54:16
Can we use a ConsoleObserverDelegate on shell() in
meacer
2016/05/31 23:57:54
Unfortunately no, because the console message gets
Charlie Reis
2016/06/01 22:59:51
Acknowledged.
| |
| 801 } | |
| 802 | |
| 803 // Test that a content initiated navigation to a view-source URL is blocked. | |
| 804 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | |
| 805 ViewSourceRedirect_ShouldBeBlocked) { | |
| 806 ASSERT_TRUE(embedded_test_server()->Start()); | |
| 807 const GURL kUrl(embedded_test_server()->GetURL("/simple_page.html")); | |
| 808 const GURL kViewSourceURL(kViewSourceScheme + std::string(":") + kUrl.spec()); | |
| 809 NavigateToURL(shell(), kUrl); | |
| 810 | |
| 811 std::unique_ptr<ConsoleObserverDelegate> console_delegate( | |
| 812 new ConsoleObserverDelegate( | |
| 813 shell()->web_contents(), | |
| 814 "Not allowed to load local resource: view-source:*")); | |
| 815 shell()->web_contents()->SetDelegate(console_delegate.get()); | |
| 816 | |
| 817 EXPECT_TRUE( | |
| 818 ExecuteScript(shell()->web_contents(), | |
| 819 "window.location = '" + kViewSourceURL.spec() + "';")); | |
| 820 console_delegate->Wait(); | |
| 821 // Original page shouldn't navigate away. | |
| 822 EXPECT_EQ(kUrl, shell()->web_contents()->GetURL()); | |
| 823 } | |
| 824 | |
| 825 // Test that view source mode for a webui page can be opened. | |
| 826 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, ViewSourceWebUI) { | |
| 827 const char kUrl[] = "view-source:chrome://chrome/settings"; | |
| 828 const GURL kGURL(kUrl); | |
| 829 NavigateToURL(shell(), kGURL); | |
| 830 EXPECT_EQ(base::ASCIIToUTF16(kUrl), shell()->web_contents()->GetTitle()); | |
| 831 } | |
| 832 | |
| 773 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, NewNamedWindow) { | 833 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, NewNamedWindow) { |
| 774 ASSERT_TRUE(embedded_test_server()->Start()); | 834 ASSERT_TRUE(embedded_test_server()->Start()); |
| 775 | 835 |
| 776 GURL url = embedded_test_server()->GetURL("/click-noreferrer-links.html"); | 836 GURL url = embedded_test_server()->GetURL("/click-noreferrer-links.html"); |
| 777 EXPECT_TRUE(NavigateToURL(shell(), url)); | 837 EXPECT_TRUE(NavigateToURL(shell(), url)); |
| 778 | 838 |
| 779 { | 839 { |
| 780 ShellAddedObserver new_shell_observer; | 840 ShellAddedObserver new_shell_observer; |
| 781 | 841 |
| 782 // Open a new, named window. | 842 // Open a new, named window. |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1005 content::ExecuteScript(root->current_frame_host(), alert_location)); | 1065 content::ExecuteScript(root->current_frame_host(), alert_location)); |
| 1006 dialog_manager.Wait(); | 1066 dialog_manager.Wait(); |
| 1007 EXPECT_EQ(GURL("http://a.com/title1.html"), | 1067 EXPECT_EQ(GURL("http://a.com/title1.html"), |
| 1008 GURL(dialog_manager.last_message()).ReplaceComponents(clear_port)); | 1068 GURL(dialog_manager.last_message()).ReplaceComponents(clear_port)); |
| 1009 | 1069 |
| 1010 wc->SetDelegate(nullptr); | 1070 wc->SetDelegate(nullptr); |
| 1011 wc->SetJavaScriptDialogManagerForTesting(nullptr); | 1071 wc->SetJavaScriptDialogManagerForTesting(nullptr); |
| 1012 } | 1072 } |
| 1013 | 1073 |
| 1014 } // namespace content | 1074 } // namespace content |
| OLD | NEW |