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 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
885 ExecuteJavaScriptForTests( | 885 ExecuteJavaScriptForTests( |
886 "document.body.removeChild(document.querySelector('iframe'));"); | 886 "document.body.removeChild(document.querySelector('iframe'));"); |
887 RenderFrameProxy* child_proxy = | 887 RenderFrameProxy* child_proxy = |
888 RenderFrameProxy::FromRoutingID(kProxyRoutingId); | 888 RenderFrameProxy::FromRoutingID(kProxyRoutingId); |
889 EXPECT_FALSE(child_proxy); | 889 EXPECT_FALSE(child_proxy); |
890 | 890 |
891 // Attempt to start a navigation on the RenderFrame that was created to | 891 // Attempt to start a navigation on the RenderFrame that was created to |
892 // replace the now-detached RenderFrameProxy. This shouldn't crash and | 892 // replace the now-detached RenderFrameProxy. This shouldn't crash and |
893 // should abort the navigation, since the frame no longer exists. | 893 // should abort the navigation, since the frame no longer exists. |
894 CommonNavigationParams common_params; | 894 CommonNavigationParams common_params; |
895 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 895 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
896 common_params.url = GURL(url::kAboutBlankURL); | 896 common_params.url = GURL(url::kAboutBlankURL); |
897 provisional_frame->Navigate(common_params, StartNavigationParams(), | 897 provisional_frame->Navigate(common_params, StartNavigationParams(), |
898 RequestNavigationParams()); | 898 RequestNavigationParams()); |
899 ProcessPendingMessages(); | 899 ProcessPendingMessages(); |
900 | 900 |
901 // Check that there was no DidCommitProvisionalLoad. | 901 // Check that there was no DidCommitProvisionalLoad. |
902 const IPC::Message* frame_navigate_msg = | 902 const IPC::Message* frame_navigate_msg = |
903 render_thread_->sink().GetUniqueMessageMatching( | 903 render_thread_->sink().GetUniqueMessageMatching( |
904 FrameHostMsg_DidCommitProvisionalLoad::ID); | 904 FrameHostMsg_DidCommitProvisionalLoad::ID); |
905 EXPECT_FALSE(frame_navigate_msg); | 905 EXPECT_FALSE(frame_navigate_msg); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
976 ViewHostMsg_UpdateState::ID); | 976 ViewHostMsg_UpdateState::ID); |
977 ASSERT_TRUE(msg_C); | 977 ASSERT_TRUE(msg_C); |
978 ViewHostMsg_UpdateState::Read(msg_C, ¶m); | 978 ViewHostMsg_UpdateState::Read(msg_C, ¶m); |
979 PageState state_C = std::get<0>(param); | 979 PageState state_C = std::get<0>(param); |
980 EXPECT_NE(state_B, state_C); | 980 EXPECT_NE(state_B, state_C); |
981 render_thread_->sink().ClearMessages(); | 981 render_thread_->sink().ClearMessages(); |
982 | 982 |
983 // Go back to C and commit, preparing for our real test. | 983 // Go back to C and commit, preparing for our real test. |
984 CommonNavigationParams common_params_C; | 984 CommonNavigationParams common_params_C; |
985 RequestNavigationParams request_params_C; | 985 RequestNavigationParams request_params_C; |
986 common_params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 986 common_params_C.navigation_type = |
| 987 FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT; |
987 common_params_C.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 988 common_params_C.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
988 request_params_C.current_history_list_length = 4; | 989 request_params_C.current_history_list_length = 4; |
989 request_params_C.current_history_list_offset = 3; | 990 request_params_C.current_history_list_offset = 3; |
990 request_params_C.pending_history_list_offset = 2; | 991 request_params_C.pending_history_list_offset = 2; |
991 request_params_C.page_state = state_C; | 992 request_params_C.page_state = state_C; |
992 frame()->Navigate(common_params_C, StartNavigationParams(), request_params_C); | 993 frame()->Navigate(common_params_C, StartNavigationParams(), request_params_C); |
993 ProcessPendingMessages(); | 994 ProcessPendingMessages(); |
994 render_thread_->sink().ClearMessages(); | 995 render_thread_->sink().ClearMessages(); |
995 | 996 |
996 // Go back twice quickly, such that page B does not have a chance to commit. | 997 // Go back twice quickly, such that page B does not have a chance to commit. |
997 // This leads to two changes to the back/forward list but only one change to | 998 // This leads to two changes to the back/forward list but only one change to |
998 // the RenderView's page ID. | 999 // the RenderView's page ID. |
999 | 1000 |
1000 // Back to page B without committing. | 1001 // Back to page B without committing. |
1001 CommonNavigationParams common_params_B; | 1002 CommonNavigationParams common_params_B; |
1002 RequestNavigationParams request_params_B; | 1003 RequestNavigationParams request_params_B; |
1003 common_params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1004 common_params_B.navigation_type = |
| 1005 FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT; |
1004 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 1006 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
1005 request_params_B.current_history_list_length = 4; | 1007 request_params_B.current_history_list_length = 4; |
1006 request_params_B.current_history_list_offset = 2; | 1008 request_params_B.current_history_list_offset = 2; |
1007 request_params_B.pending_history_list_offset = 1; | 1009 request_params_B.pending_history_list_offset = 1; |
1008 request_params_B.page_state = state_B; | 1010 request_params_B.page_state = state_B; |
1009 frame()->Navigate(common_params_B, StartNavigationParams(), request_params_B); | 1011 frame()->Navigate(common_params_B, StartNavigationParams(), request_params_B); |
1010 | 1012 |
1011 // Back to page A and commit. | 1013 // Back to page A and commit. |
1012 CommonNavigationParams common_params; | 1014 CommonNavigationParams common_params; |
1013 RequestNavigationParams request_params; | 1015 RequestNavigationParams request_params; |
1014 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1016 common_params.navigation_type = |
| 1017 FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT; |
1015 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 1018 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
1016 request_params.current_history_list_length = 4; | 1019 request_params.current_history_list_length = 4; |
1017 request_params.current_history_list_offset = 2; | 1020 request_params.current_history_list_offset = 2; |
1018 request_params.pending_history_list_offset = 0; | 1021 request_params.pending_history_list_offset = 0; |
1019 request_params.page_state = state_A; | 1022 request_params.page_state = state_A; |
1020 frame()->Navigate(common_params, StartNavigationParams(), request_params); | 1023 frame()->Navigate(common_params, StartNavigationParams(), request_params); |
1021 ProcessPendingMessages(); | 1024 ProcessPendingMessages(); |
1022 | 1025 |
1023 // Now ensure that the UpdateState message we receive is consistent | 1026 // Now ensure that the UpdateState message we receive is consistent |
1024 // and represents page C in state. | 1027 // and represents page C in state. |
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1344 GetMainFrame()->enableViewSourceMode(true); | 1347 GetMainFrame()->enableViewSourceMode(true); |
1345 WebURLError error; | 1348 WebURLError error; |
1346 error.domain = WebString::fromUTF8(net::kErrorDomain); | 1349 error.domain = WebString::fromUTF8(net::kErrorDomain); |
1347 error.reason = net::ERR_FILE_NOT_FOUND; | 1350 error.reason = net::ERR_FILE_NOT_FOUND; |
1348 error.unreachableURL = GURL("http://foo"); | 1351 error.unreachableURL = GURL("http://foo"); |
1349 WebLocalFrame* web_frame = GetMainFrame(); | 1352 WebLocalFrame* web_frame = GetMainFrame(); |
1350 | 1353 |
1351 // Start a load that will reach provisional state synchronously, | 1354 // Start a load that will reach provisional state synchronously, |
1352 // but won't complete synchronously. | 1355 // but won't complete synchronously. |
1353 CommonNavigationParams common_params; | 1356 CommonNavigationParams common_params; |
1354 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1357 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
1355 common_params.url = GURL("data:text/html,test data"); | 1358 common_params.url = GURL("data:text/html,test data"); |
1356 frame()->Navigate(common_params, StartNavigationParams(), | 1359 frame()->Navigate(common_params, StartNavigationParams(), |
1357 RequestNavigationParams()); | 1360 RequestNavigationParams()); |
1358 | 1361 |
1359 // An error occurred. | 1362 // An error occurred. |
1360 view()->GetMainRenderFrame()->didFailProvisionalLoad( | 1363 view()->GetMainRenderFrame()->didFailProvisionalLoad( |
1361 web_frame, error, blink::WebStandardCommit); | 1364 web_frame, error, blink::WebStandardCommit); |
1362 // Frame should exit view-source mode. | 1365 // Frame should exit view-source mode. |
1363 EXPECT_FALSE(web_frame->isViewSourceModeEnabled()); | 1366 EXPECT_FALSE(web_frame->isViewSourceModeEnabled()); |
1364 } | 1367 } |
1365 | 1368 |
1366 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { | 1369 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { |
1367 GetMainFrame()->enableViewSourceMode(true); | 1370 GetMainFrame()->enableViewSourceMode(true); |
1368 WebURLError error; | 1371 WebURLError error; |
1369 error.domain = WebString::fromUTF8(net::kErrorDomain); | 1372 error.domain = WebString::fromUTF8(net::kErrorDomain); |
1370 error.reason = net::ERR_ABORTED; | 1373 error.reason = net::ERR_ABORTED; |
1371 error.unreachableURL = GURL("http://foo"); | 1374 error.unreachableURL = GURL("http://foo"); |
1372 WebLocalFrame* web_frame = GetMainFrame(); | 1375 WebLocalFrame* web_frame = GetMainFrame(); |
1373 | 1376 |
1374 // Start a load that will reach provisional state synchronously, | 1377 // Start a load that will reach provisional state synchronously, |
1375 // but won't complete synchronously. | 1378 // but won't complete synchronously. |
1376 CommonNavigationParams common_params; | 1379 CommonNavigationParams common_params; |
1377 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1380 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
1378 common_params.url = GURL("data:text/html,test data"); | 1381 common_params.url = GURL("data:text/html,test data"); |
1379 frame()->Navigate(common_params, StartNavigationParams(), | 1382 frame()->Navigate(common_params, StartNavigationParams(), |
1380 RequestNavigationParams()); | 1383 RequestNavigationParams()); |
1381 | 1384 |
1382 // A cancellation occurred. | 1385 // A cancellation occurred. |
1383 view()->GetMainRenderFrame()->didFailProvisionalLoad( | 1386 view()->GetMainRenderFrame()->didFailProvisionalLoad( |
1384 web_frame, error, blink::WebStandardCommit); | 1387 web_frame, error, blink::WebStandardCommit); |
1385 // Frame should stay in view-source mode. | 1388 // Frame should stay in view-source mode. |
1386 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); | 1389 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); |
1387 } | 1390 } |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1679 | 1682 |
1680 // Test that the navigating specific frames works correctly. | 1683 // Test that the navigating specific frames works correctly. |
1681 TEST_F(RenderViewImplTest, NavigateSubframe) { | 1684 TEST_F(RenderViewImplTest, NavigateSubframe) { |
1682 // Load page A. | 1685 // Load page A. |
1683 LoadHTML("hello <iframe srcdoc='fail' name='frame'></iframe>"); | 1686 LoadHTML("hello <iframe srcdoc='fail' name='frame'></iframe>"); |
1684 | 1687 |
1685 // Navigate the frame only. | 1688 // Navigate the frame only. |
1686 CommonNavigationParams common_params; | 1689 CommonNavigationParams common_params; |
1687 RequestNavigationParams request_params; | 1690 RequestNavigationParams request_params; |
1688 common_params.url = GURL("data:text/html,world"); | 1691 common_params.url = GURL("data:text/html,world"); |
1689 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1692 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
1690 common_params.transition = ui::PAGE_TRANSITION_TYPED; | 1693 common_params.transition = ui::PAGE_TRANSITION_TYPED; |
1691 common_params.navigation_start = base::TimeTicks::FromInternalValue(1); | 1694 common_params.navigation_start = base::TimeTicks::FromInternalValue(1); |
1692 request_params.current_history_list_length = 1; | 1695 request_params.current_history_list_length = 1; |
1693 request_params.current_history_list_offset = 0; | 1696 request_params.current_history_list_offset = 0; |
1694 request_params.pending_history_list_offset = 1; | 1697 request_params.pending_history_list_offset = 1; |
1695 | 1698 |
1696 TestRenderFrame* subframe = | 1699 TestRenderFrame* subframe = |
1697 static_cast<TestRenderFrame*>(RenderFrameImpl::FromWebFrame( | 1700 static_cast<TestRenderFrame*>(RenderFrameImpl::FromWebFrame( |
1698 view()->webview()->findFrameByName("frame"))); | 1701 view()->webview()->findFrameByName("frame"))); |
1699 subframe->Navigate(common_params, StartNavigationParams(), request_params); | 1702 subframe->Navigate(common_params, StartNavigationParams(), request_params); |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1791 TEST_F(RendererErrorPageTest, MAYBE_Suppresses) { | 1794 TEST_F(RendererErrorPageTest, MAYBE_Suppresses) { |
1792 WebURLError error; | 1795 WebURLError error; |
1793 error.domain = WebString::fromUTF8(net::kErrorDomain); | 1796 error.domain = WebString::fromUTF8(net::kErrorDomain); |
1794 error.reason = net::ERR_FILE_NOT_FOUND; | 1797 error.reason = net::ERR_FILE_NOT_FOUND; |
1795 error.unreachableURL = GURL("http://example.com/suppress"); | 1798 error.unreachableURL = GURL("http://example.com/suppress"); |
1796 WebLocalFrame* web_frame = GetMainFrame(); | 1799 WebLocalFrame* web_frame = GetMainFrame(); |
1797 | 1800 |
1798 // Start a load that will reach provisional state synchronously, | 1801 // Start a load that will reach provisional state synchronously, |
1799 // but won't complete synchronously. | 1802 // but won't complete synchronously. |
1800 CommonNavigationParams common_params; | 1803 CommonNavigationParams common_params; |
1801 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1804 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
1802 common_params.url = GURL("data:text/html,test data"); | 1805 common_params.url = GURL("data:text/html,test data"); |
1803 TestRenderFrame* main_frame = static_cast<TestRenderFrame*>(frame()); | 1806 TestRenderFrame* main_frame = static_cast<TestRenderFrame*>(frame()); |
1804 main_frame->Navigate(common_params, StartNavigationParams(), | 1807 main_frame->Navigate(common_params, StartNavigationParams(), |
1805 RequestNavigationParams()); | 1808 RequestNavigationParams()); |
1806 | 1809 |
1807 // An error occurred. | 1810 // An error occurred. |
1808 main_frame->didFailProvisionalLoad(web_frame, error, | 1811 main_frame->didFailProvisionalLoad(web_frame, error, |
1809 blink::WebStandardCommit); | 1812 blink::WebStandardCommit); |
1810 const int kMaxOutputCharacters = 22; | 1813 const int kMaxOutputCharacters = 22; |
1811 EXPECT_EQ("", WebFrameContentDumper::dumpWebViewAsText(view()->GetWebView(), | 1814 EXPECT_EQ("", WebFrameContentDumper::dumpWebViewAsText(view()->GetWebView(), |
(...skipping 11 matching lines...) Expand all Loading... |
1823 TEST_F(RendererErrorPageTest, MAYBE_DoesNotSuppress) { | 1826 TEST_F(RendererErrorPageTest, MAYBE_DoesNotSuppress) { |
1824 WebURLError error; | 1827 WebURLError error; |
1825 error.domain = WebString::fromUTF8(net::kErrorDomain); | 1828 error.domain = WebString::fromUTF8(net::kErrorDomain); |
1826 error.reason = net::ERR_FILE_NOT_FOUND; | 1829 error.reason = net::ERR_FILE_NOT_FOUND; |
1827 error.unreachableURL = GURL("http://example.com/dont-suppress"); | 1830 error.unreachableURL = GURL("http://example.com/dont-suppress"); |
1828 WebLocalFrame* web_frame = GetMainFrame(); | 1831 WebLocalFrame* web_frame = GetMainFrame(); |
1829 | 1832 |
1830 // Start a load that will reach provisional state synchronously, | 1833 // Start a load that will reach provisional state synchronously, |
1831 // but won't complete synchronously. | 1834 // but won't complete synchronously. |
1832 CommonNavigationParams common_params; | 1835 CommonNavigationParams common_params; |
1833 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1836 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
1834 common_params.url = GURL("data:text/html,test data"); | 1837 common_params.url = GURL("data:text/html,test data"); |
1835 TestRenderFrame* main_frame = static_cast<TestRenderFrame*>(frame()); | 1838 TestRenderFrame* main_frame = static_cast<TestRenderFrame*>(frame()); |
1836 main_frame->Navigate(common_params, StartNavigationParams(), | 1839 main_frame->Navigate(common_params, StartNavigationParams(), |
1837 RequestNavigationParams()); | 1840 RequestNavigationParams()); |
1838 | 1841 |
1839 // An error occurred. | 1842 // An error occurred. |
1840 main_frame->didFailProvisionalLoad(web_frame, error, | 1843 main_frame->didFailProvisionalLoad(web_frame, error, |
1841 blink::WebStandardCommit); | 1844 blink::WebStandardCommit); |
1842 | 1845 |
1843 // The error page itself is loaded asynchronously. | 1846 // The error page itself is loaded asynchronously. |
(...skipping 13 matching lines...) Expand all Loading... |
1857 #define MAYBE_HttpStatusCodeErrorWithEmptyBody HttpStatusCodeErrorWithEmptyBody | 1860 #define MAYBE_HttpStatusCodeErrorWithEmptyBody HttpStatusCodeErrorWithEmptyBody |
1858 #endif | 1861 #endif |
1859 TEST_F(RendererErrorPageTest, MAYBE_HttpStatusCodeErrorWithEmptyBody) { | 1862 TEST_F(RendererErrorPageTest, MAYBE_HttpStatusCodeErrorWithEmptyBody) { |
1860 blink::WebURLResponse response; | 1863 blink::WebURLResponse response; |
1861 response.setHTTPStatusCode(503); | 1864 response.setHTTPStatusCode(503); |
1862 WebLocalFrame* web_frame = GetMainFrame(); | 1865 WebLocalFrame* web_frame = GetMainFrame(); |
1863 | 1866 |
1864 // Start a load that will reach provisional state synchronously, | 1867 // Start a load that will reach provisional state synchronously, |
1865 // but won't complete synchronously. | 1868 // but won't complete synchronously. |
1866 CommonNavigationParams common_params; | 1869 CommonNavigationParams common_params; |
1867 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1870 common_params.navigation_type = FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT; |
1868 common_params.url = GURL("data:text/html,test data"); | 1871 common_params.url = GURL("data:text/html,test data"); |
1869 TestRenderFrame* main_frame = static_cast<TestRenderFrame*>(frame()); | 1872 TestRenderFrame* main_frame = static_cast<TestRenderFrame*>(frame()); |
1870 main_frame->Navigate(common_params, StartNavigationParams(), | 1873 main_frame->Navigate(common_params, StartNavigationParams(), |
1871 RequestNavigationParams()); | 1874 RequestNavigationParams()); |
1872 | 1875 |
1873 // Emulate a 4xx/5xx main resource response with an empty body. | 1876 // Emulate a 4xx/5xx main resource response with an empty body. |
1874 main_frame->didReceiveResponse(response); | 1877 main_frame->didReceiveResponse(response); |
1875 main_frame->didFinishDocumentLoad(web_frame); | 1878 main_frame->didFinishDocumentLoad(web_frame); |
1876 main_frame->runScriptsAtDocumentReady(web_frame, true); | 1879 main_frame->runScriptsAtDocumentReady(web_frame, true); |
1877 | 1880 |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2106 LoadHTML("<div id=pagename>Page C</div>"); | 2109 LoadHTML("<div id=pagename>Page C</div>"); |
2107 PageState forward_state = GetCurrentPageState(); | 2110 PageState forward_state = GetCurrentPageState(); |
2108 ProcessPendingMessages(); | 2111 ProcessPendingMessages(); |
2109 render_thread_->sink().ClearMessages(); | 2112 render_thread_->sink().ClearMessages(); |
2110 | 2113 |
2111 // Go back. | 2114 // Go back. |
2112 CommonNavigationParams common_params_back; | 2115 CommonNavigationParams common_params_back; |
2113 common_params_back.url = | 2116 common_params_back.url = |
2114 GURL("data:text/html;charset=utf-8,<div id=pagename>Page B</div>"); | 2117 GURL("data:text/html;charset=utf-8,<div id=pagename>Page B</div>"); |
2115 common_params_back.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 2118 common_params_back.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
| 2119 common_params_back.navigation_type = |
| 2120 FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT; |
2116 GoToOffsetWithParams(-1, back_state, common_params_back, | 2121 GoToOffsetWithParams(-1, back_state, common_params_back, |
2117 StartNavigationParams(), RequestNavigationParams()); | 2122 StartNavigationParams(), RequestNavigationParams()); |
2118 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params = | 2123 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params = |
2119 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); | 2124 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); |
2120 if (!IsBrowserSideNavigationEnabled()) { | 2125 if (!IsBrowserSideNavigationEnabled()) { |
2121 // The browser navigation_start should not be used because beforeunload was | 2126 // The browser navigation_start should not be used because beforeunload was |
2122 // fired during GoToOffsetWithParams. | 2127 // fired during GoToOffsetWithParams. |
2123 EXPECT_PRED2(TimeTicksGT, std::get<1>(host_nav_params), | 2128 EXPECT_PRED2(TimeTicksGT, std::get<1>(host_nav_params), |
2124 common_params_back.navigation_start); | 2129 common_params_back.navigation_start); |
2125 } else { | 2130 } else { |
2126 // PlzNavigate: the browser navigation_start is always used. | 2131 // PlzNavigate: the browser navigation_start is always used. |
2127 EXPECT_EQ(common_params_back.navigation_start, | 2132 EXPECT_EQ(common_params_back.navigation_start, |
2128 std::get<1>(host_nav_params)); | 2133 std::get<1>(host_nav_params)); |
2129 } | 2134 } |
2130 render_thread_->sink().ClearMessages(); | 2135 render_thread_->sink().ClearMessages(); |
2131 | 2136 |
2132 // Go forward. | 2137 // Go forward. |
2133 CommonNavigationParams common_params_forward; | 2138 CommonNavigationParams common_params_forward; |
2134 common_params_forward.url = | 2139 common_params_forward.url = |
2135 GURL("data:text/html;charset=utf-8,<div id=pagename>Page C</div>"); | 2140 GURL("data:text/html;charset=utf-8,<div id=pagename>Page C</div>"); |
2136 common_params_forward.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 2141 common_params_forward.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
| 2142 common_params_forward.navigation_type = |
| 2143 FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT; |
2137 GoToOffsetWithParams(1, forward_state, common_params_forward, | 2144 GoToOffsetWithParams(1, forward_state, common_params_forward, |
2138 StartNavigationParams(), RequestNavigationParams()); | 2145 StartNavigationParams(), RequestNavigationParams()); |
2139 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params2 = | 2146 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params2 = |
2140 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); | 2147 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); |
2141 if (!IsBrowserSideNavigationEnabled()) { | 2148 if (!IsBrowserSideNavigationEnabled()) { |
2142 EXPECT_PRED2(TimeTicksGT, std::get<1>(host_nav_params2), | 2149 EXPECT_PRED2(TimeTicksGT, std::get<1>(host_nav_params2), |
2143 common_params_forward.navigation_start); | 2150 common_params_forward.navigation_start); |
2144 } else { | 2151 } else { |
2145 EXPECT_EQ(common_params_forward.navigation_start, | 2152 EXPECT_EQ(common_params_forward.navigation_start, |
2146 std::get<1>(host_nav_params2)); | 2153 std::get<1>(host_nav_params2)); |
2147 } | 2154 } |
2148 } | 2155 } |
2149 | 2156 |
2150 TEST_F(RenderViewImplTest, NavigationStartForCrossProcessHistoryNavigation) { | 2157 TEST_F(RenderViewImplTest, NavigationStartForCrossProcessHistoryNavigation) { |
2151 auto common_params = MakeCommonNavigationParams(-TimeDelta::FromSeconds(1)); | 2158 auto common_params = MakeCommonNavigationParams(-TimeDelta::FromSeconds(1)); |
2152 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 2159 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
| 2160 common_params.navigation_type = |
| 2161 FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT; |
2153 | 2162 |
2154 RequestNavigationParams request_params; | 2163 RequestNavigationParams request_params; |
2155 request_params.page_state = | 2164 request_params.page_state = |
2156 PageState::CreateForTesting(common_params.url, false, nullptr, nullptr); | 2165 PageState::CreateForTesting(common_params.url, false, nullptr, nullptr); |
2157 request_params.nav_entry_id = 42; | 2166 request_params.nav_entry_id = 42; |
2158 request_params.pending_history_list_offset = 1; | 2167 request_params.pending_history_list_offset = 1; |
2159 request_params.current_history_list_offset = 0; | 2168 request_params.current_history_list_offset = 0; |
2160 request_params.current_history_list_length = 1; | 2169 request_params.current_history_list_length = 1; |
2161 frame()->Navigate(common_params, StartNavigationParams(), request_params); | 2170 frame()->Navigate(common_params, StartNavigationParams(), request_params); |
2162 | 2171 |
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2565 ExpectPauseAndResume(3); | 2574 ExpectPauseAndResume(3); |
2566 blink::WebScriptSource source2( | 2575 blink::WebScriptSource source2( |
2567 WebString::fromUTF8("function func2() { func1(); }; func2();")); | 2576 WebString::fromUTF8("function func2() { func1(); }; func2();")); |
2568 frame()->GetWebFrame()->executeScriptInIsolatedWorld(17, &source2, 1); | 2577 frame()->GetWebFrame()->executeScriptInIsolatedWorld(17, &source2, 1); |
2569 | 2578 |
2570 EXPECT_FALSE(IsPaused()); | 2579 EXPECT_FALSE(IsPaused()); |
2571 Detach(); | 2580 Detach(); |
2572 } | 2581 } |
2573 | 2582 |
2574 } // namespace content | 2583 } // namespace content |
OLD | NEW |