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