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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 #include <tuple> | 7 #include <tuple> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 return result; | 199 return result; |
200 } | 200 } |
201 | 201 |
202 // Returns CommonNavigationParams for a normal navigation to a data: url, with | 202 // Returns CommonNavigationParams for a normal navigation to a data: url, with |
203 // navigation_start set to Now() plus the given offset. | 203 // navigation_start set to Now() plus the given offset. |
204 CommonNavigationParams MakeCommonNavigationParams( | 204 CommonNavigationParams MakeCommonNavigationParams( |
205 TimeDelta navigation_start_offset) { | 205 TimeDelta navigation_start_offset) { |
206 CommonNavigationParams params; | 206 CommonNavigationParams params; |
207 params.url = GURL("data:text/html,<div>Page</div>"); | 207 params.url = GURL("data:text/html,<div>Page</div>"); |
208 params.navigation_start = base::TimeTicks::Now() + navigation_start_offset; | 208 params.navigation_start = base::TimeTicks::Now() + navigation_start_offset; |
209 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 209 params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
210 params.transition = ui::PAGE_TRANSITION_TYPED; | 210 params.transition = ui::PAGE_TRANSITION_TYPED; |
211 return params; | 211 return params; |
212 } | 212 } |
213 | 213 |
214 } // namespace | 214 } // namespace |
215 | 215 |
216 class RenderViewImplTest : public RenderViewTest { | 216 class RenderViewImplTest : public RenderViewTest { |
217 public: | 217 public: |
218 RenderViewImplTest() { | 218 RenderViewImplTest() { |
219 // Attach a pseudo keyboard device to this object. | 219 // Attach a pseudo keyboard device to this object. |
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
598 EXPECT_TRUE(render_thread_->sink().GetUniqueMessageMatching( | 598 EXPECT_TRUE(render_thread_->sink().GetUniqueMessageMatching( |
599 FrameHostMsg_UpdateState::ID)); | 599 FrameHostMsg_UpdateState::ID)); |
600 } | 600 } |
601 | 601 |
602 TEST_F(RenderViewImplTest, OnNavigationHttpPost) { | 602 TEST_F(RenderViewImplTest, OnNavigationHttpPost) { |
603 // An http url will trigger a resource load so cannot be used here. | 603 // An http url will trigger a resource load so cannot be used here. |
604 CommonNavigationParams common_params; | 604 CommonNavigationParams common_params; |
605 StartNavigationParams start_params; | 605 StartNavigationParams start_params; |
606 RequestNavigationParams request_params; | 606 RequestNavigationParams request_params; |
607 common_params.url = GURL("data:text/html,<div>Page</div>"); | 607 common_params.url = GURL("data:text/html,<div>Page</div>"); |
608 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 608 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
609 common_params.transition = ui::PAGE_TRANSITION_TYPED; | 609 common_params.transition = ui::PAGE_TRANSITION_TYPED; |
610 common_params.method = "POST"; | 610 common_params.method = "POST"; |
611 | 611 |
612 // Set up post data. | 612 // Set up post data. |
613 const char raw_data[] = "post \0\ndata"; | 613 const char raw_data[] = "post \0\ndata"; |
614 const size_t length = arraysize(raw_data); | 614 const size_t length = arraysize(raw_data); |
615 scoped_refptr<ResourceRequestBodyImpl> post_data(new ResourceRequestBodyImpl); | 615 scoped_refptr<ResourceRequestBodyImpl> post_data(new ResourceRequestBodyImpl); |
616 post_data->AppendBytes(raw_data, length); | 616 post_data->AppendBytes(raw_data, length); |
617 common_params.post_data = post_data; | 617 common_params.post_data = post_data; |
618 | 618 |
(...skipping 20 matching lines...) Expand all Loading... |
639 EXPECT_TRUE(successful); | 639 EXPECT_TRUE(successful); |
640 EXPECT_EQ(blink::WebHTTPBody::Element::TypeData, element.type); | 640 EXPECT_EQ(blink::WebHTTPBody::Element::TypeData, element.type); |
641 EXPECT_EQ(length, element.data.size()); | 641 EXPECT_EQ(length, element.data.size()); |
642 EXPECT_EQ(0, memcmp(raw_data, element.data.data(), length)); | 642 EXPECT_EQ(0, memcmp(raw_data, element.data.data(), length)); |
643 } | 643 } |
644 | 644 |
645 #if defined(OS_ANDROID) | 645 #if defined(OS_ANDROID) |
646 TEST_F(RenderViewImplTest, OnNavigationLoadDataWithBaseURL) { | 646 TEST_F(RenderViewImplTest, OnNavigationLoadDataWithBaseURL) { |
647 CommonNavigationParams common_params; | 647 CommonNavigationParams common_params; |
648 common_params.url = GURL("data:text/html,"); | 648 common_params.url = GURL("data:text/html,"); |
649 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 649 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
650 common_params.transition = ui::PAGE_TRANSITION_TYPED; | 650 common_params.transition = ui::PAGE_TRANSITION_TYPED; |
651 common_params.base_url_for_data_url = GURL("about:blank"); | 651 common_params.base_url_for_data_url = GURL("about:blank"); |
652 common_params.history_url_for_data_url = GURL("about:blank"); | 652 common_params.history_url_for_data_url = GURL("about:blank"); |
653 RequestNavigationParams request_params; | 653 RequestNavigationParams request_params; |
654 request_params.data_url_as_string = | 654 request_params.data_url_as_string = |
655 "data:text/html,<html><head><title>Data page</title></head></html>"; | 655 "data:text/html,<html><head><title>Data page</title></head></html>"; |
656 | 656 |
657 frame()->Navigate(common_params, StartNavigationParams(), | 657 frame()->Navigate(common_params, StartNavigationParams(), |
658 request_params); | 658 request_params); |
659 const IPC::Message* frame_title_msg = nullptr; | 659 const IPC::Message* frame_title_msg = nullptr; |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
966 ViewHostMsg_UpdateState::ID); | 966 ViewHostMsg_UpdateState::ID); |
967 ASSERT_TRUE(msg_C); | 967 ASSERT_TRUE(msg_C); |
968 ViewHostMsg_UpdateState::Read(msg_C, ¶m); | 968 ViewHostMsg_UpdateState::Read(msg_C, ¶m); |
969 PageState state_C = std::get<0>(param); | 969 PageState state_C = std::get<0>(param); |
970 EXPECT_NE(state_B, state_C); | 970 EXPECT_NE(state_B, state_C); |
971 render_thread_->sink().ClearMessages(); | 971 render_thread_->sink().ClearMessages(); |
972 | 972 |
973 // Go back to C and commit, preparing for our real test. | 973 // Go back to C and commit, preparing for our real test. |
974 CommonNavigationParams common_params_C; | 974 CommonNavigationParams common_params_C; |
975 RequestNavigationParams request_params_C; | 975 RequestNavigationParams request_params_C; |
976 common_params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 976 common_params_C.navigation_type = |
| 977 FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT; |
977 common_params_C.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 978 common_params_C.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
978 request_params_C.current_history_list_length = 4; | 979 request_params_C.current_history_list_length = 4; |
979 request_params_C.current_history_list_offset = 3; | 980 request_params_C.current_history_list_offset = 3; |
980 request_params_C.pending_history_list_offset = 2; | 981 request_params_C.pending_history_list_offset = 2; |
981 request_params_C.page_state = state_C; | 982 request_params_C.page_state = state_C; |
982 frame()->Navigate(common_params_C, StartNavigationParams(), request_params_C); | 983 frame()->Navigate(common_params_C, StartNavigationParams(), request_params_C); |
983 ProcessPendingMessages(); | 984 ProcessPendingMessages(); |
984 render_thread_->sink().ClearMessages(); | 985 render_thread_->sink().ClearMessages(); |
985 | 986 |
986 // Go back twice quickly, such that page B does not have a chance to commit. | 987 // Go back twice quickly, such that page B does not have a chance to commit. |
987 // This leads to two changes to the back/forward list but only one change to | 988 // This leads to two changes to the back/forward list but only one change to |
988 // the RenderView's page ID. | 989 // the RenderView's page ID. |
989 | 990 |
990 // Back to page B without committing. | 991 // Back to page B without committing. |
991 CommonNavigationParams common_params_B; | 992 CommonNavigationParams common_params_B; |
992 RequestNavigationParams request_params_B; | 993 RequestNavigationParams request_params_B; |
993 common_params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 994 common_params_B.navigation_type = |
| 995 FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT; |
994 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 996 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
995 request_params_B.current_history_list_length = 4; | 997 request_params_B.current_history_list_length = 4; |
996 request_params_B.current_history_list_offset = 2; | 998 request_params_B.current_history_list_offset = 2; |
997 request_params_B.pending_history_list_offset = 1; | 999 request_params_B.pending_history_list_offset = 1; |
998 request_params_B.page_state = state_B; | 1000 request_params_B.page_state = state_B; |
999 frame()->Navigate(common_params_B, StartNavigationParams(), request_params_B); | 1001 frame()->Navigate(common_params_B, StartNavigationParams(), request_params_B); |
1000 | 1002 |
1001 // Back to page A and commit. | 1003 // Back to page A and commit. |
1002 CommonNavigationParams common_params; | 1004 CommonNavigationParams common_params; |
1003 RequestNavigationParams request_params; | 1005 RequestNavigationParams request_params; |
1004 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1006 common_params.navigation_type = |
| 1007 FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT; |
1005 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 1008 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
1006 request_params.current_history_list_length = 4; | 1009 request_params.current_history_list_length = 4; |
1007 request_params.current_history_list_offset = 2; | 1010 request_params.current_history_list_offset = 2; |
1008 request_params.pending_history_list_offset = 0; | 1011 request_params.pending_history_list_offset = 0; |
1009 request_params.page_state = state_A; | 1012 request_params.page_state = state_A; |
1010 frame()->Navigate(common_params, StartNavigationParams(), request_params); | 1013 frame()->Navigate(common_params, StartNavigationParams(), request_params); |
1011 ProcessPendingMessages(); | 1014 ProcessPendingMessages(); |
1012 | 1015 |
1013 // Now ensure that the UpdateState message we receive is consistent | 1016 // Now ensure that the UpdateState message we receive is consistent |
1014 // and represents page C in state. | 1017 // and represents page C in state. |
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1334 GetMainFrame()->enableViewSourceMode(true); | 1337 GetMainFrame()->enableViewSourceMode(true); |
1335 WebURLError error; | 1338 WebURLError error; |
1336 error.domain = WebString::fromUTF8(net::kErrorDomain); | 1339 error.domain = WebString::fromUTF8(net::kErrorDomain); |
1337 error.reason = net::ERR_FILE_NOT_FOUND; | 1340 error.reason = net::ERR_FILE_NOT_FOUND; |
1338 error.unreachableURL = GURL("http://foo"); | 1341 error.unreachableURL = GURL("http://foo"); |
1339 WebLocalFrame* web_frame = GetMainFrame(); | 1342 WebLocalFrame* web_frame = GetMainFrame(); |
1340 | 1343 |
1341 // Start a load that will reach provisional state synchronously, | 1344 // Start a load that will reach provisional state synchronously, |
1342 // but won't complete synchronously. | 1345 // but won't complete synchronously. |
1343 CommonNavigationParams common_params; | 1346 CommonNavigationParams common_params; |
1344 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1347 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
1345 common_params.url = GURL("data:text/html,test data"); | 1348 common_params.url = GURL("data:text/html,test data"); |
1346 frame()->Navigate(common_params, StartNavigationParams(), | 1349 frame()->Navigate(common_params, StartNavigationParams(), |
1347 RequestNavigationParams()); | 1350 RequestNavigationParams()); |
1348 | 1351 |
1349 // An error occurred. | 1352 // An error occurred. |
1350 view()->GetMainRenderFrame()->didFailProvisionalLoad( | 1353 view()->GetMainRenderFrame()->didFailProvisionalLoad( |
1351 web_frame, error, blink::WebStandardCommit); | 1354 web_frame, error, blink::WebStandardCommit); |
1352 // Frame should exit view-source mode. | 1355 // Frame should exit view-source mode. |
1353 EXPECT_FALSE(web_frame->isViewSourceModeEnabled()); | 1356 EXPECT_FALSE(web_frame->isViewSourceModeEnabled()); |
1354 } | 1357 } |
1355 | 1358 |
1356 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { | 1359 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { |
1357 GetMainFrame()->enableViewSourceMode(true); | 1360 GetMainFrame()->enableViewSourceMode(true); |
1358 WebURLError error; | 1361 WebURLError error; |
1359 error.domain = WebString::fromUTF8(net::kErrorDomain); | 1362 error.domain = WebString::fromUTF8(net::kErrorDomain); |
1360 error.reason = net::ERR_ABORTED; | 1363 error.reason = net::ERR_ABORTED; |
1361 error.unreachableURL = GURL("http://foo"); | 1364 error.unreachableURL = GURL("http://foo"); |
1362 WebLocalFrame* web_frame = GetMainFrame(); | 1365 WebLocalFrame* web_frame = GetMainFrame(); |
1363 | 1366 |
1364 // Start a load that will reach provisional state synchronously, | 1367 // Start a load that will reach provisional state synchronously, |
1365 // but won't complete synchronously. | 1368 // but won't complete synchronously. |
1366 CommonNavigationParams common_params; | 1369 CommonNavigationParams common_params; |
1367 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1370 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
1368 common_params.url = GURL("data:text/html,test data"); | 1371 common_params.url = GURL("data:text/html,test data"); |
1369 frame()->Navigate(common_params, StartNavigationParams(), | 1372 frame()->Navigate(common_params, StartNavigationParams(), |
1370 RequestNavigationParams()); | 1373 RequestNavigationParams()); |
1371 | 1374 |
1372 // A cancellation occurred. | 1375 // A cancellation occurred. |
1373 view()->GetMainRenderFrame()->didFailProvisionalLoad( | 1376 view()->GetMainRenderFrame()->didFailProvisionalLoad( |
1374 web_frame, error, blink::WebStandardCommit); | 1377 web_frame, error, blink::WebStandardCommit); |
1375 // Frame should stay in view-source mode. | 1378 // Frame should stay in view-source mode. |
1376 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); | 1379 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); |
1377 } | 1380 } |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1669 | 1672 |
1670 // Test that the navigating specific frames works correctly. | 1673 // Test that the navigating specific frames works correctly. |
1671 TEST_F(RenderViewImplTest, NavigateSubframe) { | 1674 TEST_F(RenderViewImplTest, NavigateSubframe) { |
1672 // Load page A. | 1675 // Load page A. |
1673 LoadHTML("hello <iframe srcdoc='fail' name='frame'></iframe>"); | 1676 LoadHTML("hello <iframe srcdoc='fail' name='frame'></iframe>"); |
1674 | 1677 |
1675 // Navigate the frame only. | 1678 // Navigate the frame only. |
1676 CommonNavigationParams common_params; | 1679 CommonNavigationParams common_params; |
1677 RequestNavigationParams request_params; | 1680 RequestNavigationParams request_params; |
1678 common_params.url = GURL("data:text/html,world"); | 1681 common_params.url = GURL("data:text/html,world"); |
1679 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1682 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
1680 common_params.transition = ui::PAGE_TRANSITION_TYPED; | 1683 common_params.transition = ui::PAGE_TRANSITION_TYPED; |
1681 common_params.navigation_start = base::TimeTicks::FromInternalValue(1); | 1684 common_params.navigation_start = base::TimeTicks::FromInternalValue(1); |
1682 request_params.current_history_list_length = 1; | 1685 request_params.current_history_list_length = 1; |
1683 request_params.current_history_list_offset = 0; | 1686 request_params.current_history_list_offset = 0; |
1684 request_params.pending_history_list_offset = 1; | 1687 request_params.pending_history_list_offset = 1; |
1685 | 1688 |
1686 TestRenderFrame* subframe = | 1689 TestRenderFrame* subframe = |
1687 static_cast<TestRenderFrame*>(RenderFrameImpl::FromWebFrame( | 1690 static_cast<TestRenderFrame*>(RenderFrameImpl::FromWebFrame( |
1688 view()->webview()->findFrameByName("frame"))); | 1691 view()->webview()->findFrameByName("frame"))); |
1689 subframe->Navigate(common_params, StartNavigationParams(), request_params); | 1692 subframe->Navigate(common_params, StartNavigationParams(), request_params); |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1781 TEST_F(RendererErrorPageTest, MAYBE_Suppresses) { | 1784 TEST_F(RendererErrorPageTest, MAYBE_Suppresses) { |
1782 WebURLError error; | 1785 WebURLError error; |
1783 error.domain = WebString::fromUTF8(net::kErrorDomain); | 1786 error.domain = WebString::fromUTF8(net::kErrorDomain); |
1784 error.reason = net::ERR_FILE_NOT_FOUND; | 1787 error.reason = net::ERR_FILE_NOT_FOUND; |
1785 error.unreachableURL = GURL("http://example.com/suppress"); | 1788 error.unreachableURL = GURL("http://example.com/suppress"); |
1786 WebLocalFrame* web_frame = GetMainFrame(); | 1789 WebLocalFrame* web_frame = GetMainFrame(); |
1787 | 1790 |
1788 // Start a load that will reach provisional state synchronously, | 1791 // Start a load that will reach provisional state synchronously, |
1789 // but won't complete synchronously. | 1792 // but won't complete synchronously. |
1790 CommonNavigationParams common_params; | 1793 CommonNavigationParams common_params; |
1791 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1794 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
1792 common_params.url = GURL("data:text/html,test data"); | 1795 common_params.url = GURL("data:text/html,test data"); |
1793 TestRenderFrame* main_frame = static_cast<TestRenderFrame*>(frame()); | 1796 TestRenderFrame* main_frame = static_cast<TestRenderFrame*>(frame()); |
1794 main_frame->Navigate(common_params, StartNavigationParams(), | 1797 main_frame->Navigate(common_params, StartNavigationParams(), |
1795 RequestNavigationParams()); | 1798 RequestNavigationParams()); |
1796 | 1799 |
1797 // An error occurred. | 1800 // An error occurred. |
1798 main_frame->didFailProvisionalLoad(web_frame, error, | 1801 main_frame->didFailProvisionalLoad(web_frame, error, |
1799 blink::WebStandardCommit); | 1802 blink::WebStandardCommit); |
1800 const int kMaxOutputCharacters = 22; | 1803 const int kMaxOutputCharacters = 22; |
1801 EXPECT_EQ("", WebFrameContentDumper::dumpWebViewAsText(view()->GetWebView(), | 1804 EXPECT_EQ("", WebFrameContentDumper::dumpWebViewAsText(view()->GetWebView(), |
(...skipping 11 matching lines...) Expand all Loading... |
1813 TEST_F(RendererErrorPageTest, MAYBE_DoesNotSuppress) { | 1816 TEST_F(RendererErrorPageTest, MAYBE_DoesNotSuppress) { |
1814 WebURLError error; | 1817 WebURLError error; |
1815 error.domain = WebString::fromUTF8(net::kErrorDomain); | 1818 error.domain = WebString::fromUTF8(net::kErrorDomain); |
1816 error.reason = net::ERR_FILE_NOT_FOUND; | 1819 error.reason = net::ERR_FILE_NOT_FOUND; |
1817 error.unreachableURL = GURL("http://example.com/dont-suppress"); | 1820 error.unreachableURL = GURL("http://example.com/dont-suppress"); |
1818 WebLocalFrame* web_frame = GetMainFrame(); | 1821 WebLocalFrame* web_frame = GetMainFrame(); |
1819 | 1822 |
1820 // Start a load that will reach provisional state synchronously, | 1823 // Start a load that will reach provisional state synchronously, |
1821 // but won't complete synchronously. | 1824 // but won't complete synchronously. |
1822 CommonNavigationParams common_params; | 1825 CommonNavigationParams common_params; |
1823 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1826 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
1824 common_params.url = GURL("data:text/html,test data"); | 1827 common_params.url = GURL("data:text/html,test data"); |
1825 TestRenderFrame* main_frame = static_cast<TestRenderFrame*>(frame()); | 1828 TestRenderFrame* main_frame = static_cast<TestRenderFrame*>(frame()); |
1826 main_frame->Navigate(common_params, StartNavigationParams(), | 1829 main_frame->Navigate(common_params, StartNavigationParams(), |
1827 RequestNavigationParams()); | 1830 RequestNavigationParams()); |
1828 | 1831 |
1829 // An error occurred. | 1832 // An error occurred. |
1830 main_frame->didFailProvisionalLoad(web_frame, error, | 1833 main_frame->didFailProvisionalLoad(web_frame, error, |
1831 blink::WebStandardCommit); | 1834 blink::WebStandardCommit); |
1832 | 1835 |
1833 // The error page itself is loaded asynchronously. | 1836 // The error page itself is loaded asynchronously. |
(...skipping 13 matching lines...) Expand all Loading... |
1847 #define MAYBE_HttpStatusCodeErrorWithEmptyBody HttpStatusCodeErrorWithEmptyBody | 1850 #define MAYBE_HttpStatusCodeErrorWithEmptyBody HttpStatusCodeErrorWithEmptyBody |
1848 #endif | 1851 #endif |
1849 TEST_F(RendererErrorPageTest, MAYBE_HttpStatusCodeErrorWithEmptyBody) { | 1852 TEST_F(RendererErrorPageTest, MAYBE_HttpStatusCodeErrorWithEmptyBody) { |
1850 blink::WebURLResponse response; | 1853 blink::WebURLResponse response; |
1851 response.setHTTPStatusCode(503); | 1854 response.setHTTPStatusCode(503); |
1852 WebLocalFrame* web_frame = GetMainFrame(); | 1855 WebLocalFrame* web_frame = GetMainFrame(); |
1853 | 1856 |
1854 // Start a load that will reach provisional state synchronously, | 1857 // Start a load that will reach provisional state synchronously, |
1855 // but won't complete synchronously. | 1858 // but won't complete synchronously. |
1856 CommonNavigationParams common_params; | 1859 CommonNavigationParams common_params; |
1857 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1860 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
1858 common_params.url = GURL("data:text/html,test data"); | 1861 common_params.url = GURL("data:text/html,test data"); |
1859 TestRenderFrame* main_frame = static_cast<TestRenderFrame*>(frame()); | 1862 TestRenderFrame* main_frame = static_cast<TestRenderFrame*>(frame()); |
1860 main_frame->Navigate(common_params, StartNavigationParams(), | 1863 main_frame->Navigate(common_params, StartNavigationParams(), |
1861 RequestNavigationParams()); | 1864 RequestNavigationParams()); |
1862 | 1865 |
1863 // Emulate a 4xx/5xx main resource response with an empty body. | 1866 // Emulate a 4xx/5xx main resource response with an empty body. |
1864 main_frame->didReceiveResponse(response); | 1867 main_frame->didReceiveResponse(response); |
1865 main_frame->didFinishDocumentLoad(web_frame); | 1868 main_frame->didFinishDocumentLoad(web_frame); |
1866 main_frame->runScriptsAtDocumentReady(web_frame, true); | 1869 main_frame->runScriptsAtDocumentReady(web_frame, true); |
1867 | 1870 |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2096 LoadHTML("<div id=pagename>Page C</div>"); | 2099 LoadHTML("<div id=pagename>Page C</div>"); |
2097 PageState forward_state = GetCurrentPageState(); | 2100 PageState forward_state = GetCurrentPageState(); |
2098 ProcessPendingMessages(); | 2101 ProcessPendingMessages(); |
2099 render_thread_->sink().ClearMessages(); | 2102 render_thread_->sink().ClearMessages(); |
2100 | 2103 |
2101 // Go back. | 2104 // Go back. |
2102 CommonNavigationParams common_params_back; | 2105 CommonNavigationParams common_params_back; |
2103 common_params_back.url = | 2106 common_params_back.url = |
2104 GURL("data:text/html;charset=utf-8,<div id=pagename>Page B</div>"); | 2107 GURL("data:text/html;charset=utf-8,<div id=pagename>Page B</div>"); |
2105 common_params_back.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 2108 common_params_back.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
| 2109 common_params_back.navigation_type = |
| 2110 FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT; |
2106 GoToOffsetWithParams(-1, back_state, common_params_back, | 2111 GoToOffsetWithParams(-1, back_state, common_params_back, |
2107 StartNavigationParams(), RequestNavigationParams()); | 2112 StartNavigationParams(), RequestNavigationParams()); |
2108 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params = | 2113 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params = |
2109 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); | 2114 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); |
2110 if (!IsBrowserSideNavigationEnabled()) { | 2115 if (!IsBrowserSideNavigationEnabled()) { |
2111 // The browser navigation_start should not be used because beforeunload was | 2116 // The browser navigation_start should not be used because beforeunload was |
2112 // fired during GoToOffsetWithParams. | 2117 // fired during GoToOffsetWithParams. |
2113 EXPECT_PRED2(TimeTicksGT, std::get<1>(host_nav_params), | 2118 EXPECT_PRED2(TimeTicksGT, std::get<1>(host_nav_params), |
2114 common_params_back.navigation_start); | 2119 common_params_back.navigation_start); |
2115 } else { | 2120 } else { |
2116 // PlzNavigate: the browser navigation_start is always used. | 2121 // PlzNavigate: the browser navigation_start is always used. |
2117 EXPECT_EQ(common_params_back.navigation_start, | 2122 EXPECT_EQ(common_params_back.navigation_start, |
2118 std::get<1>(host_nav_params)); | 2123 std::get<1>(host_nav_params)); |
2119 } | 2124 } |
2120 render_thread_->sink().ClearMessages(); | 2125 render_thread_->sink().ClearMessages(); |
2121 | 2126 |
2122 // Go forward. | 2127 // Go forward. |
2123 CommonNavigationParams common_params_forward; | 2128 CommonNavigationParams common_params_forward; |
2124 common_params_forward.url = | 2129 common_params_forward.url = |
2125 GURL("data:text/html;charset=utf-8,<div id=pagename>Page C</div>"); | 2130 GURL("data:text/html;charset=utf-8,<div id=pagename>Page C</div>"); |
2126 common_params_forward.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 2131 common_params_forward.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
| 2132 common_params_forward.navigation_type = |
| 2133 FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT; |
2127 GoToOffsetWithParams(1, forward_state, common_params_forward, | 2134 GoToOffsetWithParams(1, forward_state, common_params_forward, |
2128 StartNavigationParams(), RequestNavigationParams()); | 2135 StartNavigationParams(), RequestNavigationParams()); |
2129 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params2 = | 2136 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params2 = |
2130 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); | 2137 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); |
2131 if (!IsBrowserSideNavigationEnabled()) { | 2138 if (!IsBrowserSideNavigationEnabled()) { |
2132 EXPECT_PRED2(TimeTicksGT, std::get<1>(host_nav_params2), | 2139 EXPECT_PRED2(TimeTicksGT, std::get<1>(host_nav_params2), |
2133 common_params_forward.navigation_start); | 2140 common_params_forward.navigation_start); |
2134 } else { | 2141 } else { |
2135 EXPECT_EQ(common_params_forward.navigation_start, | 2142 EXPECT_EQ(common_params_forward.navigation_start, |
2136 std::get<1>(host_nav_params2)); | 2143 std::get<1>(host_nav_params2)); |
2137 } | 2144 } |
2138 } | 2145 } |
2139 | 2146 |
2140 TEST_F(RenderViewImplTest, NavigationStartForCrossProcessHistoryNavigation) { | 2147 TEST_F(RenderViewImplTest, NavigationStartForCrossProcessHistoryNavigation) { |
2141 auto common_params = MakeCommonNavigationParams(-TimeDelta::FromSeconds(1)); | 2148 auto common_params = MakeCommonNavigationParams(-TimeDelta::FromSeconds(1)); |
2142 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 2149 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
| 2150 common_params.navigation_type = |
| 2151 FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT; |
2143 | 2152 |
2144 RequestNavigationParams request_params; | 2153 RequestNavigationParams request_params; |
2145 request_params.page_state = | 2154 request_params.page_state = |
2146 PageState::CreateForTesting(common_params.url, false, nullptr, nullptr); | 2155 PageState::CreateForTesting(common_params.url, false, nullptr, nullptr); |
2147 request_params.nav_entry_id = 42; | 2156 request_params.nav_entry_id = 42; |
2148 request_params.pending_history_list_offset = 1; | 2157 request_params.pending_history_list_offset = 1; |
2149 request_params.current_history_list_offset = 0; | 2158 request_params.current_history_list_offset = 0; |
2150 request_params.current_history_list_length = 1; | 2159 request_params.current_history_list_length = 1; |
2151 frame()->Navigate(common_params, StartNavigationParams(), request_params); | 2160 frame()->Navigate(common_params, StartNavigationParams(), request_params); |
2152 | 2161 |
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2555 ExpectPauseAndResume(3); | 2564 ExpectPauseAndResume(3); |
2556 blink::WebScriptSource source2( | 2565 blink::WebScriptSource source2( |
2557 WebString::fromUTF8("function func2() { func1(); }; func2();")); | 2566 WebString::fromUTF8("function func2() { func1(); }; func2();")); |
2558 frame()->GetWebFrame()->executeScriptInIsolatedWorld(17, &source2, 1); | 2567 frame()->GetWebFrame()->executeScriptInIsolatedWorld(17, &source2, 1); |
2559 | 2568 |
2560 EXPECT_FALSE(IsPaused()); | 2569 EXPECT_FALSE(IsPaused()); |
2561 Detach(); | 2570 Detach(); |
2562 } | 2571 } |
2563 | 2572 |
2564 } // namespace content | 2573 } // namespace content |
OLD | NEW |