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

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

Issue 971653004: Remove the FrameMsg_Navigate_Params (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@history-params
Patch Set: Addressed Nasko's comments Created 5 years, 9 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
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 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 350
351 // Change the value of the input. We should have gotten an update state 351 // Change the value of the input. We should have gotten an update state
352 // notification. We need to spin the message loop to catch this update. 352 // notification. We need to spin the message loop to catch this update.
353 ExecuteJavaScript("document.getElementById('elt_text').value = 'foo';"); 353 ExecuteJavaScript("document.getElementById('elt_text').value = 'foo';");
354 ProcessPendingMessages(); 354 ProcessPendingMessages();
355 EXPECT_TRUE(render_thread_->sink().GetUniqueMessageMatching( 355 EXPECT_TRUE(render_thread_->sink().GetUniqueMessageMatching(
356 ViewHostMsg_UpdateState::ID)); 356 ViewHostMsg_UpdateState::ID));
357 } 357 }
358 358
359 TEST_F(RenderViewImplTest, OnNavigationHttpPost) { 359 TEST_F(RenderViewImplTest, OnNavigationHttpPost) {
360 FrameMsg_Navigate_Params nav_params;
361
362 // An http url will trigger a resource load so cannot be used here. 360 // An http url will trigger a resource load so cannot be used here.
363 nav_params.common_params.url = GURL("data:text/html,<div>Page</div>"); 361 CommonNavigationParams common_params;
364 nav_params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 362 StartNavigationParams start_params;
365 nav_params.common_params.transition = ui::PAGE_TRANSITION_TYPED; 363 HistoryNavigationParams history_params;
366 nav_params.history_params.page_id = -1; 364 common_params.url = GURL("data:text/html,<div>Page</div>");
367 nav_params.is_post = true; 365 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
368 nav_params.commit_params.browser_navigation_start = 366 common_params.transition = ui::PAGE_TRANSITION_TYPED;
369 base::TimeTicks::FromInternalValue(1); 367 history_params.page_id = -1;
370 368
371 // Set up post data. 369 // Set up post data.
372 const unsigned char* raw_data = reinterpret_cast<const unsigned char*>( 370 const unsigned char* raw_data = reinterpret_cast<const unsigned char*>(
373 "post \0\ndata"); 371 "post \0\ndata");
374 const unsigned int length = 11; 372 const unsigned int length = 11;
375 const std::vector<unsigned char> post_data(raw_data, raw_data + length); 373 const std::vector<unsigned char> post_data(raw_data, raw_data + length);
376 nav_params.browser_initiated_post_data = post_data; 374 start_params.is_post = true;
375 start_params.browser_initiated_post_data = post_data;
377 376
378 frame()->OnNavigate(nav_params); 377 frame()->OnNavigate(common_params, start_params, CommitNavigationParams(),
378 history_params);
379 ProcessPendingMessages(); 379 ProcessPendingMessages();
380 380
381 const IPC::Message* frame_navigate_msg = 381 const IPC::Message* frame_navigate_msg =
382 render_thread_->sink().GetUniqueMessageMatching( 382 render_thread_->sink().GetUniqueMessageMatching(
383 FrameHostMsg_DidCommitProvisionalLoad::ID); 383 FrameHostMsg_DidCommitProvisionalLoad::ID);
384 EXPECT_TRUE(frame_navigate_msg); 384 EXPECT_TRUE(frame_navigate_msg);
385 385
386 FrameHostMsg_DidCommitProvisionalLoad::Param host_nav_params; 386 FrameHostMsg_DidCommitProvisionalLoad::Param host_nav_params;
387 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg, 387 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg,
388 &host_nav_params); 388 &host_nav_params);
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 // an ACK, even if we don't have to do anything else. 560 // an ACK, even if we don't have to do anything else.
561 render_thread_->sink().ClearMessages(); 561 render_thread_->sink().ClearMessages();
562 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId, false, 562 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId, false,
563 content::FrameReplicationState()); 563 content::FrameReplicationState());
564 const IPC::Message* msg2 = render_thread_->sink().GetUniqueMessageMatching( 564 const IPC::Message* msg2 = render_thread_->sink().GetUniqueMessageMatching(
565 FrameHostMsg_SwapOut_ACK::ID); 565 FrameHostMsg_SwapOut_ACK::ID);
566 ASSERT_TRUE(msg2); 566 ASSERT_TRUE(msg2);
567 567
568 // If we navigate back to this RenderView, ensure we don't send a state 568 // If we navigate back to this RenderView, ensure we don't send a state
569 // update for the swapped out URL. (http://crbug.com/72235) 569 // update for the swapped out URL. (http://crbug.com/72235)
570 FrameMsg_Navigate_Params nav_params; 570 CommonNavigationParams common_params;
571 nav_params.common_params.url = GURL("data:text/html,<div>Page B</div>"); 571 HistoryNavigationParams history_params;
572 nav_params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 572 common_params.url = GURL("data:text/html,<div>Page B</div>");
573 nav_params.common_params.transition = ui::PAGE_TRANSITION_TYPED; 573 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
574 nav_params.history_params.current_history_list_length = 1; 574 common_params.transition = ui::PAGE_TRANSITION_TYPED;
575 nav_params.history_params.current_history_list_offset = 0; 575 history_params.current_history_list_length = 1;
576 nav_params.history_params.pending_history_list_offset = 1; 576 history_params.current_history_list_offset = 0;
577 nav_params.history_params.page_id = -1; 577 history_params.pending_history_list_offset = 1;
578 nav_params.commit_params.browser_navigation_start = 578 history_params.page_id = -1;
579 base::TimeTicks::FromInternalValue(1); 579 frame()->OnNavigate(common_params, StartNavigationParams(),
580 frame()->OnNavigate(nav_params); 580 CommitNavigationParams(), history_params);
581 ProcessPendingMessages(); 581 ProcessPendingMessages();
582 const IPC::Message* msg3 = render_thread_->sink().GetUniqueMessageMatching( 582 const IPC::Message* msg3 = render_thread_->sink().GetUniqueMessageMatching(
583 ViewHostMsg_UpdateState::ID); 583 ViewHostMsg_UpdateState::ID);
584 EXPECT_FALSE(msg3); 584 EXPECT_FALSE(msg3);
585 } 585 }
586 586
587 // Ensure the RenderViewImpl reloads the previous page if a reload request 587 // Ensure the RenderViewImpl reloads the previous page if a reload request
588 // arrives while it is showing swappedout://. http://crbug.com/143155. 588 // arrives while it is showing swappedout://. http://crbug.com/143155.
589 TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) { 589 TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) {
590 // Load page A. 590 // Load page A.
591 LoadHTML("<div>Page A</div>"); 591 LoadHTML("<div>Page A</div>");
592 592
593 // Load page B, which will trigger an UpdateState message for page A. 593 // Load page B, which will trigger an UpdateState message for page A.
594 LoadHTML("<div>Page B</div>"); 594 LoadHTML("<div>Page B</div>");
595 595
596 // Check for a valid UpdateState message for page A. 596 // Check for a valid UpdateState message for page A.
597 ProcessPendingMessages(); 597 ProcessPendingMessages();
598 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( 598 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching(
599 ViewHostMsg_UpdateState::ID); 599 ViewHostMsg_UpdateState::ID);
600 ASSERT_TRUE(msg_A); 600 ASSERT_TRUE(msg_A);
601 ViewHostMsg_UpdateState::Param params; 601 ViewHostMsg_UpdateState::Param params;
602 ViewHostMsg_UpdateState::Read(msg_A, &params); 602 ViewHostMsg_UpdateState::Read(msg_A, &params);
603 int page_id_A = get<0>(params); 603 int page_id_A = get<0>(params);
604 PageState state_A = get<1>(params); 604 PageState state_A = get<1>(params);
605 EXPECT_EQ(1, page_id_A); 605 EXPECT_EQ(1, page_id_A);
606 render_thread_->sink().ClearMessages(); 606 render_thread_->sink().ClearMessages();
607 607
608 // Back to page A (page_id 1) and commit. 608 // Back to page A (page_id 1) and commit.
609 FrameMsg_Navigate_Params params_A; 609 CommonNavigationParams common_params_A;
610 params_A.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 610 HistoryNavigationParams history_params_A;
611 params_A.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 611 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL;
612 params_A.history_params.current_history_list_length = 2; 612 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
613 params_A.history_params.current_history_list_offset = 1; 613 history_params_A.current_history_list_length = 2;
614 params_A.history_params.pending_history_list_offset = 0; 614 history_params_A.current_history_list_offset = 1;
615 params_A.history_params.page_id = 1; 615 history_params_A.pending_history_list_offset = 0;
616 params_A.history_params.page_state = state_A; 616 history_params_A.page_id = 1;
617 params_A.commit_params.browser_navigation_start = 617 history_params_A.page_state = state_A;
618 base::TimeTicks::FromInternalValue(1); 618 frame()->OnNavigate(common_params_A, StartNavigationParams(),
619 frame()->OnNavigate(params_A); 619 CommitNavigationParams(), history_params_A);
620 EXPECT_EQ(1, view()->historyBackListCount()); 620 EXPECT_EQ(1, view()->historyBackListCount());
621 EXPECT_EQ(2, view()->historyBackListCount() + 621 EXPECT_EQ(2, view()->historyBackListCount() +
622 view()->historyForwardListCount() + 1); 622 view()->historyForwardListCount() + 1);
623 ProcessPendingMessages(); 623 ProcessPendingMessages();
624 624
625 // Respond to a swap out request. 625 // Respond to a swap out request.
626 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId, true, 626 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId, true,
627 content::FrameReplicationState()); 627 content::FrameReplicationState());
628 628
629 // Check for a OnSwapOutACK. 629 // Check for a OnSwapOutACK.
630 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 630 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
631 FrameHostMsg_SwapOut_ACK::ID); 631 FrameHostMsg_SwapOut_ACK::ID);
632 ASSERT_TRUE(msg); 632 ASSERT_TRUE(msg);
633 render_thread_->sink().ClearMessages(); 633 render_thread_->sink().ClearMessages();
634 634
635 // It is possible to get a reload request at this point, containing the 635 // It is possible to get a reload request at this point, containing the
636 // params.page_state of the initial page (e.g., if the new page fails the 636 // params.page_state of the initial page (e.g., if the new page fails the
637 // provisional load in the renderer process, after we unload the old page). 637 // provisional load in the renderer process, after we unload the old page).
638 // Ensure the old page gets reloaded, not swappedout://. 638 // Ensure the old page gets reloaded, not swappedout://.
639 FrameMsg_Navigate_Params nav_params; 639 CommonNavigationParams common_params;
640 nav_params.common_params.url = GURL("data:text/html,<div>Page A</div>"); 640 HistoryNavigationParams history_params;
641 nav_params.common_params.navigation_type = FrameMsg_Navigate_Type::RELOAD; 641 common_params.url = GURL("data:text/html,<div>Page A</div>");
642 nav_params.common_params.transition = ui::PAGE_TRANSITION_RELOAD; 642 common_params.navigation_type = FrameMsg_Navigate_Type::RELOAD;
643 nav_params.history_params.current_history_list_length = 2; 643 common_params.transition = ui::PAGE_TRANSITION_RELOAD;
644 nav_params.history_params.current_history_list_offset = 0; 644 history_params.current_history_list_length = 2;
645 nav_params.history_params.pending_history_list_offset = 0; 645 history_params.current_history_list_offset = 0;
646 nav_params.history_params.page_id = 1; 646 history_params.pending_history_list_offset = 0;
647 nav_params.history_params.page_state = state_A; 647 history_params.page_id = 1;
648 nav_params.commit_params.browser_navigation_start = 648 history_params.page_state = state_A;
649 base::TimeTicks::FromInternalValue(1); 649 frame()->OnNavigate(common_params, StartNavigationParams(),
650 frame()->OnNavigate(nav_params); 650 CommitNavigationParams(), history_params);
651 ProcessPendingMessages(); 651 ProcessPendingMessages();
652 652
653 // Verify page A committed, not swappedout://. 653 // Verify page A committed, not swappedout://.
654 const IPC::Message* frame_navigate_msg = 654 const IPC::Message* frame_navigate_msg =
655 render_thread_->sink().GetUniqueMessageMatching( 655 render_thread_->sink().GetUniqueMessageMatching(
656 FrameHostMsg_DidCommitProvisionalLoad::ID); 656 FrameHostMsg_DidCommitProvisionalLoad::ID);
657 EXPECT_TRUE(frame_navigate_msg); 657 EXPECT_TRUE(frame_navigate_msg);
658 658
659 // Read URL out of the parent trait of the params object. 659 // Read URL out of the parent trait of the params object.
660 FrameHostMsg_DidCommitProvisionalLoad::Param commit_params; 660 FrameHostMsg_DidCommitProvisionalLoad::Param commit_load_params;
661 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg, 661 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg,
662 &commit_params); 662 &commit_load_params);
663 EXPECT_NE(GURL("swappedout://"), get<0>(commit_params).url); 663 EXPECT_NE(GURL("swappedout://"), get<0>(commit_load_params).url);
664 } 664 }
665 665
666 // Verify that security origins are replicated properly to RenderFrameProxies 666 // Verify that security origins are replicated properly to RenderFrameProxies
667 // when swapping out. 667 // when swapping out.
668 TEST_F(RenderViewImplTest, OriginReplicationForSwapOut) { 668 TEST_F(RenderViewImplTest, OriginReplicationForSwapOut) {
669 // This test should only run with --site-per-process, since origin 669 // This test should only run with --site-per-process, since origin
670 // replication only happens in that mode. 670 // replication only happens in that mode.
671 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( 671 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
672 switches::kSitePerProcess)) 672 switches::kSitePerProcess))
673 return; 673 return;
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 ViewHostMsg_UpdateState::ID); 749 ViewHostMsg_UpdateState::ID);
750 ASSERT_TRUE(msg_C); 750 ASSERT_TRUE(msg_C);
751 ViewHostMsg_UpdateState::Read(msg_C, &param); 751 ViewHostMsg_UpdateState::Read(msg_C, &param);
752 int page_id_C = get<0>(param); 752 int page_id_C = get<0>(param);
753 PageState state_C = get<1>(param); 753 PageState state_C = get<1>(param);
754 EXPECT_EQ(3, page_id_C); 754 EXPECT_EQ(3, page_id_C);
755 EXPECT_NE(state_B, state_C); 755 EXPECT_NE(state_B, state_C);
756 render_thread_->sink().ClearMessages(); 756 render_thread_->sink().ClearMessages();
757 757
758 // Go back to C and commit, preparing for our real test. 758 // Go back to C and commit, preparing for our real test.
759 FrameMsg_Navigate_Params params_C; 759 CommonNavigationParams common_params_C;
760 params_C.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 760 HistoryNavigationParams history_params_C;
761 params_C.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 761 common_params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL;
762 params_C.history_params.current_history_list_length = 4; 762 common_params_C.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
763 params_C.history_params.current_history_list_offset = 3; 763 history_params_C.current_history_list_length = 4;
764 params_C.history_params.pending_history_list_offset = 2; 764 history_params_C.current_history_list_offset = 3;
765 params_C.history_params.page_id = 3; 765 history_params_C.pending_history_list_offset = 2;
766 params_C.history_params.page_state = state_C; 766 history_params_C.page_id = 3;
767 params_C.commit_params.browser_navigation_start = 767 history_params_C.page_state = state_C;
768 base::TimeTicks::FromInternalValue(1); 768 frame()->OnNavigate(common_params_C, StartNavigationParams(),
769 frame()->OnNavigate(params_C); 769 CommitNavigationParams(), history_params_C);
770 ProcessPendingMessages(); 770 ProcessPendingMessages();
771 render_thread_->sink().ClearMessages(); 771 render_thread_->sink().ClearMessages();
772 772
773 // Go back twice quickly, such that page B does not have a chance to commit. 773 // Go back twice quickly, such that page B does not have a chance to commit.
774 // This leads to two changes to the back/forward list but only one change to 774 // This leads to two changes to the back/forward list but only one change to
775 // the RenderView's page ID. 775 // the RenderView's page ID.
776 776
777 // Back to page B (page_id 2), without committing. 777 // Back to page B (page_id 2), without committing.
778 FrameMsg_Navigate_Params params_B; 778 CommonNavigationParams common_params_B;
779 params_B.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 779 HistoryNavigationParams history_params_B;
780 params_B.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 780 common_params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL;
781 params_B.history_params.current_history_list_length = 4; 781 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
782 params_B.history_params.current_history_list_offset = 2; 782 history_params_B.current_history_list_length = 4;
783 params_B.history_params.pending_history_list_offset = 1; 783 history_params_B.current_history_list_offset = 2;
784 params_B.history_params.page_id = 2; 784 history_params_B.pending_history_list_offset = 1;
785 params_B.history_params.page_state = state_B; 785 history_params_B.page_id = 2;
786 params_B.commit_params.browser_navigation_start = 786 history_params_B.page_state = state_B;
787 base::TimeTicks::FromInternalValue(1); 787 frame()->OnNavigate(common_params_B, StartNavigationParams(),
788 frame()->OnNavigate(params_B); 788 CommitNavigationParams(), history_params_B);
789 789
790 // Back to page A (page_id 1) and commit. 790 // Back to page A (page_id 1) and commit.
791 FrameMsg_Navigate_Params params; 791 CommonNavigationParams common_params;
792 params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 792 HistoryNavigationParams history_params;
793 params.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 793 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
794 params.history_params.current_history_list_length = 4; 794 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
795 params.history_params.current_history_list_offset = 2; 795 history_params.current_history_list_length = 4;
796 params.history_params.pending_history_list_offset = 0; 796 history_params.current_history_list_offset = 2;
797 params.history_params.page_id = 1; 797 history_params.pending_history_list_offset = 0;
798 params.history_params.page_state = state_A; 798 history_params.page_id = 1;
799 params.commit_params.browser_navigation_start = 799 history_params.page_state = state_A;
800 base::TimeTicks::FromInternalValue(1); 800 frame()->OnNavigate(common_params, StartNavigationParams(),
801 frame()->OnNavigate(params); 801 CommitNavigationParams(), history_params);
802 ProcessPendingMessages(); 802 ProcessPendingMessages();
803 803
804 // Now ensure that the UpdateState message we receive is consistent 804 // Now ensure that the UpdateState message we receive is consistent
805 // and represents page C in both page_id and state. 805 // and represents page C in both page_id and state.
806 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 806 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
807 ViewHostMsg_UpdateState::ID); 807 ViewHostMsg_UpdateState::ID);
808 ASSERT_TRUE(msg); 808 ASSERT_TRUE(msg);
809 ViewHostMsg_UpdateState::Read(msg, &param); 809 ViewHostMsg_UpdateState::Read(msg, &param);
810 int page_id = get<0>(param); 810 int page_id = get<0>(param);
811 PageState state = get<1>(param); 811 PageState state = get<1>(param);
(...skipping 22 matching lines...) Expand all
834 ViewHostMsg_UpdateState::ID); 834 ViewHostMsg_UpdateState::ID);
835 ASSERT_TRUE(msg_A); 835 ASSERT_TRUE(msg_A);
836 ViewHostMsg_UpdateState::Param param; 836 ViewHostMsg_UpdateState::Param param;
837 ViewHostMsg_UpdateState::Read(msg_A, &param); 837 ViewHostMsg_UpdateState::Read(msg_A, &param);
838 int page_id_A = get<0>(param); 838 int page_id_A = get<0>(param);
839 PageState state_A = get<1>(param); 839 PageState state_A = get<1>(param);
840 EXPECT_EQ(1, page_id_A); 840 EXPECT_EQ(1, page_id_A);
841 render_thread_->sink().ClearMessages(); 841 render_thread_->sink().ClearMessages();
842 842
843 // Back to page A (page_id 1) and commit. 843 // Back to page A (page_id 1) and commit.
844 FrameMsg_Navigate_Params params_A; 844 CommonNavigationParams common_params_A;
845 params_A.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 845 HistoryNavigationParams history_params_A;
846 params_A.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 846 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL;
847 params_A.history_params.current_history_list_length = 2; 847 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
848 params_A.history_params.current_history_list_offset = 1; 848 history_params_A.current_history_list_length = 2;
849 params_A.history_params.pending_history_list_offset = 0; 849 history_params_A.current_history_list_offset = 1;
850 params_A.history_params.page_id = 1; 850 history_params_A.pending_history_list_offset = 0;
851 params_A.history_params.page_state = state_A; 851 history_params_A.page_id = 1;
852 params_A.commit_params.browser_navigation_start = 852 history_params_A.page_state = state_A;
853 base::TimeTicks::FromInternalValue(1); 853 frame()->OnNavigate(common_params_A, StartNavigationParams(),
854 frame()->OnNavigate(params_A); 854 CommitNavigationParams(), history_params_A);
855 ProcessPendingMessages(); 855 ProcessPendingMessages();
856 856
857 // A new navigation commits, clearing the forward history. 857 // A new navigation commits, clearing the forward history.
858 LoadHTML("<div>Page C</div>"); 858 LoadHTML("<div>Page C</div>");
859 EXPECT_EQ(2, view()->history_list_length_); 859 EXPECT_EQ(2, view()->history_list_length_);
860 EXPECT_EQ(1, view()->history_list_offset_); 860 EXPECT_EQ(1, view()->history_list_offset_);
861 EXPECT_EQ(3, view()->page_id_); // page C is now page id 3 861 EXPECT_EQ(3, view()->page_id_); // page C is now page id 3
862 862
863 // The browser then sends a stale navigation to B, which should be ignored. 863 // The browser then sends a stale navigation to B, which should be ignored.
864 FrameMsg_Navigate_Params params_B; 864 CommonNavigationParams common_params_B;
865 params_B.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 865 HistoryNavigationParams history_params_B;
866 params_B.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 866 common_params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL;
867 params_B.history_params.current_history_list_length = 2; 867 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
868 params_B.history_params.current_history_list_offset = 0; 868 history_params_B.current_history_list_length = 2;
869 params_B.history_params.pending_history_list_offset = 1; 869 history_params_B.current_history_list_offset = 0;
870 params_B.history_params.page_id = 2; 870 history_params_B.pending_history_list_offset = 1;
871 params_B.history_params.page_state = 871 history_params_B.page_id = 2;
872 history_params_B.page_state =
872 state_A; // Doesn't matter, just has to be present. 873 state_A; // Doesn't matter, just has to be present.
873 params_B.commit_params.browser_navigation_start = 874 frame()->OnNavigate(common_params_B, StartNavigationParams(),
874 base::TimeTicks::FromInternalValue(1); 875 CommitNavigationParams(), history_params_B);
875 frame()->OnNavigate(params_B);
876 876
877 // State should be unchanged. 877 // State should be unchanged.
878 EXPECT_EQ(2, view()->history_list_length_); 878 EXPECT_EQ(2, view()->history_list_length_);
879 EXPECT_EQ(1, view()->history_list_offset_); 879 EXPECT_EQ(1, view()->history_list_offset_);
880 EXPECT_EQ(3, view()->page_id_); // page C, not page B 880 EXPECT_EQ(3, view()->page_id_); // page C, not page B
881 881
882 // Check for a valid DidDropNavigation message. 882 // Check for a valid DidDropNavigation message.
883 ProcessPendingMessages(); 883 ProcessPendingMessages();
884 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 884 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
885 FrameHostMsg_DidDropNavigation::ID); 885 FrameHostMsg_DidDropNavigation::ID);
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after
1577 TEST_F(RenderViewImplTest, DISABLED_DidFailProvisionalLoadWithErrorForError) { 1577 TEST_F(RenderViewImplTest, DISABLED_DidFailProvisionalLoadWithErrorForError) {
1578 GetMainFrame()->enableViewSourceMode(true); 1578 GetMainFrame()->enableViewSourceMode(true);
1579 WebURLError error; 1579 WebURLError error;
1580 error.domain = WebString::fromUTF8(net::kErrorDomain); 1580 error.domain = WebString::fromUTF8(net::kErrorDomain);
1581 error.reason = net::ERR_FILE_NOT_FOUND; 1581 error.reason = net::ERR_FILE_NOT_FOUND;
1582 error.unreachableURL = GURL("http://foo"); 1582 error.unreachableURL = GURL("http://foo");
1583 WebLocalFrame* web_frame = GetMainFrame(); 1583 WebLocalFrame* web_frame = GetMainFrame();
1584 1584
1585 // Start a load that will reach provisional state synchronously, 1585 // Start a load that will reach provisional state synchronously,
1586 // but won't complete synchronously. 1586 // but won't complete synchronously.
1587 FrameMsg_Navigate_Params params; 1587 CommonNavigationParams common_params;
1588 params.history_params.page_id = -1; 1588 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1589 params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 1589 common_params.url = GURL("data:text/html,test data");
1590 params.common_params.url = GURL("data:text/html,test data"); 1590 frame()->OnNavigate(common_params, StartNavigationParams(),
1591 params.commit_params.browser_navigation_start = 1591 CommitNavigationParams(), HistoryNavigationParams());
1592 base::TimeTicks::FromInternalValue(1);
1593 frame()->OnNavigate(params);
1594 1592
1595 // An error occurred. 1593 // An error occurred.
1596 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error); 1594 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error);
1597 // Frame should exit view-source mode. 1595 // Frame should exit view-source mode.
1598 EXPECT_FALSE(web_frame->isViewSourceModeEnabled()); 1596 EXPECT_FALSE(web_frame->isViewSourceModeEnabled());
1599 } 1597 }
1600 1598
1601 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { 1599 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) {
1602 GetMainFrame()->enableViewSourceMode(true); 1600 GetMainFrame()->enableViewSourceMode(true);
1603 WebURLError error; 1601 WebURLError error;
1604 error.domain = WebString::fromUTF8(net::kErrorDomain); 1602 error.domain = WebString::fromUTF8(net::kErrorDomain);
1605 error.reason = net::ERR_ABORTED; 1603 error.reason = net::ERR_ABORTED;
1606 error.unreachableURL = GURL("http://foo"); 1604 error.unreachableURL = GURL("http://foo");
1607 WebLocalFrame* web_frame = GetMainFrame(); 1605 WebLocalFrame* web_frame = GetMainFrame();
1608 1606
1609 // Start a load that will reach provisional state synchronously, 1607 // Start a load that will reach provisional state synchronously,
1610 // but won't complete synchronously. 1608 // but won't complete synchronously.
1611 FrameMsg_Navigate_Params params; 1609 CommonNavigationParams common_params;
1612 params.history_params.page_id = -1; 1610 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1613 params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 1611 common_params.url = GURL("data:text/html,test data");
1614 params.common_params.url = GURL("data:text/html,test data"); 1612 frame()->OnNavigate(common_params, StartNavigationParams(),
1615 params.commit_params.browser_navigation_start = 1613 CommitNavigationParams(), HistoryNavigationParams());
1616 base::TimeTicks::FromInternalValue(1);
1617 frame()->OnNavigate(params);
1618 1614
1619 // A cancellation occurred. 1615 // A cancellation occurred.
1620 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error); 1616 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error);
1621 // Frame should stay in view-source mode. 1617 // Frame should stay in view-source mode.
1622 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); 1618 EXPECT_TRUE(web_frame->isViewSourceModeEnabled());
1623 } 1619 }
1624 1620
1625 // Regression test for http://crbug.com/41562 1621 // Regression test for http://crbug.com/41562
1626 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) { 1622 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) {
1627 const GURL invalid_gurl("http://"); 1623 const GURL invalid_gurl("http://");
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1797 } 1793 }
1798 view()->OnImeConfirmComposition( 1794 view()->OnImeConfirmComposition(
1799 empty_string, gfx::Range::InvalidRange(), false); 1795 empty_string, gfx::Range::InvalidRange(), false);
1800 } 1796 }
1801 #endif 1797 #endif
1802 1798
1803 TEST_F(RenderViewImplTest, ZoomLimit) { 1799 TEST_F(RenderViewImplTest, ZoomLimit) {
1804 const double kMinZoomLevel = ZoomFactorToZoomLevel(kMinimumZoomFactor); 1800 const double kMinZoomLevel = ZoomFactorToZoomLevel(kMinimumZoomFactor);
1805 const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor); 1801 const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor);
1806 1802
1807 FrameMsg_Navigate_Params params;
1808 params.history_params.page_id = -1;
1809 params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1810 params.commit_params.browser_navigation_start =
1811 base::TimeTicks::FromInternalValue(1);
1812
1813 // Verifies navigation to a URL with preset zoom level indeed sets the level. 1803 // Verifies navigation to a URL with preset zoom level indeed sets the level.
1814 // Regression test for http://crbug.com/139559, where the level was not 1804 // Regression test for http://crbug.com/139559, where the level was not
1815 // properly set when it is out of the default zoom limits of WebView. 1805 // properly set when it is out of the default zoom limits of WebView.
1816 params.common_params.url = GURL("data:text/html,min_zoomlimit_test"); 1806 CommonNavigationParams common_params;
1817 view()->OnSetZoomLevelForLoadingURL(params.common_params.url, kMinZoomLevel); 1807 common_params.url = GURL("data:text/html,min_zoomlimit_test");
1818 frame()->OnNavigate(params); 1808 view()->OnSetZoomLevelForLoadingURL(common_params.url, kMinZoomLevel);
1809 frame()->OnNavigate(common_params, StartNavigationParams(),
1810 CommitNavigationParams(), HistoryNavigationParams());
1819 ProcessPendingMessages(); 1811 ProcessPendingMessages();
1820 EXPECT_DOUBLE_EQ(kMinZoomLevel, view()->GetWebView()->zoomLevel()); 1812 EXPECT_DOUBLE_EQ(kMinZoomLevel, view()->GetWebView()->zoomLevel());
1821 1813
1822 // It should work even when the zoom limit is temporarily changed in the page. 1814 // It should work even when the zoom limit is temporarily changed in the page.
1823 view()->GetWebView()->zoomLimitsChanged(ZoomFactorToZoomLevel(1.0), 1815 view()->GetWebView()->zoomLimitsChanged(ZoomFactorToZoomLevel(1.0),
1824 ZoomFactorToZoomLevel(1.0)); 1816 ZoomFactorToZoomLevel(1.0));
1825 params.common_params.url = GURL("data:text/html,max_zoomlimit_test"); 1817 common_params.url = GURL("data:text/html,max_zoomlimit_test");
1826 view()->OnSetZoomLevelForLoadingURL(params.common_params.url, kMaxZoomLevel); 1818 view()->OnSetZoomLevelForLoadingURL(common_params.url, kMaxZoomLevel);
1827 frame()->OnNavigate(params); 1819 frame()->OnNavigate(common_params, StartNavigationParams(),
1820 CommitNavigationParams(), HistoryNavigationParams());
1828 ProcessPendingMessages(); 1821 ProcessPendingMessages();
1829 EXPECT_DOUBLE_EQ(kMaxZoomLevel, view()->GetWebView()->zoomLevel()); 1822 EXPECT_DOUBLE_EQ(kMaxZoomLevel, view()->GetWebView()->zoomLevel());
1830 } 1823 }
1831 1824
1832 TEST_F(RenderViewImplTest, SetEditableSelectionAndComposition) { 1825 TEST_F(RenderViewImplTest, SetEditableSelectionAndComposition) {
1833 // Load an HTML page consisting of an input field. 1826 // Load an HTML page consisting of an input field.
1834 LoadHTML("<html>" 1827 LoadHTML("<html>"
1835 "<head>" 1828 "<head>"
1836 "</head>" 1829 "</head>"
1837 "<body>" 1830 "<body>"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1877 EXPECT_EQ(2, info.selectionStart); 1870 EXPECT_EQ(2, info.selectionStart);
1878 EXPECT_EQ(2, info.selectionEnd); 1871 EXPECT_EQ(2, info.selectionEnd);
1879 } 1872 }
1880 1873
1881 // Test that the navigating specific frames works correctly. 1874 // Test that the navigating specific frames works correctly.
1882 TEST_F(RenderViewImplTest, NavigateFrame) { 1875 TEST_F(RenderViewImplTest, NavigateFrame) {
1883 // Load page A. 1876 // Load page A.
1884 LoadHTML("hello <iframe srcdoc='fail' name='frame'></iframe>"); 1877 LoadHTML("hello <iframe srcdoc='fail' name='frame'></iframe>");
1885 1878
1886 // Navigate the frame only. 1879 // Navigate the frame only.
1887 FrameMsg_Navigate_Params nav_params; 1880 CommonNavigationParams common_params;
1888 nav_params.common_params.url = GURL("data:text/html,world"); 1881 CommitNavigationParams commit_params;
1889 nav_params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 1882 HistoryNavigationParams history_params;
1890 nav_params.common_params.transition = ui::PAGE_TRANSITION_TYPED; 1883 common_params.url = GURL("data:text/html,world");
1891 nav_params.history_params.current_history_list_length = 1; 1884 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1892 nav_params.history_params.current_history_list_offset = 0; 1885 common_params.transition = ui::PAGE_TRANSITION_TYPED;
1893 nav_params.history_params.pending_history_list_offset = 1; 1886 history_params.current_history_list_length = 1;
1894 nav_params.history_params.page_id = -1; 1887 history_params.current_history_list_offset = 0;
1895 nav_params.frame_to_navigate = "frame"; 1888 history_params.pending_history_list_offset = 1;
1896 nav_params.commit_params.browser_navigation_start = 1889 history_params.page_id = -1;
1890 commit_params.frame_to_navigate = "frame";
1891 commit_params.browser_navigation_start =
1897 base::TimeTicks::FromInternalValue(1); 1892 base::TimeTicks::FromInternalValue(1);
1898 frame()->OnNavigate(nav_params); 1893 frame()->OnNavigate(common_params, StartNavigationParams(), commit_params,
1894 history_params);
1899 FrameLoadWaiter( 1895 FrameLoadWaiter(
1900 RenderFrame::FromWebFrame(frame()->GetWebFrame()->firstChild())).Wait(); 1896 RenderFrame::FromWebFrame(frame()->GetWebFrame()->firstChild())).Wait();
1901 1897
1902 // Copy the document content to std::wstring and compare with the 1898 // Copy the document content to std::wstring and compare with the
1903 // expected result. 1899 // expected result.
1904 const int kMaxOutputCharacters = 256; 1900 const int kMaxOutputCharacters = 256;
1905 std::string output = base::UTF16ToUTF8( 1901 std::string output = base::UTF16ToUTF8(
1906 GetMainFrame()->contentAsText(kMaxOutputCharacters)); 1902 GetMainFrame()->contentAsText(kMaxOutputCharacters));
1907 EXPECT_EQ(output, "hello \n\nworld"); 1903 EXPECT_EQ(output, "hello \n\nworld");
1908 } 1904 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
2002 1998
2003 TEST_F(SuppressErrorPageTest, MAYBE_Suppresses) { 1999 TEST_F(SuppressErrorPageTest, MAYBE_Suppresses) {
2004 WebURLError error; 2000 WebURLError error;
2005 error.domain = WebString::fromUTF8(net::kErrorDomain); 2001 error.domain = WebString::fromUTF8(net::kErrorDomain);
2006 error.reason = net::ERR_FILE_NOT_FOUND; 2002 error.reason = net::ERR_FILE_NOT_FOUND;
2007 error.unreachableURL = GURL("http://example.com/suppress"); 2003 error.unreachableURL = GURL("http://example.com/suppress");
2008 WebLocalFrame* web_frame = GetMainFrame(); 2004 WebLocalFrame* web_frame = GetMainFrame();
2009 2005
2010 // Start a load that will reach provisional state synchronously, 2006 // Start a load that will reach provisional state synchronously,
2011 // but won't complete synchronously. 2007 // but won't complete synchronously.
2012 FrameMsg_Navigate_Params params; 2008 CommonNavigationParams common_params;
2013 params.history_params.page_id = -1; 2009 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2014 params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2010 common_params.url = GURL("data:text/html,test data");
2015 params.common_params.url = GURL("data:text/html,test data"); 2011 frame()->OnNavigate(common_params, StartNavigationParams(),
2016 params.commit_params.browser_navigation_start = 2012 CommitNavigationParams(), HistoryNavigationParams());
2017 base::TimeTicks::FromInternalValue(1);
2018 frame()->OnNavigate(params);
2019 2013
2020 // An error occurred. 2014 // An error occurred.
2021 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error); 2015 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error);
2022 const int kMaxOutputCharacters = 22; 2016 const int kMaxOutputCharacters = 22;
2023 EXPECT_EQ("", 2017 EXPECT_EQ("",
2024 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); 2018 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters)));
2025 } 2019 }
2026 2020
2027 #if defined(OS_ANDROID) 2021 #if defined(OS_ANDROID)
2028 // Crashing on Android: http://crbug.com/311341 2022 // Crashing on Android: http://crbug.com/311341
2029 #define MAYBE_DoesNotSuppress DISABLED_DoesNotSuppress 2023 #define MAYBE_DoesNotSuppress DISABLED_DoesNotSuppress
2030 #else 2024 #else
2031 #define MAYBE_DoesNotSuppress DoesNotSuppress 2025 #define MAYBE_DoesNotSuppress DoesNotSuppress
2032 #endif 2026 #endif
2033 2027
2034 TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) { 2028 TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) {
2035 WebURLError error; 2029 WebURLError error;
2036 error.domain = WebString::fromUTF8(net::kErrorDomain); 2030 error.domain = WebString::fromUTF8(net::kErrorDomain);
2037 error.reason = net::ERR_FILE_NOT_FOUND; 2031 error.reason = net::ERR_FILE_NOT_FOUND;
2038 error.unreachableURL = GURL("http://example.com/dont-suppress"); 2032 error.unreachableURL = GURL("http://example.com/dont-suppress");
2039 WebLocalFrame* web_frame = GetMainFrame(); 2033 WebLocalFrame* web_frame = GetMainFrame();
2040 2034
2041 // Start a load that will reach provisional state synchronously, 2035 // Start a load that will reach provisional state synchronously,
2042 // but won't complete synchronously. 2036 // but won't complete synchronously.
2043 FrameMsg_Navigate_Params params; 2037 CommonNavigationParams common_params;
2044 params.history_params.page_id = -1; 2038 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2045 params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2039 common_params.url = GURL("data:text/html,test data");
2046 params.common_params.url = GURL("data:text/html,test data"); 2040 frame()->OnNavigate(common_params, StartNavigationParams(),
2047 params.commit_params.browser_navigation_start = 2041 CommitNavigationParams(), HistoryNavigationParams());
2048 base::TimeTicks::FromInternalValue(1);
2049 frame()->OnNavigate(params);
2050 2042
2051 // An error occurred. 2043 // An error occurred.
2052 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error); 2044 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error);
2053 // The error page itself is loaded asynchronously. 2045 // The error page itself is loaded asynchronously.
2054 FrameLoadWaiter(frame()).Wait(); 2046 FrameLoadWaiter(frame()).Wait();
2055 const int kMaxOutputCharacters = 22; 2047 const int kMaxOutputCharacters = 22;
2056 EXPECT_EQ("A suffusion of yellow.", 2048 EXPECT_EQ("A suffusion of yellow.",
2057 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); 2049 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters)));
2058 } 2050 }
2059 2051
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
2238 } 2230 }
2239 2231
2240 // Sanity checks for the Navigation Timing API |navigationStart| override. We 2232 // Sanity checks for the Navigation Timing API |navigationStart| override. We
2241 // are asserting only most basic constraints, as TimeTicks (passed as the 2233 // are asserting only most basic constraints, as TimeTicks (passed as the
2242 // override) are not comparable with the wall time (returned by the Blink API). 2234 // override) are not comparable with the wall time (returned by the Blink API).
2243 TEST_F(RenderViewImplTest, NavigationStartOverride) { 2235 TEST_F(RenderViewImplTest, NavigationStartOverride) {
2244 // Verify that a navigation that claims to have started at the earliest 2236 // Verify that a navigation that claims to have started at the earliest
2245 // possible TimeTicks is indeed reported as one that started before 2237 // possible TimeTicks is indeed reported as one that started before
2246 // OnNavigate() is called. 2238 // OnNavigate() is called.
2247 base::Time before_navigation = base::Time::Now(); 2239 base::Time before_navigation = base::Time::Now();
2248 FrameMsg_Navigate_Params early_nav_params; 2240 CommonNavigationParams early_common_params;
2249 early_nav_params.common_params.url = GURL("data:text/html,<div>Page</div>"); 2241 StartNavigationParams early_start_params;
2250 early_nav_params.common_params.navigation_type = 2242 CommitNavigationParams early_commit_params;
2251 FrameMsg_Navigate_Type::NORMAL; 2243 early_common_params.url = GURL("data:text/html,<div>Page</div>");
2252 early_nav_params.common_params.transition = ui::PAGE_TRANSITION_TYPED; 2244 early_common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2253 early_nav_params.history_params.page_id = -1; 2245 early_common_params.transition = ui::PAGE_TRANSITION_TYPED;
2254 early_nav_params.is_post = true; 2246 early_start_params.is_post = true;
2255 early_nav_params.commit_params.browser_navigation_start = 2247 early_commit_params.browser_navigation_start =
2256 base::TimeTicks::FromInternalValue(1); 2248 base::TimeTicks::FromInternalValue(1);
2257 2249
2258 frame()->OnNavigate(early_nav_params); 2250 frame()->OnNavigate(early_common_params, early_start_params,
2251 early_commit_params, HistoryNavigationParams());
2259 ProcessPendingMessages(); 2252 ProcessPendingMessages();
2260 2253
2261 base::Time early_nav_reported_start = 2254 base::Time early_nav_reported_start =
2262 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart()); 2255 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart());
2263 EXPECT_LT(early_nav_reported_start, before_navigation); 2256 EXPECT_LT(early_nav_reported_start, before_navigation);
2264 2257
2265 // Verify that a navigation that claims to have started in the future - 42 2258 // Verify that a navigation that claims to have started in the future - 42
2266 // days from now is *not* reported as one that starts in the future; as we 2259 // days from now is *not* reported as one that starts in the future; as we
2267 // sanitize the override allowing a maximum of ::Now(). 2260 // sanitize the override allowing a maximum of ::Now().
2268 FrameMsg_Navigate_Params late_nav_params; 2261 CommonNavigationParams late_common_params;
2269 late_nav_params.common_params.url = 2262 CommitNavigationParams late_commit_params;
2270 GURL("data:text/html,<div>Another page</div>"); 2263 StartNavigationParams late_start_params;
2271 late_nav_params.common_params.navigation_type = 2264 late_common_params.url = GURL("data:text/html,<div>Another page</div>");
2272 FrameMsg_Navigate_Type::NORMAL; 2265 late_common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2273 late_nav_params.common_params.transition = ui::PAGE_TRANSITION_TYPED; 2266 late_common_params.transition = ui::PAGE_TRANSITION_TYPED;
2274 late_nav_params.history_params.page_id = -1; 2267 late_start_params.is_post = true;
2275 late_nav_params.is_post = true; 2268 late_commit_params.browser_navigation_start =
2276 late_nav_params.commit_params.browser_navigation_start =
2277 base::TimeTicks::Now() + base::TimeDelta::FromDays(42); 2269 base::TimeTicks::Now() + base::TimeDelta::FromDays(42);
2278 2270
2279 frame()->OnNavigate(late_nav_params); 2271 frame()->OnNavigate(late_common_params, late_start_params, late_commit_params,
2272 HistoryNavigationParams());
2280 ProcessPendingMessages(); 2273 ProcessPendingMessages();
2281 base::Time after_navigation = 2274 base::Time after_navigation =
2282 base::Time::Now() + base::TimeDelta::FromDays(1); 2275 base::Time::Now() + base::TimeDelta::FromDays(1);
2283 2276
2284 base::Time late_nav_reported_start = 2277 base::Time late_nav_reported_start =
2285 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart()); 2278 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart());
2286 EXPECT_LE(late_nav_reported_start, after_navigation); 2279 EXPECT_LE(late_nav_reported_start, after_navigation);
2287 } 2280 }
2288 2281
2289 TEST_F(RenderViewImplTest, PreferredSizeZoomed) { 2282 TEST_F(RenderViewImplTest, PreferredSizeZoomed) {
(...skipping 11 matching lines...) Expand all
2301 } 2294 }
2302 2295
2303 // Ensure the RenderViewImpl history list is properly updated when starting a 2296 // Ensure the RenderViewImpl history list is properly updated when starting a
2304 // new browser-initiated navigation. 2297 // new browser-initiated navigation.
2305 TEST_F(RenderViewImplTest, HistoryIsProperlyUpdatedOnNavigation) { 2298 TEST_F(RenderViewImplTest, HistoryIsProperlyUpdatedOnNavigation) {
2306 EXPECT_EQ(0, view()->historyBackListCount()); 2299 EXPECT_EQ(0, view()->historyBackListCount());
2307 EXPECT_EQ(0, view()->historyBackListCount() + 2300 EXPECT_EQ(0, view()->historyBackListCount() +
2308 view()->historyForwardListCount() + 1); 2301 view()->historyForwardListCount() + 1);
2309 2302
2310 // Receive a Navigate message with history parameters. 2303 // Receive a Navigate message with history parameters.
2311 FrameMsg_Navigate_Params params; 2304 HistoryNavigationParams history_params;
2312 params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2305 history_params.current_history_list_length = 2;
2313 params.common_params.transition = ui::PAGE_TRANSITION_LINK; 2306 history_params.current_history_list_offset = 1;
2314 params.history_params.current_history_list_length = 2; 2307 history_params.pending_history_list_offset = 2;
2315 params.history_params.current_history_list_offset = 1; 2308 history_params.page_id = -1;
2316 params.history_params.pending_history_list_offset = 2; 2309 frame()->OnNavigate(CommonNavigationParams(), StartNavigationParams(),
2317 params.history_params.page_id = -1; 2310 CommitNavigationParams(), history_params);
2318 params.commit_params.browser_navigation_start =
2319 base::TimeTicks::FromInternalValue(1);
2320 frame()->OnNavigate(params);
2321 2311
2322 // The history list in RenderView should have been updated. 2312 // The history list in RenderView should have been updated.
2323 EXPECT_EQ(1, view()->historyBackListCount()); 2313 EXPECT_EQ(1, view()->historyBackListCount());
2324 EXPECT_EQ(2, view()->historyBackListCount() + 2314 EXPECT_EQ(2, view()->historyBackListCount() +
2325 view()->historyForwardListCount() + 1); 2315 view()->historyForwardListCount() + 1);
2326 } 2316 }
2327 2317
2328 } // namespace content 2318 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698