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