| 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 |