Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1605)

Side by Side Diff: content/renderer/render_view_browsertest.cc

Issue 1064413003: PlzNavigate: make RenderViewtest helper functions work (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/renderer/render_frame_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/memory/shared_memory.h" 8 #include "base/memory/shared_memory.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 278
279 const gfx::Size& GetPreferredSize() { 279 const gfx::Size& GetPreferredSize() {
280 view()->CheckPreferredSize(); 280 view()->CheckPreferredSize();
281 return view()->preferred_size_; 281 return view()->preferred_size_;
282 } 282 }
283 283
284 void SetZoomLevel(double level) { 284 void SetZoomLevel(double level) {
285 view()->OnSetZoomLevelForView(false, level); 285 view()->OnSetZoomLevelForView(false, level);
286 } 286 }
287 287
288 void NavigateFrame(const CommonNavigationParams& common_params,
289 const StartNavigationParams& start_params,
290 const RequestNavigationParams& request_params) {
291 // PlzNavigate
292 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
293 switches::kEnableBrowserSideNavigation)) {
294 frame()->OnCommitNavigation(ResourceResponseHead(), common_params.url,
295 common_params, request_params);
296 return;
297 }
298 frame()->OnNavigate(common_params, start_params, request_params);
299 }
300
288 private: 301 private:
289 scoped_ptr<MockKeyboard> mock_keyboard_; 302 scoped_ptr<MockKeyboard> mock_keyboard_;
290 }; 303 };
291 304
292 class DevToolsAgentTest : public RenderViewImplTest { 305 class DevToolsAgentTest : public RenderViewImplTest {
293 public: 306 public:
294 void Attach() { 307 void Attach() {
295 std::string host_id = "host_id"; 308 std::string host_id = "host_id";
296 agent()->OnAttach(host_id); 309 agent()->OnAttach(host_id);
297 } 310 }
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 request_params.page_id = -1; 438 request_params.page_id = -1;
426 439
427 // Set up post data. 440 // Set up post data.
428 const unsigned char* raw_data = reinterpret_cast<const unsigned char*>( 441 const unsigned char* raw_data = reinterpret_cast<const unsigned char*>(
429 "post \0\ndata"); 442 "post \0\ndata");
430 const unsigned int length = 11; 443 const unsigned int length = 11;
431 const std::vector<unsigned char> post_data(raw_data, raw_data + length); 444 const std::vector<unsigned char> post_data(raw_data, raw_data + length);
432 start_params.is_post = true; 445 start_params.is_post = true;
433 start_params.browser_initiated_post_data = post_data; 446 start_params.browser_initiated_post_data = post_data;
434 447
435 frame()->OnNavigate(common_params, start_params, request_params); 448 NavigateFrame(common_params, start_params, request_params);
436 ProcessPendingMessages(); 449 ProcessPendingMessages();
437 450
438 const IPC::Message* frame_navigate_msg = 451 const IPC::Message* frame_navigate_msg =
439 render_thread_->sink().GetUniqueMessageMatching( 452 render_thread_->sink().GetUniqueMessageMatching(
440 FrameHostMsg_DidCommitProvisionalLoad::ID); 453 FrameHostMsg_DidCommitProvisionalLoad::ID);
441 EXPECT_TRUE(frame_navigate_msg); 454 EXPECT_TRUE(frame_navigate_msg);
442 455
443 FrameHostMsg_DidCommitProvisionalLoad::Param host_nav_params; 456 FrameHostMsg_DidCommitProvisionalLoad::Param host_nav_params;
444 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg, 457 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg,
445 &host_nav_params); 458 &host_nav_params);
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 // update for the swapped out URL. (http://crbug.com/72235) 639 // update for the swapped out URL. (http://crbug.com/72235)
627 CommonNavigationParams common_params; 640 CommonNavigationParams common_params;
628 RequestNavigationParams request_params; 641 RequestNavigationParams request_params;
629 common_params.url = GURL("data:text/html,<div>Page B</div>"); 642 common_params.url = GURL("data:text/html,<div>Page B</div>");
630 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 643 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
631 common_params.transition = ui::PAGE_TRANSITION_TYPED; 644 common_params.transition = ui::PAGE_TRANSITION_TYPED;
632 request_params.current_history_list_length = 1; 645 request_params.current_history_list_length = 1;
633 request_params.current_history_list_offset = 0; 646 request_params.current_history_list_offset = 0;
634 request_params.pending_history_list_offset = 1; 647 request_params.pending_history_list_offset = 1;
635 request_params.page_id = -1; 648 request_params.page_id = -1;
636 frame()->OnNavigate(common_params, StartNavigationParams(), request_params); 649 NavigateFrame(common_params, StartNavigationParams(), request_params);
637 ProcessPendingMessages(); 650 ProcessPendingMessages();
638 const IPC::Message* msg3 = render_thread_->sink().GetUniqueMessageMatching( 651 const IPC::Message* msg3 = render_thread_->sink().GetUniqueMessageMatching(
639 ViewHostMsg_UpdateState::ID); 652 ViewHostMsg_UpdateState::ID);
640 EXPECT_FALSE(msg3); 653 EXPECT_FALSE(msg3);
641 } 654 }
642 655
643 // Ensure the RenderViewImpl reloads the previous page if a reload request 656 // Ensure the RenderViewImpl reloads the previous page if a reload request
644 // arrives while it is showing swappedout://. http://crbug.com/143155. 657 // arrives while it is showing swappedout://. http://crbug.com/143155.
645 TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) { 658 TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) {
646 // Load page A. 659 // Load page A.
(...skipping 17 matching lines...) Expand all
664 // Back to page A (page_id 1) and commit. 677 // Back to page A (page_id 1) and commit.
665 CommonNavigationParams common_params_A; 678 CommonNavigationParams common_params_A;
666 RequestNavigationParams request_params_A; 679 RequestNavigationParams request_params_A;
667 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; 680 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL;
668 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 681 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
669 request_params_A.current_history_list_length = 2; 682 request_params_A.current_history_list_length = 2;
670 request_params_A.current_history_list_offset = 1; 683 request_params_A.current_history_list_offset = 1;
671 request_params_A.pending_history_list_offset = 0; 684 request_params_A.pending_history_list_offset = 0;
672 request_params_A.page_id = 1; 685 request_params_A.page_id = 1;
673 request_params_A.page_state = state_A; 686 request_params_A.page_state = state_A;
674 frame()->OnNavigate(common_params_A, StartNavigationParams(), 687 NavigateFrame(common_params_A, StartNavigationParams(), request_params_A);
675 request_params_A);
676 EXPECT_EQ(1, view()->historyBackListCount()); 688 EXPECT_EQ(1, view()->historyBackListCount());
677 EXPECT_EQ(2, view()->historyBackListCount() + 689 EXPECT_EQ(2, view()->historyBackListCount() +
678 view()->historyForwardListCount() + 1); 690 view()->historyForwardListCount() + 1);
679 ProcessPendingMessages(); 691 ProcessPendingMessages();
680 692
681 // Respond to a swap out request. 693 // Respond to a swap out request.
682 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId, true, 694 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId, true,
683 content::FrameReplicationState()); 695 content::FrameReplicationState());
684 696
685 // Check for a OnSwapOutACK. 697 // Check for a OnSwapOutACK.
686 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 698 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
687 FrameHostMsg_SwapOut_ACK::ID); 699 FrameHostMsg_SwapOut_ACK::ID);
688 ASSERT_TRUE(msg); 700 ASSERT_TRUE(msg);
689 render_thread_->sink().ClearMessages(); 701 render_thread_->sink().ClearMessages();
690 702
691 // It is possible to get a reload request at this point, containing the 703 // It is possible to get a reload request at this point, containing the
692 // params.page_state of the initial page (e.g., if the new page fails the 704 // params.page_state of the initial page (e.g., if the new page fails the
693 // provisional load in the renderer process, after we unload the old page). 705 // provisional load in the renderer process, after we unload the old page).
694 // Ensure the old page gets reloaded, not swappedout://. 706 // Ensure the old page gets reloaded, not swappedout://.
695 CommonNavigationParams common_params; 707 CommonNavigationParams common_params;
696 RequestNavigationParams request_params; 708 RequestNavigationParams request_params;
697 common_params.url = GURL("data:text/html,<div>Page A</div>"); 709 common_params.url = GURL("data:text/html,<div>Page A</div>");
698 common_params.navigation_type = FrameMsg_Navigate_Type::RELOAD; 710 common_params.navigation_type = FrameMsg_Navigate_Type::RELOAD;
699 common_params.transition = ui::PAGE_TRANSITION_RELOAD; 711 common_params.transition = ui::PAGE_TRANSITION_RELOAD;
700 request_params.current_history_list_length = 2; 712 request_params.current_history_list_length = 2;
701 request_params.current_history_list_offset = 0; 713 request_params.current_history_list_offset = 0;
702 request_params.pending_history_list_offset = 0; 714 request_params.pending_history_list_offset = 0;
703 request_params.page_id = 1; 715 request_params.page_id = 1;
704 request_params.page_state = state_A; 716 request_params.page_state = state_A;
705 frame()->OnNavigate(common_params, StartNavigationParams(), request_params); 717 NavigateFrame(common_params, StartNavigationParams(), request_params);
706 ProcessPendingMessages(); 718 ProcessPendingMessages();
707 719
708 // Verify page A committed, not swappedout://. 720 // Verify page A committed, not swappedout://.
709 const IPC::Message* frame_navigate_msg = 721 const IPC::Message* frame_navigate_msg =
710 render_thread_->sink().GetUniqueMessageMatching( 722 render_thread_->sink().GetUniqueMessageMatching(
711 FrameHostMsg_DidCommitProvisionalLoad::ID); 723 FrameHostMsg_DidCommitProvisionalLoad::ID);
712 EXPECT_TRUE(frame_navigate_msg); 724 EXPECT_TRUE(frame_navigate_msg);
713 725
714 // Read URL out of the parent trait of the params object. 726 // Read URL out of the parent trait of the params object.
715 FrameHostMsg_DidCommitProvisionalLoad::Param commit_load_params; 727 FrameHostMsg_DidCommitProvisionalLoad::Param commit_load_params;
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 // Go back to C and commit, preparing for our real test. 825 // Go back to C and commit, preparing for our real test.
814 CommonNavigationParams common_params_C; 826 CommonNavigationParams common_params_C;
815 RequestNavigationParams request_params_C; 827 RequestNavigationParams request_params_C;
816 common_params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL; 828 common_params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL;
817 common_params_C.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 829 common_params_C.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
818 request_params_C.current_history_list_length = 4; 830 request_params_C.current_history_list_length = 4;
819 request_params_C.current_history_list_offset = 3; 831 request_params_C.current_history_list_offset = 3;
820 request_params_C.pending_history_list_offset = 2; 832 request_params_C.pending_history_list_offset = 2;
821 request_params_C.page_id = 3; 833 request_params_C.page_id = 3;
822 request_params_C.page_state = state_C; 834 request_params_C.page_state = state_C;
823 frame()->OnNavigate(common_params_C, StartNavigationParams(), 835 NavigateFrame(common_params_C, StartNavigationParams(), request_params_C);
824 request_params_C);
825 ProcessPendingMessages(); 836 ProcessPendingMessages();
826 render_thread_->sink().ClearMessages(); 837 render_thread_->sink().ClearMessages();
827 838
828 // Go back twice quickly, such that page B does not have a chance to commit. 839 // Go back twice quickly, such that page B does not have a chance to commit.
829 // This leads to two changes to the back/forward list but only one change to 840 // This leads to two changes to the back/forward list but only one change to
830 // the RenderView's page ID. 841 // the RenderView's page ID.
831 842
832 // Back to page B (page_id 2), without committing. 843 // Back to page B (page_id 2), without committing.
833 CommonNavigationParams common_params_B; 844 CommonNavigationParams common_params_B;
834 RequestNavigationParams request_params_B; 845 RequestNavigationParams request_params_B;
835 common_params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; 846 common_params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL;
836 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 847 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
837 request_params_B.current_history_list_length = 4; 848 request_params_B.current_history_list_length = 4;
838 request_params_B.current_history_list_offset = 2; 849 request_params_B.current_history_list_offset = 2;
839 request_params_B.pending_history_list_offset = 1; 850 request_params_B.pending_history_list_offset = 1;
840 request_params_B.page_id = 2; 851 request_params_B.page_id = 2;
841 request_params_B.page_state = state_B; 852 request_params_B.page_state = state_B;
842 frame()->OnNavigate(common_params_B, StartNavigationParams(), 853 NavigateFrame(common_params_B, StartNavigationParams(), request_params_B);
843 request_params_B);
844 854
845 // Back to page A (page_id 1) and commit. 855 // Back to page A (page_id 1) and commit.
846 CommonNavigationParams common_params; 856 CommonNavigationParams common_params;
847 RequestNavigationParams request_params; 857 RequestNavigationParams request_params;
848 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 858 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
849 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 859 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
850 request_params.current_history_list_length = 4; 860 request_params.current_history_list_length = 4;
851 request_params.current_history_list_offset = 2; 861 request_params.current_history_list_offset = 2;
852 request_params.pending_history_list_offset = 0; 862 request_params.pending_history_list_offset = 0;
853 request_params.page_id = 1; 863 request_params.page_id = 1;
854 request_params.page_state = state_A; 864 request_params.page_state = state_A;
855 frame()->OnNavigate(common_params, StartNavigationParams(), request_params); 865 NavigateFrame(common_params, StartNavigationParams(), request_params);
856 ProcessPendingMessages(); 866 ProcessPendingMessages();
857 867
858 // Now ensure that the UpdateState message we receive is consistent 868 // Now ensure that the UpdateState message we receive is consistent
859 // and represents page C in both page_id and state. 869 // and represents page C in both page_id and state.
860 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 870 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
861 ViewHostMsg_UpdateState::ID); 871 ViewHostMsg_UpdateState::ID);
862 ASSERT_TRUE(msg); 872 ASSERT_TRUE(msg);
863 ViewHostMsg_UpdateState::Read(msg, &param); 873 ViewHostMsg_UpdateState::Read(msg, &param);
864 int page_id = get<0>(param); 874 int page_id = get<0>(param);
865 PageState state = get<1>(param); 875 PageState state = get<1>(param);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
897 // Back to page A (page_id 1) and commit. 907 // Back to page A (page_id 1) and commit.
898 CommonNavigationParams common_params_A; 908 CommonNavigationParams common_params_A;
899 RequestNavigationParams request_params_A; 909 RequestNavigationParams request_params_A;
900 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; 910 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL;
901 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 911 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
902 request_params_A.current_history_list_length = 2; 912 request_params_A.current_history_list_length = 2;
903 request_params_A.current_history_list_offset = 1; 913 request_params_A.current_history_list_offset = 1;
904 request_params_A.pending_history_list_offset = 0; 914 request_params_A.pending_history_list_offset = 0;
905 request_params_A.page_id = 1; 915 request_params_A.page_id = 1;
906 request_params_A.page_state = state_A; 916 request_params_A.page_state = state_A;
907 frame()->OnNavigate(common_params_A, StartNavigationParams(), 917 NavigateFrame(common_params_A, StartNavigationParams(), request_params_A);
908 request_params_A);
909 ProcessPendingMessages(); 918 ProcessPendingMessages();
910 919
911 // A new navigation commits, clearing the forward history. 920 // A new navigation commits, clearing the forward history.
912 LoadHTML("<div>Page C</div>"); 921 LoadHTML("<div>Page C</div>");
913 EXPECT_EQ(2, view()->history_list_length_); 922 EXPECT_EQ(2, view()->history_list_length_);
914 EXPECT_EQ(1, view()->history_list_offset_); 923 EXPECT_EQ(1, view()->history_list_offset_);
915 EXPECT_EQ(3, view()->page_id_); // page C is now page id 3 924 EXPECT_EQ(3, view()->page_id_); // page C is now page id 3
916 925
917 // The browser then sends a stale navigation to B, which should be ignored. 926 // The browser then sends a stale navigation to B, which should be ignored.
918 CommonNavigationParams common_params_B; 927 CommonNavigationParams common_params_B;
919 RequestNavigationParams request_params_B; 928 RequestNavigationParams request_params_B;
920 common_params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; 929 common_params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL;
921 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 930 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
922 request_params_B.current_history_list_length = 2; 931 request_params_B.current_history_list_length = 2;
923 request_params_B.current_history_list_offset = 0; 932 request_params_B.current_history_list_offset = 0;
924 request_params_B.pending_history_list_offset = 1; 933 request_params_B.pending_history_list_offset = 1;
925 request_params_B.page_id = 2; 934 request_params_B.page_id = 2;
926 request_params_B.page_state = 935 request_params_B.page_state =
927 state_A; // Doesn't matter, just has to be present. 936 state_A; // Doesn't matter, just has to be present.
928 frame()->OnNavigate(common_params_B, StartNavigationParams(), 937 NavigateFrame(common_params_B, StartNavigationParams(), request_params_B);
929 request_params_B);
930 938
931 // State should be unchanged. 939 // State should be unchanged.
932 EXPECT_EQ(2, view()->history_list_length_); 940 EXPECT_EQ(2, view()->history_list_length_);
933 EXPECT_EQ(1, view()->history_list_offset_); 941 EXPECT_EQ(1, view()->history_list_offset_);
934 EXPECT_EQ(3, view()->page_id_); // page C, not page B 942 EXPECT_EQ(3, view()->page_id_); // page C, not page B
935 943
936 // Check for a valid DidDropNavigation message. 944 // Check for a valid DidDropNavigation message.
937 ProcessPendingMessages(); 945 ProcessPendingMessages();
938 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 946 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
939 FrameHostMsg_DidDropNavigation::ID); 947 FrameHostMsg_DidDropNavigation::ID);
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after
1634 error.domain = WebString::fromUTF8(net::kErrorDomain); 1642 error.domain = WebString::fromUTF8(net::kErrorDomain);
1635 error.reason = net::ERR_FILE_NOT_FOUND; 1643 error.reason = net::ERR_FILE_NOT_FOUND;
1636 error.unreachableURL = GURL("http://foo"); 1644 error.unreachableURL = GURL("http://foo");
1637 WebLocalFrame* web_frame = GetMainFrame(); 1645 WebLocalFrame* web_frame = GetMainFrame();
1638 1646
1639 // Start a load that will reach provisional state synchronously, 1647 // Start a load that will reach provisional state synchronously,
1640 // but won't complete synchronously. 1648 // but won't complete synchronously.
1641 CommonNavigationParams common_params; 1649 CommonNavigationParams common_params;
1642 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 1650 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1643 common_params.url = GURL("data:text/html,test data"); 1651 common_params.url = GURL("data:text/html,test data");
1644 frame()->OnNavigate(common_params, StartNavigationParams(), 1652 NavigateFrame(common_params, StartNavigationParams(),
1645 RequestNavigationParams()); 1653 RequestNavigationParams());
1646 1654
1647 // An error occurred. 1655 // An error occurred.
1648 view()->GetMainRenderFrame()->didFailProvisionalLoad( 1656 view()->GetMainRenderFrame()->didFailProvisionalLoad(
1649 web_frame, error, blink::WebStandardCommit); 1657 web_frame, error, blink::WebStandardCommit);
1650 // Frame should exit view-source mode. 1658 // Frame should exit view-source mode.
1651 EXPECT_FALSE(web_frame->isViewSourceModeEnabled()); 1659 EXPECT_FALSE(web_frame->isViewSourceModeEnabled());
1652 } 1660 }
1653 1661
1654 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { 1662 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) {
1655 GetMainFrame()->enableViewSourceMode(true); 1663 GetMainFrame()->enableViewSourceMode(true);
1656 WebURLError error; 1664 WebURLError error;
1657 error.domain = WebString::fromUTF8(net::kErrorDomain); 1665 error.domain = WebString::fromUTF8(net::kErrorDomain);
1658 error.reason = net::ERR_ABORTED; 1666 error.reason = net::ERR_ABORTED;
1659 error.unreachableURL = GURL("http://foo"); 1667 error.unreachableURL = GURL("http://foo");
1660 WebLocalFrame* web_frame = GetMainFrame(); 1668 WebLocalFrame* web_frame = GetMainFrame();
1661 1669
1662 // Start a load that will reach provisional state synchronously, 1670 // Start a load that will reach provisional state synchronously,
1663 // but won't complete synchronously. 1671 // but won't complete synchronously.
1664 CommonNavigationParams common_params; 1672 CommonNavigationParams common_params;
1665 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 1673 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1666 common_params.url = GURL("data:text/html,test data"); 1674 common_params.url = GURL("data:text/html,test data");
1667 frame()->OnNavigate(common_params, StartNavigationParams(), 1675 NavigateFrame(common_params, StartNavigationParams(),
1668 RequestNavigationParams()); 1676 RequestNavigationParams());
1669 1677
1670 // A cancellation occurred. 1678 // A cancellation occurred.
1671 view()->GetMainRenderFrame()->didFailProvisionalLoad( 1679 view()->GetMainRenderFrame()->didFailProvisionalLoad(
1672 web_frame, error, blink::WebStandardCommit); 1680 web_frame, error, blink::WebStandardCommit);
1673 // Frame should stay in view-source mode. 1681 // Frame should stay in view-source mode.
1674 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); 1682 EXPECT_TRUE(web_frame->isViewSourceModeEnabled());
1675 } 1683 }
1676 1684
1677 // Regression test for http://crbug.com/41562 1685 // Regression test for http://crbug.com/41562
1678 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) { 1686 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) {
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
1855 TEST_F(RenderViewImplTest, ZoomLimit) { 1863 TEST_F(RenderViewImplTest, ZoomLimit) {
1856 const double kMinZoomLevel = ZoomFactorToZoomLevel(kMinimumZoomFactor); 1864 const double kMinZoomLevel = ZoomFactorToZoomLevel(kMinimumZoomFactor);
1857 const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor); 1865 const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor);
1858 1866
1859 // Verifies navigation to a URL with preset zoom level indeed sets the level. 1867 // Verifies navigation to a URL with preset zoom level indeed sets the level.
1860 // Regression test for http://crbug.com/139559, where the level was not 1868 // Regression test for http://crbug.com/139559, where the level was not
1861 // properly set when it is out of the default zoom limits of WebView. 1869 // properly set when it is out of the default zoom limits of WebView.
1862 CommonNavigationParams common_params; 1870 CommonNavigationParams common_params;
1863 common_params.url = GURL("data:text/html,min_zoomlimit_test"); 1871 common_params.url = GURL("data:text/html,min_zoomlimit_test");
1864 view()->OnSetZoomLevelForLoadingURL(common_params.url, kMinZoomLevel); 1872 view()->OnSetZoomLevelForLoadingURL(common_params.url, kMinZoomLevel);
1865 frame()->OnNavigate(common_params, StartNavigationParams(), 1873 NavigateFrame(common_params, StartNavigationParams(),
1866 RequestNavigationParams()); 1874 RequestNavigationParams());
1867 ProcessPendingMessages(); 1875 ProcessPendingMessages();
1868 EXPECT_DOUBLE_EQ(kMinZoomLevel, view()->GetWebView()->zoomLevel()); 1876 EXPECT_DOUBLE_EQ(kMinZoomLevel, view()->GetWebView()->zoomLevel());
1869 1877
1870 // It should work even when the zoom limit is temporarily changed in the page. 1878 // It should work even when the zoom limit is temporarily changed in the page.
1871 view()->GetWebView()->zoomLimitsChanged(ZoomFactorToZoomLevel(1.0), 1879 view()->GetWebView()->zoomLimitsChanged(ZoomFactorToZoomLevel(1.0),
1872 ZoomFactorToZoomLevel(1.0)); 1880 ZoomFactorToZoomLevel(1.0));
1873 common_params.url = GURL("data:text/html,max_zoomlimit_test"); 1881 common_params.url = GURL("data:text/html,max_zoomlimit_test");
1874 view()->OnSetZoomLevelForLoadingURL(common_params.url, kMaxZoomLevel); 1882 view()->OnSetZoomLevelForLoadingURL(common_params.url, kMaxZoomLevel);
1875 frame()->OnNavigate(common_params, StartNavigationParams(), 1883 NavigateFrame(common_params, StartNavigationParams(),
1876 RequestNavigationParams()); 1884 RequestNavigationParams());
1877 ProcessPendingMessages(); 1885 ProcessPendingMessages();
1878 EXPECT_DOUBLE_EQ(kMaxZoomLevel, view()->GetWebView()->zoomLevel()); 1886 EXPECT_DOUBLE_EQ(kMaxZoomLevel, view()->GetWebView()->zoomLevel());
1879 } 1887 }
1880 1888
1881 TEST_F(RenderViewImplTest, SetEditableSelectionAndComposition) { 1889 TEST_F(RenderViewImplTest, SetEditableSelectionAndComposition) {
1882 // Load an HTML page consisting of an input field. 1890 // Load an HTML page consisting of an input field.
1883 LoadHTML("<html>" 1891 LoadHTML("<html>"
1884 "<head>" 1892 "<head>"
1885 "</head>" 1893 "</head>"
1886 "<body>" 1894 "<body>"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1938 common_params.url = GURL("data:text/html,world"); 1946 common_params.url = GURL("data:text/html,world");
1939 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 1947 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1940 common_params.transition = ui::PAGE_TRANSITION_TYPED; 1948 common_params.transition = ui::PAGE_TRANSITION_TYPED;
1941 request_params.current_history_list_length = 1; 1949 request_params.current_history_list_length = 1;
1942 request_params.current_history_list_offset = 0; 1950 request_params.current_history_list_offset = 0;
1943 request_params.pending_history_list_offset = 1; 1951 request_params.pending_history_list_offset = 1;
1944 request_params.page_id = -1; 1952 request_params.page_id = -1;
1945 request_params.frame_to_navigate = "frame"; 1953 request_params.frame_to_navigate = "frame";
1946 request_params.browser_navigation_start = 1954 request_params.browser_navigation_start =
1947 base::TimeTicks::FromInternalValue(1); 1955 base::TimeTicks::FromInternalValue(1);
1948 frame()->OnNavigate(common_params, StartNavigationParams(), request_params); 1956 NavigateFrame(common_params, StartNavigationParams(), request_params);
1949 FrameLoadWaiter( 1957 FrameLoadWaiter(
1950 RenderFrame::FromWebFrame(frame()->GetWebFrame()->firstChild())).Wait(); 1958 RenderFrame::FromWebFrame(frame()->GetWebFrame()->firstChild())).Wait();
1951 1959
1952 // Copy the document content to std::wstring and compare with the 1960 // Copy the document content to std::wstring and compare with the
1953 // expected result. 1961 // expected result.
1954 const int kMaxOutputCharacters = 256; 1962 const int kMaxOutputCharacters = 256;
1955 std::string output = base::UTF16ToUTF8( 1963 std::string output = base::UTF16ToUTF8(
1956 GetMainFrame()->contentAsText(kMaxOutputCharacters)); 1964 GetMainFrame()->contentAsText(kMaxOutputCharacters));
1957 EXPECT_EQ(output, "hello \n\nworld"); 1965 EXPECT_EQ(output, "hello \n\nworld");
1958 } 1966 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2002 } 2010 }
2003 } 2011 }
2004 2012
2005 EXPECT_TRUE(is_input_type_called); 2013 EXPECT_TRUE(is_input_type_called);
2006 EXPECT_TRUE(is_selection_called); 2014 EXPECT_TRUE(is_selection_called);
2007 2015
2008 // InputTypeChange shold be called earlier than SelectionChanged. 2016 // InputTypeChange shold be called earlier than SelectionChanged.
2009 EXPECT_LT(last_input_type, last_selection); 2017 EXPECT_LT(last_input_type, last_selection);
2010 } 2018 }
2011 2019
2012 class SuppressErrorPageTest : public RenderViewTest { 2020 class SuppressErrorPageTest : public RenderViewImplTest {
2013 public: 2021 public:
2014 ContentRendererClient* CreateContentRendererClient() override { 2022 ContentRendererClient* CreateContentRendererClient() override {
2015 return new TestContentRendererClient; 2023 return new TestContentRendererClient;
2016 } 2024 }
2017 2025
2018 RenderViewImpl* view() { 2026 RenderViewImpl* view() {
2019 return static_cast<RenderViewImpl*>(view_); 2027 return static_cast<RenderViewImpl*>(view_);
2020 } 2028 }
2021 2029
2022 RenderFrameImpl* frame() { 2030 RenderFrameImpl* frame() {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2055 error.domain = WebString::fromUTF8(net::kErrorDomain); 2063 error.domain = WebString::fromUTF8(net::kErrorDomain);
2056 error.reason = net::ERR_FILE_NOT_FOUND; 2064 error.reason = net::ERR_FILE_NOT_FOUND;
2057 error.unreachableURL = GURL("http://example.com/suppress"); 2065 error.unreachableURL = GURL("http://example.com/suppress");
2058 WebLocalFrame* web_frame = GetMainFrame(); 2066 WebLocalFrame* web_frame = GetMainFrame();
2059 2067
2060 // Start a load that will reach provisional state synchronously, 2068 // Start a load that will reach provisional state synchronously,
2061 // but won't complete synchronously. 2069 // but won't complete synchronously.
2062 CommonNavigationParams common_params; 2070 CommonNavigationParams common_params;
2063 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2071 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2064 common_params.url = GURL("data:text/html,test data"); 2072 common_params.url = GURL("data:text/html,test data");
2065 frame()->OnNavigate(common_params, StartNavigationParams(), 2073 NavigateFrame(common_params, StartNavigationParams(),
2066 RequestNavigationParams()); 2074 RequestNavigationParams());
2067 2075
2068 // An error occurred. 2076 // An error occurred.
2069 view()->GetMainRenderFrame()->didFailProvisionalLoad( 2077 view()->GetMainRenderFrame()->didFailProvisionalLoad(
2070 web_frame, error, blink::WebStandardCommit); 2078 web_frame, error, blink::WebStandardCommit);
2071 const int kMaxOutputCharacters = 22; 2079 const int kMaxOutputCharacters = 22;
2072 EXPECT_EQ("", 2080 EXPECT_EQ("",
2073 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); 2081 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters)));
2074 } 2082 }
2075 2083
2076 #if defined(OS_ANDROID) 2084 #if defined(OS_ANDROID)
2077 // Crashing on Android: http://crbug.com/311341 2085 // Crashing on Android: http://crbug.com/311341
2078 #define MAYBE_DoesNotSuppress DISABLED_DoesNotSuppress 2086 #define MAYBE_DoesNotSuppress DISABLED_DoesNotSuppress
2079 #else 2087 #else
2080 #define MAYBE_DoesNotSuppress DoesNotSuppress 2088 #define MAYBE_DoesNotSuppress DoesNotSuppress
2081 #endif 2089 #endif
2082 2090
2083 TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) { 2091 TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) {
2084 WebURLError error; 2092 WebURLError error;
2085 error.domain = WebString::fromUTF8(net::kErrorDomain); 2093 error.domain = WebString::fromUTF8(net::kErrorDomain);
2086 error.reason = net::ERR_FILE_NOT_FOUND; 2094 error.reason = net::ERR_FILE_NOT_FOUND;
2087 error.unreachableURL = GURL("http://example.com/dont-suppress"); 2095 error.unreachableURL = GURL("http://example.com/dont-suppress");
2088 WebLocalFrame* web_frame = GetMainFrame(); 2096 WebLocalFrame* web_frame = GetMainFrame();
2089 2097
2090 // Start a load that will reach provisional state synchronously, 2098 // Start a load that will reach provisional state synchronously,
2091 // but won't complete synchronously. 2099 // but won't complete synchronously.
2092 CommonNavigationParams common_params; 2100 CommonNavigationParams common_params;
2093 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2101 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2094 common_params.url = GURL("data:text/html,test data"); 2102 common_params.url = GURL("data:text/html,test data");
2095 frame()->OnNavigate(common_params, StartNavigationParams(), 2103 NavigateFrame(common_params, StartNavigationParams(),
2096 RequestNavigationParams()); 2104 RequestNavigationParams());
2097 2105
2098 // An error occurred. 2106 // An error occurred.
2099 view()->GetMainRenderFrame()->didFailProvisionalLoad( 2107 view()->GetMainRenderFrame()->didFailProvisionalLoad(
2100 web_frame, error, blink::WebStandardCommit); 2108 web_frame, error, blink::WebStandardCommit);
2101 // The error page itself is loaded asynchronously. 2109 // The error page itself is loaded asynchronously.
2102 FrameLoadWaiter(frame()).Wait(); 2110 FrameLoadWaiter(frame()).Wait();
2103 const int kMaxOutputCharacters = 22; 2111 const int kMaxOutputCharacters = 22;
2104 EXPECT_EQ("A suffusion of yellow.", 2112 EXPECT_EQ("A suffusion of yellow.",
2105 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); 2113 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters)));
2106 } 2114 }
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
2296 CommonNavigationParams early_common_params; 2304 CommonNavigationParams early_common_params;
2297 StartNavigationParams early_start_params; 2305 StartNavigationParams early_start_params;
2298 RequestNavigationParams early_request_params; 2306 RequestNavigationParams early_request_params;
2299 early_common_params.url = GURL("data:text/html,<div>Page</div>"); 2307 early_common_params.url = GURL("data:text/html,<div>Page</div>");
2300 early_common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2308 early_common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2301 early_common_params.transition = ui::PAGE_TRANSITION_TYPED; 2309 early_common_params.transition = ui::PAGE_TRANSITION_TYPED;
2302 early_start_params.is_post = true; 2310 early_start_params.is_post = true;
2303 early_request_params.browser_navigation_start = 2311 early_request_params.browser_navigation_start =
2304 base::TimeTicks::FromInternalValue(1); 2312 base::TimeTicks::FromInternalValue(1);
2305 2313
2306 frame()->OnNavigate(early_common_params, early_start_params, 2314 NavigateFrame(early_common_params, early_start_params, early_request_params);
2307 early_request_params);
2308 ProcessPendingMessages(); 2315 ProcessPendingMessages();
2309 2316
2310 base::Time early_nav_reported_start = 2317 base::Time early_nav_reported_start =
2311 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart()); 2318 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart());
2312 EXPECT_LT(early_nav_reported_start, before_navigation); 2319 EXPECT_LT(early_nav_reported_start, before_navigation);
2313 2320
2314 // Verify that a navigation that claims to have started in the future - 42 2321 // Verify that a navigation that claims to have started in the future - 42
2315 // days from now is *not* reported as one that starts in the future; as we 2322 // days from now is *not* reported as one that starts in the future; as we
2316 // sanitize the override allowing a maximum of ::Now(). 2323 // sanitize the override allowing a maximum of ::Now().
2317 CommonNavigationParams late_common_params; 2324 CommonNavigationParams late_common_params;
2318 RequestNavigationParams late_request_params; 2325 RequestNavigationParams late_request_params;
2319 StartNavigationParams late_start_params; 2326 StartNavigationParams late_start_params;
2320 late_common_params.url = GURL("data:text/html,<div>Another page</div>"); 2327 late_common_params.url = GURL("data:text/html,<div>Another page</div>");
2321 late_common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2328 late_common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2322 late_common_params.transition = ui::PAGE_TRANSITION_TYPED; 2329 late_common_params.transition = ui::PAGE_TRANSITION_TYPED;
2323 late_start_params.is_post = true; 2330 late_start_params.is_post = true;
2324 late_request_params.browser_navigation_start = 2331 late_request_params.browser_navigation_start =
2325 base::TimeTicks::Now() + base::TimeDelta::FromDays(42); 2332 base::TimeTicks::Now() + base::TimeDelta::FromDays(42);
2326 2333
2327 frame()->OnNavigate(late_common_params, late_start_params, 2334 NavigateFrame(late_common_params, late_start_params, late_request_params);
2328 late_request_params);
2329 ProcessPendingMessages(); 2335 ProcessPendingMessages();
2330 base::Time after_navigation = 2336 base::Time after_navigation =
2331 base::Time::Now() + base::TimeDelta::FromDays(1); 2337 base::Time::Now() + base::TimeDelta::FromDays(1);
2332 2338
2333 base::Time late_nav_reported_start = 2339 base::Time late_nav_reported_start =
2334 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart()); 2340 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart());
2335 EXPECT_LE(late_nav_reported_start, after_navigation); 2341 EXPECT_LE(late_nav_reported_start, after_navigation);
2336 } 2342 }
2337 2343
2338 TEST_F(RenderViewImplTest, PreferredSizeZoomed) { 2344 TEST_F(RenderViewImplTest, PreferredSizeZoomed) {
(...skipping 16 matching lines...) Expand all
2355 EXPECT_EQ(0, view()->historyBackListCount()); 2361 EXPECT_EQ(0, view()->historyBackListCount());
2356 EXPECT_EQ(0, view()->historyBackListCount() + 2362 EXPECT_EQ(0, view()->historyBackListCount() +
2357 view()->historyForwardListCount() + 1); 2363 view()->historyForwardListCount() + 1);
2358 2364
2359 // Receive a Navigate message with history parameters. 2365 // Receive a Navigate message with history parameters.
2360 RequestNavigationParams request_params; 2366 RequestNavigationParams request_params;
2361 request_params.current_history_list_length = 2; 2367 request_params.current_history_list_length = 2;
2362 request_params.current_history_list_offset = 1; 2368 request_params.current_history_list_offset = 1;
2363 request_params.pending_history_list_offset = 2; 2369 request_params.pending_history_list_offset = 2;
2364 request_params.page_id = -1; 2370 request_params.page_id = -1;
2365 frame()->OnNavigate(CommonNavigationParams(), StartNavigationParams(), 2371 NavigateFrame(CommonNavigationParams(), StartNavigationParams(),
2366 request_params); 2372 request_params);
2367 2373
2368 // The history list in RenderView should have been updated. 2374 // The history list in RenderView should have been updated.
2369 EXPECT_EQ(1, view()->historyBackListCount()); 2375 EXPECT_EQ(1, view()->historyBackListCount());
2370 EXPECT_EQ(2, view()->historyBackListCount() + 2376 EXPECT_EQ(2, view()->historyBackListCount() +
2371 view()->historyForwardListCount() + 1); 2377 view()->historyForwardListCount() + 1);
2372 } 2378 }
2373 2379
2374 TEST_F(DevToolsAgentTest, DevToolsResumeOnClose) { 2380 TEST_F(DevToolsAgentTest, DevToolsResumeOnClose) {
2375 Attach(); 2381 Attach();
2376 EXPECT_FALSE(IsPaused()); 2382 EXPECT_FALSE(IsPaused());
2377 DispatchDevToolsMessage("{\"id\":1,\"method\":\"Debugger.enable\"}"); 2383 DispatchDevToolsMessage("{\"id\":1,\"method\":\"Debugger.enable\"}");
2378 2384
2379 // Executing javascript will pause the thread and create nested message loop. 2385 // Executing javascript will pause the thread and create nested message loop.
2380 // Posting task simulates message coming from browser. 2386 // Posting task simulates message coming from browser.
2381 base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind( 2387 base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind(
2382 &DevToolsAgentTest::CloseWhilePaused, base::Unretained(this))); 2388 &DevToolsAgentTest::CloseWhilePaused, base::Unretained(this)));
2383 ExecuteJavaScript("debugger;"); 2389 ExecuteJavaScript("debugger;");
2384 2390
2385 // CloseWhilePaused should resume execution and continue here. 2391 // CloseWhilePaused should resume execution and continue here.
2386 EXPECT_FALSE(IsPaused()); 2392 EXPECT_FALSE(IsPaused());
2387 Detach(); 2393 Detach();
2388 } 2394 }
2389 2395
2390 } // namespace content 2396 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698