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

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

Issue 483773002: PlzNavigate: implement CommitNavigation on the browser side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Using non-inherited structs Created 6 years, 3 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 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 ExecuteJavaScript("document.getElementById('elt_text').value = 'foo';"); 359 ExecuteJavaScript("document.getElementById('elt_text').value = 'foo';");
360 ProcessPendingMessages(); 360 ProcessPendingMessages();
361 EXPECT_TRUE(render_thread_->sink().GetUniqueMessageMatching( 361 EXPECT_TRUE(render_thread_->sink().GetUniqueMessageMatching(
362 ViewHostMsg_UpdateState::ID)); 362 ViewHostMsg_UpdateState::ID));
363 } 363 }
364 364
365 TEST_F(RenderViewImplTest, OnNavigationHttpPost) { 365 TEST_F(RenderViewImplTest, OnNavigationHttpPost) {
366 FrameMsg_Navigate_Params nav_params; 366 FrameMsg_Navigate_Params nav_params;
367 367
368 // An http url will trigger a resource load so cannot be used here. 368 // An http url will trigger a resource load so cannot be used here.
369 nav_params.url = GURL("data:text/html,<div>Page</div>"); 369 nav_params.core_params.url = GURL("data:text/html,<div>Page</div>");
370 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 370 nav_params.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
371 nav_params.transition = PAGE_TRANSITION_TYPED; 371 nav_params.core_params.transition = PAGE_TRANSITION_TYPED;
372 nav_params.page_id = -1; 372 nav_params.commit_params.page_id = -1;
373 nav_params.is_post = true; 373 nav_params.request_params.is_post = true;
374 nav_params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 374 nav_params.commit_params.browser_navigation_start =
375 base::TimeTicks::FromInternalValue(1);
375 376
376 // Set up post data. 377 // Set up post data.
377 const unsigned char* raw_data = reinterpret_cast<const unsigned char*>( 378 const unsigned char* raw_data = reinterpret_cast<const unsigned char*>(
378 "post \0\ndata"); 379 "post \0\ndata");
379 const unsigned int length = 11; 380 const unsigned int length = 11;
380 const std::vector<unsigned char> post_data(raw_data, raw_data + length); 381 const std::vector<unsigned char> post_data(raw_data, raw_data + length);
381 nav_params.browser_initiated_post_data = post_data; 382 nav_params.request_params.browser_initiated_post_data = post_data;
382 383
383 frame()->OnNavigate(nav_params); 384 frame()->OnNavigate(nav_params);
384 ProcessPendingMessages(); 385 ProcessPendingMessages();
385 386
386 const IPC::Message* frame_navigate_msg = 387 const IPC::Message* frame_navigate_msg =
387 render_thread_->sink().GetUniqueMessageMatching( 388 render_thread_->sink().GetUniqueMessageMatching(
388 FrameHostMsg_DidCommitProvisionalLoad::ID); 389 FrameHostMsg_DidCommitProvisionalLoad::ID);
389 EXPECT_TRUE(frame_navigate_msg); 390 EXPECT_TRUE(frame_navigate_msg);
390 391
391 FrameHostMsg_DidCommitProvisionalLoad::Param host_nav_params; 392 FrameHostMsg_DidCommitProvisionalLoad::Param host_nav_params;
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 // an ACK, even if we don't have to do anything else. 565 // an ACK, even if we don't have to do anything else.
565 render_thread_->sink().ClearMessages(); 566 render_thread_->sink().ClearMessages();
566 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId); 567 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId);
567 const IPC::Message* msg2 = render_thread_->sink().GetUniqueMessageMatching( 568 const IPC::Message* msg2 = render_thread_->sink().GetUniqueMessageMatching(
568 FrameHostMsg_SwapOut_ACK::ID); 569 FrameHostMsg_SwapOut_ACK::ID);
569 ASSERT_TRUE(msg2); 570 ASSERT_TRUE(msg2);
570 571
571 // If we navigate back to this RenderView, ensure we don't send a state 572 // If we navigate back to this RenderView, ensure we don't send a state
572 // update for the swapped out URL. (http://crbug.com/72235) 573 // update for the swapped out URL. (http://crbug.com/72235)
573 FrameMsg_Navigate_Params nav_params; 574 FrameMsg_Navigate_Params nav_params;
574 nav_params.url = GURL("data:text/html,<div>Page B</div>"); 575 nav_params.core_params.url = GURL("data:text/html,<div>Page B</div>");
575 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 576 nav_params.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
576 nav_params.transition = PAGE_TRANSITION_TYPED; 577 nav_params.core_params.transition = PAGE_TRANSITION_TYPED;
577 nav_params.current_history_list_length = 1; 578 nav_params.commit_params.current_history_list_length = 1;
578 nav_params.current_history_list_offset = 0; 579 nav_params.commit_params.current_history_list_offset = 0;
579 nav_params.pending_history_list_offset = 1; 580 nav_params.commit_params.pending_history_list_offset = 1;
580 nav_params.page_id = -1; 581 nav_params.commit_params.page_id = -1;
581 nav_params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 582 nav_params.commit_params.browser_navigation_start =
583 base::TimeTicks::FromInternalValue(1);
582 frame()->OnNavigate(nav_params); 584 frame()->OnNavigate(nav_params);
583 ProcessPendingMessages(); 585 ProcessPendingMessages();
584 const IPC::Message* msg3 = render_thread_->sink().GetUniqueMessageMatching( 586 const IPC::Message* msg3 = render_thread_->sink().GetUniqueMessageMatching(
585 ViewHostMsg_UpdateState::ID); 587 ViewHostMsg_UpdateState::ID);
586 EXPECT_FALSE(msg3); 588 EXPECT_FALSE(msg3);
587 } 589 }
588 590
589 // Ensure the RenderViewImpl reloads the previous page if a reload request 591 // Ensure the RenderViewImpl reloads the previous page if a reload request
590 // arrives while it is showing swappedout://. http://crbug.com/143155. 592 // arrives while it is showing swappedout://. http://crbug.com/143155.
591 TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) { 593 TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) {
(...skipping 10 matching lines...) Expand all
602 ASSERT_TRUE(msg_A); 604 ASSERT_TRUE(msg_A);
603 ViewHostMsg_UpdateState::Param params; 605 ViewHostMsg_UpdateState::Param params;
604 ViewHostMsg_UpdateState::Read(msg_A, &params); 606 ViewHostMsg_UpdateState::Read(msg_A, &params);
605 int page_id_A = params.a; 607 int page_id_A = params.a;
606 PageState state_A = params.b; 608 PageState state_A = params.b;
607 EXPECT_EQ(1, page_id_A); 609 EXPECT_EQ(1, page_id_A);
608 render_thread_->sink().ClearMessages(); 610 render_thread_->sink().ClearMessages();
609 611
610 // Back to page A (page_id 1) and commit. 612 // Back to page A (page_id 1) and commit.
611 FrameMsg_Navigate_Params params_A; 613 FrameMsg_Navigate_Params params_A;
612 params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; 614 params_A.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
613 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; 615 params_A.core_params.transition = PAGE_TRANSITION_FORWARD_BACK;
614 params_A.current_history_list_length = 2; 616 params_A.commit_params.current_history_list_length = 2;
615 params_A.current_history_list_offset = 1; 617 params_A.commit_params.current_history_list_offset = 1;
616 params_A.pending_history_list_offset = 0; 618 params_A.commit_params.pending_history_list_offset = 0;
617 params_A.page_id = 1; 619 params_A.commit_params.page_id = 1;
618 params_A.page_state = state_A; 620 params_A.commit_params.page_state = state_A;
619 params_A.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 621 params_A.commit_params.browser_navigation_start =
622 base::TimeTicks::FromInternalValue(1);
620 frame()->OnNavigate(params_A); 623 frame()->OnNavigate(params_A);
621 ProcessPendingMessages(); 624 ProcessPendingMessages();
622 625
623 // Respond to a swap out request. 626 // Respond to a swap out request.
624 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId); 627 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId);
625 628
626 // Check for a OnSwapOutACK. 629 // Check for a OnSwapOutACK.
627 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 630 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
628 FrameHostMsg_SwapOut_ACK::ID); 631 FrameHostMsg_SwapOut_ACK::ID);
629 ASSERT_TRUE(msg); 632 ASSERT_TRUE(msg);
630 render_thread_->sink().ClearMessages(); 633 render_thread_->sink().ClearMessages();
631 634
632 // 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
633 // 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
634 // 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).
635 // Ensure the old page gets reloaded, not swappedout://. 638 // Ensure the old page gets reloaded, not swappedout://.
636 FrameMsg_Navigate_Params nav_params; 639 FrameMsg_Navigate_Params nav_params;
637 nav_params.url = GURL("data:text/html,<div>Page A</div>"); 640 nav_params.core_params.url = GURL("data:text/html,<div>Page A</div>");
638 nav_params.navigation_type = FrameMsg_Navigate_Type::RELOAD; 641 nav_params.core_params.navigation_type = FrameMsg_Navigate_Type::RELOAD;
639 nav_params.transition = PAGE_TRANSITION_RELOAD; 642 nav_params.core_params.transition = PAGE_TRANSITION_RELOAD;
640 nav_params.current_history_list_length = 2; 643 nav_params.commit_params.current_history_list_length = 2;
641 nav_params.current_history_list_offset = 0; 644 nav_params.commit_params.current_history_list_offset = 0;
642 nav_params.pending_history_list_offset = 0; 645 nav_params.commit_params.pending_history_list_offset = 0;
643 nav_params.page_id = 1; 646 nav_params.commit_params.page_id = 1;
644 nav_params.page_state = state_A; 647 nav_params.commit_params.page_state = state_A;
645 nav_params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 648 nav_params.commit_params.browser_navigation_start =
649 base::TimeTicks::FromInternalValue(1);
646 frame()->OnNavigate(nav_params); 650 frame()->OnNavigate(nav_params);
647 ProcessPendingMessages(); 651 ProcessPendingMessages();
648 652
649 // Verify page A committed, not swappedout://. 653 // Verify page A committed, not swappedout://.
650 const IPC::Message* frame_navigate_msg = 654 const IPC::Message* frame_navigate_msg =
651 render_thread_->sink().GetUniqueMessageMatching( 655 render_thread_->sink().GetUniqueMessageMatching(
652 FrameHostMsg_DidCommitProvisionalLoad::ID); 656 FrameHostMsg_DidCommitProvisionalLoad::ID);
653 EXPECT_TRUE(frame_navigate_msg); 657 EXPECT_TRUE(frame_navigate_msg);
654 658
655 // Read URL out of the parent trait of the params object. 659 // Read URL out of the parent trait of the params object.
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 ASSERT_TRUE(msg_C); 711 ASSERT_TRUE(msg_C);
708 ViewHostMsg_UpdateState::Read(msg_C, &param); 712 ViewHostMsg_UpdateState::Read(msg_C, &param);
709 int page_id_C = param.a; 713 int page_id_C = param.a;
710 PageState state_C = param.b; 714 PageState state_C = param.b;
711 EXPECT_EQ(3, page_id_C); 715 EXPECT_EQ(3, page_id_C);
712 EXPECT_NE(state_B, state_C); 716 EXPECT_NE(state_B, state_C);
713 render_thread_->sink().ClearMessages(); 717 render_thread_->sink().ClearMessages();
714 718
715 // Go back to C and commit, preparing for our real test. 719 // Go back to C and commit, preparing for our real test.
716 FrameMsg_Navigate_Params params_C; 720 FrameMsg_Navigate_Params params_C;
717 params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL; 721 params_C.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
718 params_C.transition = PAGE_TRANSITION_FORWARD_BACK; 722 params_C.core_params.transition = PAGE_TRANSITION_FORWARD_BACK;
719 params_C.current_history_list_length = 4; 723 params_C.commit_params.current_history_list_length = 4;
720 params_C.current_history_list_offset = 3; 724 params_C.commit_params.current_history_list_offset = 3;
721 params_C.pending_history_list_offset = 2; 725 params_C.commit_params.pending_history_list_offset = 2;
722 params_C.page_id = 3; 726 params_C.commit_params.page_id = 3;
723 params_C.page_state = state_C; 727 params_C.commit_params.page_state = state_C;
724 params_C.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 728 params_C.commit_params.browser_navigation_start =
729 base::TimeTicks::FromInternalValue(1);
725 frame()->OnNavigate(params_C); 730 frame()->OnNavigate(params_C);
726 ProcessPendingMessages(); 731 ProcessPendingMessages();
727 render_thread_->sink().ClearMessages(); 732 render_thread_->sink().ClearMessages();
728 733
729 // Go back twice quickly, such that page B does not have a chance to commit. 734 // Go back twice quickly, such that page B does not have a chance to commit.
730 // This leads to two changes to the back/forward list but only one change to 735 // This leads to two changes to the back/forward list but only one change to
731 // the RenderView's page ID. 736 // the RenderView's page ID.
732 737
733 // Back to page B (page_id 2), without committing. 738 // Back to page B (page_id 2), without committing.
734 FrameMsg_Navigate_Params params_B; 739 FrameMsg_Navigate_Params params_B;
735 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; 740 params_B.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
736 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; 741 params_B.core_params.transition = PAGE_TRANSITION_FORWARD_BACK;
737 params_B.current_history_list_length = 4; 742 params_B.commit_params.current_history_list_length = 4;
738 params_B.current_history_list_offset = 2; 743 params_B.commit_params.current_history_list_offset = 2;
739 params_B.pending_history_list_offset = 1; 744 params_B.commit_params.pending_history_list_offset = 1;
740 params_B.page_id = 2; 745 params_B.commit_params.page_id = 2;
741 params_B.page_state = state_B; 746 params_B.commit_params.page_state = state_B;
742 params_B.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 747 params_B.commit_params.browser_navigation_start =
748 base::TimeTicks::FromInternalValue(1);
743 frame()->OnNavigate(params_B); 749 frame()->OnNavigate(params_B);
744 750
745 // Back to page A (page_id 1) and commit. 751 // Back to page A (page_id 1) and commit.
746 FrameMsg_Navigate_Params params; 752 FrameMsg_Navigate_Params params;
747 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 753 params.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
748 params.transition = PAGE_TRANSITION_FORWARD_BACK; 754 params.core_params.transition = PAGE_TRANSITION_FORWARD_BACK;
749 params_B.current_history_list_length = 4; 755 params_B.commit_params.current_history_list_length = 4;
750 params_B.current_history_list_offset = 2; 756 params_B.commit_params.current_history_list_offset = 2;
751 params_B.pending_history_list_offset = 0; 757 params_B.commit_params.pending_history_list_offset = 0;
752 params.page_id = 1; 758 params.commit_params.page_id = 1;
753 params.page_state = state_A; 759 params.commit_params.page_state = state_A;
754 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 760 params.commit_params.browser_navigation_start =
761 base::TimeTicks::FromInternalValue(1);
755 frame()->OnNavigate(params); 762 frame()->OnNavigate(params);
756 ProcessPendingMessages(); 763 ProcessPendingMessages();
757 764
758 // Now ensure that the UpdateState message we receive is consistent 765 // Now ensure that the UpdateState message we receive is consistent
759 // and represents page C in both page_id and state. 766 // and represents page C in both page_id and state.
760 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 767 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
761 ViewHostMsg_UpdateState::ID); 768 ViewHostMsg_UpdateState::ID);
762 ASSERT_TRUE(msg); 769 ASSERT_TRUE(msg);
763 ViewHostMsg_UpdateState::Read(msg, &param); 770 ViewHostMsg_UpdateState::Read(msg, &param);
764 int page_id = param.a; 771 int page_id = param.a;
(...skipping 27 matching lines...) Expand all
792 ASSERT_TRUE(msg_A); 799 ASSERT_TRUE(msg_A);
793 ViewHostMsg_UpdateState::Param param; 800 ViewHostMsg_UpdateState::Param param;
794 ViewHostMsg_UpdateState::Read(msg_A, &param); 801 ViewHostMsg_UpdateState::Read(msg_A, &param);
795 int page_id_A = param.a; 802 int page_id_A = param.a;
796 PageState state_A = param.b; 803 PageState state_A = param.b;
797 EXPECT_EQ(1, page_id_A); 804 EXPECT_EQ(1, page_id_A);
798 render_thread_->sink().ClearMessages(); 805 render_thread_->sink().ClearMessages();
799 806
800 // Back to page A (page_id 1) and commit. 807 // Back to page A (page_id 1) and commit.
801 FrameMsg_Navigate_Params params_A; 808 FrameMsg_Navigate_Params params_A;
802 params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; 809 params_A.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
803 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; 810 params_A.core_params.transition = PAGE_TRANSITION_FORWARD_BACK;
804 params_A.current_history_list_length = 2; 811 params_A.commit_params.current_history_list_length = 2;
805 params_A.current_history_list_offset = 1; 812 params_A.commit_params.current_history_list_offset = 1;
806 params_A.pending_history_list_offset = 0; 813 params_A.commit_params.pending_history_list_offset = 0;
807 params_A.page_id = 1; 814 params_A.commit_params.page_id = 1;
808 params_A.page_state = state_A; 815 params_A.commit_params.page_state = state_A;
809 params_A.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 816 params_A.commit_params.browser_navigation_start =
817 base::TimeTicks::FromInternalValue(1);
810 frame()->OnNavigate(params_A); 818 frame()->OnNavigate(params_A);
811 ProcessPendingMessages(); 819 ProcessPendingMessages();
812 820
813 // A new navigation commits, clearing the forward history. 821 // A new navigation commits, clearing the forward history.
814 LoadHTML("<div>Page C</div>"); 822 LoadHTML("<div>Page C</div>");
815 EXPECT_EQ(2, view()->history_list_length_); 823 EXPECT_EQ(2, view()->history_list_length_);
816 EXPECT_EQ(1, view()->history_list_offset_); 824 EXPECT_EQ(1, view()->history_list_offset_);
817 EXPECT_EQ(3, view()->history_page_ids_[1]); 825 EXPECT_EQ(3, view()->history_page_ids_[1]);
818 826
819 // The browser then sends a stale navigation to B, which should be ignored. 827 // The browser then sends a stale navigation to B, which should be ignored.
820 FrameMsg_Navigate_Params params_B; 828 FrameMsg_Navigate_Params params_B;
821 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; 829 params_B.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
822 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; 830 params_B.core_params.transition = PAGE_TRANSITION_FORWARD_BACK;
823 params_B.current_history_list_length = 2; 831 params_B.commit_params.current_history_list_length = 2;
824 params_B.current_history_list_offset = 0; 832 params_B.commit_params.current_history_list_offset = 0;
825 params_B.pending_history_list_offset = 1; 833 params_B.commit_params.pending_history_list_offset = 1;
826 params_B.page_id = 2; 834 params_B.commit_params.page_id = 2;
827 params_B.page_state = state_A; // Doesn't matter, just has to be present. 835 params_B.commit_params.page_state =
828 params_B.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 836 state_A; // Doesn't matter, just has to be present.
837 params_B.commit_params.browser_navigation_start =
838 base::TimeTicks::FromInternalValue(1);
829 frame()->OnNavigate(params_B); 839 frame()->OnNavigate(params_B);
830 840
831 // State should be unchanged. 841 // State should be unchanged.
832 EXPECT_EQ(2, view()->history_list_length_); 842 EXPECT_EQ(2, view()->history_list_length_);
833 EXPECT_EQ(1, view()->history_list_offset_); 843 EXPECT_EQ(1, view()->history_list_offset_);
834 EXPECT_EQ(3, view()->history_page_ids_[1]); 844 EXPECT_EQ(3, view()->history_page_ids_[1]);
835 } 845 }
836 846
837 // Test that we do not ignore navigations after the entry limit is reached, 847 // Test that we do not ignore navigations after the entry limit is reached,
838 // in which case the browser starts dropping entries from the front. In this 848 // in which case the browser starts dropping entries from the front. In this
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
879 ViewHostMsg_UpdateState::Read(msg_B, &param); 889 ViewHostMsg_UpdateState::Read(msg_B, &param);
880 int page_id_B = param.a; 890 int page_id_B = param.a;
881 PageState state_B = param.b; 891 PageState state_B = param.b;
882 EXPECT_EQ(2, page_id_B); 892 EXPECT_EQ(2, page_id_B);
883 render_thread_->sink().ClearMessages(); 893 render_thread_->sink().ClearMessages();
884 894
885 // Suppose the browser has limited the number of NavigationEntries to 2. 895 // Suppose the browser has limited the number of NavigationEntries to 2.
886 // It has now dropped the first entry, but the renderer isn't notified. 896 // It has now dropped the first entry, but the renderer isn't notified.
887 // Ensure that going back to page B (page_id 2) at offset 0 is successful. 897 // Ensure that going back to page B (page_id 2) at offset 0 is successful.
888 FrameMsg_Navigate_Params params_B; 898 FrameMsg_Navigate_Params params_B;
889 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; 899 params_B.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
890 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; 900 params_B.core_params.transition = PAGE_TRANSITION_FORWARD_BACK;
891 params_B.current_history_list_length = 2; 901 params_B.commit_params.current_history_list_length = 2;
892 params_B.current_history_list_offset = 1; 902 params_B.commit_params.current_history_list_offset = 1;
893 params_B.pending_history_list_offset = 0; 903 params_B.commit_params.pending_history_list_offset = 0;
894 params_B.page_id = 2; 904 params_B.commit_params.page_id = 2;
895 params_B.page_state = state_B; 905 params_B.commit_params.page_state = state_B;
896 params_B.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 906 params_B.commit_params.browser_navigation_start =
907 base::TimeTicks::FromInternalValue(1);
897 frame()->OnNavigate(params_B); 908 frame()->OnNavigate(params_B);
898 ProcessPendingMessages(); 909 ProcessPendingMessages();
899 910
900 EXPECT_EQ(2, view()->history_list_length_); 911 EXPECT_EQ(2, view()->history_list_length_);
901 EXPECT_EQ(0, view()->history_list_offset_); 912 EXPECT_EQ(0, view()->history_list_offset_);
902 EXPECT_EQ(2, view()->history_page_ids_[0]); 913 EXPECT_EQ(2, view()->history_page_ids_[0]);
903 } 914 }
904 915
905 // Test that our IME backend sends a notification message when the input focus 916 // Test that our IME backend sends a notification message when the input focus
906 // changes. 917 // changes.
(...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after
1591 GetMainFrame()->enableViewSourceMode(true); 1602 GetMainFrame()->enableViewSourceMode(true);
1592 WebURLError error; 1603 WebURLError error;
1593 error.domain = WebString::fromUTF8(net::kErrorDomain); 1604 error.domain = WebString::fromUTF8(net::kErrorDomain);
1594 error.reason = net::ERR_FILE_NOT_FOUND; 1605 error.reason = net::ERR_FILE_NOT_FOUND;
1595 error.unreachableURL = GURL("http://foo"); 1606 error.unreachableURL = GURL("http://foo");
1596 WebLocalFrame* web_frame = GetMainFrame(); 1607 WebLocalFrame* web_frame = GetMainFrame();
1597 1608
1598 // Start a load that will reach provisional state synchronously, 1609 // Start a load that will reach provisional state synchronously,
1599 // but won't complete synchronously. 1610 // but won't complete synchronously.
1600 FrameMsg_Navigate_Params params; 1611 FrameMsg_Navigate_Params params;
1601 params.page_id = -1; 1612 params.commit_params.page_id = -1;
1602 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 1613 params.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1603 params.url = GURL("data:text/html,test data"); 1614 params.core_params.url = GURL("data:text/html,test data");
1604 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 1615 params.commit_params.browser_navigation_start =
1616 base::TimeTicks::FromInternalValue(1);
1605 frame()->OnNavigate(params); 1617 frame()->OnNavigate(params);
1606 1618
1607 // An error occurred. 1619 // An error occurred.
1608 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error); 1620 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error);
1609 // Frame should exit view-source mode. 1621 // Frame should exit view-source mode.
1610 EXPECT_FALSE(web_frame->isViewSourceModeEnabled()); 1622 EXPECT_FALSE(web_frame->isViewSourceModeEnabled());
1611 } 1623 }
1612 1624
1613 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { 1625 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) {
1614 GetMainFrame()->enableViewSourceMode(true); 1626 GetMainFrame()->enableViewSourceMode(true);
1615 WebURLError error; 1627 WebURLError error;
1616 error.domain = WebString::fromUTF8(net::kErrorDomain); 1628 error.domain = WebString::fromUTF8(net::kErrorDomain);
1617 error.reason = net::ERR_ABORTED; 1629 error.reason = net::ERR_ABORTED;
1618 error.unreachableURL = GURL("http://foo"); 1630 error.unreachableURL = GURL("http://foo");
1619 WebLocalFrame* web_frame = GetMainFrame(); 1631 WebLocalFrame* web_frame = GetMainFrame();
1620 1632
1621 // Start a load that will reach provisional state synchronously, 1633 // Start a load that will reach provisional state synchronously,
1622 // but won't complete synchronously. 1634 // but won't complete synchronously.
1623 FrameMsg_Navigate_Params params; 1635 FrameMsg_Navigate_Params params;
1624 params.page_id = -1; 1636 params.commit_params.page_id = -1;
1625 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 1637 params.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1626 params.url = GURL("data:text/html,test data"); 1638 params.core_params.url = GURL("data:text/html,test data");
1627 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 1639 params.commit_params.browser_navigation_start =
1640 base::TimeTicks::FromInternalValue(1);
1628 frame()->OnNavigate(params); 1641 frame()->OnNavigate(params);
1629 1642
1630 // A cancellation occurred. 1643 // A cancellation occurred.
1631 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error); 1644 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error);
1632 // Frame should stay in view-source mode. 1645 // Frame should stay in view-source mode.
1633 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); 1646 EXPECT_TRUE(web_frame->isViewSourceModeEnabled());
1634 } 1647 }
1635 1648
1636 // Regression test for http://crbug.com/41562 1649 // Regression test for http://crbug.com/41562
1637 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) { 1650 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) {
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
1996 view()->OnImeConfirmComposition( 2009 view()->OnImeConfirmComposition(
1997 empty_string, gfx::Range::InvalidRange(), false); 2010 empty_string, gfx::Range::InvalidRange(), false);
1998 } 2011 }
1999 #endif 2012 #endif
2000 2013
2001 TEST_F(RenderViewImplTest, ZoomLimit) { 2014 TEST_F(RenderViewImplTest, ZoomLimit) {
2002 const double kMinZoomLevel = ZoomFactorToZoomLevel(kMinimumZoomFactor); 2015 const double kMinZoomLevel = ZoomFactorToZoomLevel(kMinimumZoomFactor);
2003 const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor); 2016 const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor);
2004 2017
2005 FrameMsg_Navigate_Params params; 2018 FrameMsg_Navigate_Params params;
2006 params.page_id = -1; 2019 params.commit_params.page_id = -1;
2007 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2020 params.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2008 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 2021 params.commit_params.browser_navigation_start =
2022 base::TimeTicks::FromInternalValue(1);
2009 2023
2010 // Verifies navigation to a URL with preset zoom level indeed sets the level. 2024 // Verifies navigation to a URL with preset zoom level indeed sets the level.
2011 // Regression test for http://crbug.com/139559, where the level was not 2025 // Regression test for http://crbug.com/139559, where the level was not
2012 // properly set when it is out of the default zoom limits of WebView. 2026 // properly set when it is out of the default zoom limits of WebView.
2013 params.url = GURL("data:text/html,min_zoomlimit_test"); 2027 params.core_params.url = GURL("data:text/html,min_zoomlimit_test");
2014 view()->OnSetZoomLevelForLoadingURL(params.url, kMinZoomLevel); 2028 view()->OnSetZoomLevelForLoadingURL(params.core_params.url, kMinZoomLevel);
2015 frame()->OnNavigate(params); 2029 frame()->OnNavigate(params);
2016 ProcessPendingMessages(); 2030 ProcessPendingMessages();
2017 EXPECT_DOUBLE_EQ(kMinZoomLevel, view()->GetWebView()->zoomLevel()); 2031 EXPECT_DOUBLE_EQ(kMinZoomLevel, view()->GetWebView()->zoomLevel());
2018 2032
2019 // It should work even when the zoom limit is temporarily changed in the page. 2033 // It should work even when the zoom limit is temporarily changed in the page.
2020 view()->GetWebView()->zoomLimitsChanged(ZoomFactorToZoomLevel(1.0), 2034 view()->GetWebView()->zoomLimitsChanged(ZoomFactorToZoomLevel(1.0),
2021 ZoomFactorToZoomLevel(1.0)); 2035 ZoomFactorToZoomLevel(1.0));
2022 params.url = GURL("data:text/html,max_zoomlimit_test"); 2036 params.core_params.url = GURL("data:text/html,max_zoomlimit_test");
2023 view()->OnSetZoomLevelForLoadingURL(params.url, kMaxZoomLevel); 2037 view()->OnSetZoomLevelForLoadingURL(params.core_params.url, kMaxZoomLevel);
2024 frame()->OnNavigate(params); 2038 frame()->OnNavigate(params);
2025 ProcessPendingMessages(); 2039 ProcessPendingMessages();
2026 EXPECT_DOUBLE_EQ(kMaxZoomLevel, view()->GetWebView()->zoomLevel()); 2040 EXPECT_DOUBLE_EQ(kMaxZoomLevel, view()->GetWebView()->zoomLevel());
2027 } 2041 }
2028 2042
2029 TEST_F(RenderViewImplTest, SetEditableSelectionAndComposition) { 2043 TEST_F(RenderViewImplTest, SetEditableSelectionAndComposition) {
2030 // Load an HTML page consisting of an input field. 2044 // Load an HTML page consisting of an input field.
2031 LoadHTML("<html>" 2045 LoadHTML("<html>"
2032 "<head>" 2046 "<head>"
2033 "</head>" 2047 "</head>"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2075 EXPECT_EQ(2, info.selectionEnd); 2089 EXPECT_EQ(2, info.selectionEnd);
2076 } 2090 }
2077 2091
2078 // Test that the navigating specific frames works correctly. 2092 // Test that the navigating specific frames works correctly.
2079 TEST_F(RenderViewImplTest, NavigateFrame) { 2093 TEST_F(RenderViewImplTest, NavigateFrame) {
2080 // Load page A. 2094 // Load page A.
2081 LoadHTML("hello <iframe srcdoc='fail' name='frame'></iframe>"); 2095 LoadHTML("hello <iframe srcdoc='fail' name='frame'></iframe>");
2082 2096
2083 // Navigate the frame only. 2097 // Navigate the frame only.
2084 FrameMsg_Navigate_Params nav_params; 2098 FrameMsg_Navigate_Params nav_params;
2085 nav_params.url = GURL("data:text/html,world"); 2099 nav_params.core_params.url = GURL("data:text/html,world");
2086 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2100 nav_params.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2087 nav_params.transition = PAGE_TRANSITION_TYPED; 2101 nav_params.core_params.transition = PAGE_TRANSITION_TYPED;
2088 nav_params.current_history_list_length = 1; 2102 nav_params.commit_params.current_history_list_length = 1;
2089 nav_params.current_history_list_offset = 0; 2103 nav_params.commit_params.current_history_list_offset = 0;
2090 nav_params.pending_history_list_offset = 1; 2104 nav_params.commit_params.pending_history_list_offset = 1;
2091 nav_params.page_id = -1; 2105 nav_params.commit_params.page_id = -1;
2092 nav_params.frame_to_navigate = "frame"; 2106 nav_params.frame_to_navigate = "frame";
2093 nav_params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 2107 nav_params.commit_params.browser_navigation_start =
2108 base::TimeTicks::FromInternalValue(1);
2094 frame()->OnNavigate(nav_params); 2109 frame()->OnNavigate(nav_params);
2095 FrameLoadWaiter( 2110 FrameLoadWaiter(
2096 RenderFrame::FromWebFrame(frame()->GetWebFrame()->firstChild())).Wait(); 2111 RenderFrame::FromWebFrame(frame()->GetWebFrame()->firstChild())).Wait();
2097 2112
2098 // Copy the document content to std::wstring and compare with the 2113 // Copy the document content to std::wstring and compare with the
2099 // expected result. 2114 // expected result.
2100 const int kMaxOutputCharacters = 256; 2115 const int kMaxOutputCharacters = 256;
2101 std::string output = base::UTF16ToUTF8( 2116 std::string output = base::UTF16ToUTF8(
2102 GetMainFrame()->contentAsText(kMaxOutputCharacters)); 2117 GetMainFrame()->contentAsText(kMaxOutputCharacters));
2103 EXPECT_EQ(output, "hello \n\nworld"); 2118 EXPECT_EQ(output, "hello \n\nworld");
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
2200 TEST_F(SuppressErrorPageTest, MAYBE_Suppresses) { 2215 TEST_F(SuppressErrorPageTest, MAYBE_Suppresses) {
2201 WebURLError error; 2216 WebURLError error;
2202 error.domain = WebString::fromUTF8(net::kErrorDomain); 2217 error.domain = WebString::fromUTF8(net::kErrorDomain);
2203 error.reason = net::ERR_FILE_NOT_FOUND; 2218 error.reason = net::ERR_FILE_NOT_FOUND;
2204 error.unreachableURL = GURL("http://example.com/suppress"); 2219 error.unreachableURL = GURL("http://example.com/suppress");
2205 WebLocalFrame* web_frame = GetMainFrame(); 2220 WebLocalFrame* web_frame = GetMainFrame();
2206 2221
2207 // Start a load that will reach provisional state synchronously, 2222 // Start a load that will reach provisional state synchronously,
2208 // but won't complete synchronously. 2223 // but won't complete synchronously.
2209 FrameMsg_Navigate_Params params; 2224 FrameMsg_Navigate_Params params;
2210 params.page_id = -1; 2225 params.commit_params.page_id = -1;
2211 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2226 params.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2212 params.url = GURL("data:text/html,test data"); 2227 params.core_params.url = GURL("data:text/html,test data");
2213 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 2228 params.commit_params.browser_navigation_start =
2229 base::TimeTicks::FromInternalValue(1);
2214 frame()->OnNavigate(params); 2230 frame()->OnNavigate(params);
2215 2231
2216 // An error occurred. 2232 // An error occurred.
2217 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error); 2233 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error);
2218 const int kMaxOutputCharacters = 22; 2234 const int kMaxOutputCharacters = 22;
2219 EXPECT_EQ("", 2235 EXPECT_EQ("",
2220 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); 2236 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters)));
2221 } 2237 }
2222 2238
2223 #if defined(OS_ANDROID) 2239 #if defined(OS_ANDROID)
2224 // Crashing on Android: http://crbug.com/311341 2240 // Crashing on Android: http://crbug.com/311341
2225 #define MAYBE_DoesNotSuppress DISABLED_DoesNotSuppress 2241 #define MAYBE_DoesNotSuppress DISABLED_DoesNotSuppress
2226 #else 2242 #else
2227 #define MAYBE_DoesNotSuppress DoesNotSuppress 2243 #define MAYBE_DoesNotSuppress DoesNotSuppress
2228 #endif 2244 #endif
2229 2245
2230 TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) { 2246 TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) {
2231 WebURLError error; 2247 WebURLError error;
2232 error.domain = WebString::fromUTF8(net::kErrorDomain); 2248 error.domain = WebString::fromUTF8(net::kErrorDomain);
2233 error.reason = net::ERR_FILE_NOT_FOUND; 2249 error.reason = net::ERR_FILE_NOT_FOUND;
2234 error.unreachableURL = GURL("http://example.com/dont-suppress"); 2250 error.unreachableURL = GURL("http://example.com/dont-suppress");
2235 WebLocalFrame* web_frame = GetMainFrame(); 2251 WebLocalFrame* web_frame = GetMainFrame();
2236 2252
2237 // Start a load that will reach provisional state synchronously, 2253 // Start a load that will reach provisional state synchronously,
2238 // but won't complete synchronously. 2254 // but won't complete synchronously.
2239 FrameMsg_Navigate_Params params; 2255 FrameMsg_Navigate_Params params;
2240 params.page_id = -1; 2256 params.commit_params.page_id = -1;
2241 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2257 params.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2242 params.url = GURL("data:text/html,test data"); 2258 params.core_params.url = GURL("data:text/html,test data");
2243 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); 2259 params.commit_params.browser_navigation_start =
2260 base::TimeTicks::FromInternalValue(1);
2244 frame()->OnNavigate(params); 2261 frame()->OnNavigate(params);
2245 2262
2246 // An error occurred. 2263 // An error occurred.
2247 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error); 2264 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error);
2248 // The error page itself is loaded asynchronously. 2265 // The error page itself is loaded asynchronously.
2249 FrameLoadWaiter(frame()).Wait(); 2266 FrameLoadWaiter(frame()).Wait();
2250 const int kMaxOutputCharacters = 22; 2267 const int kMaxOutputCharacters = 22;
2251 EXPECT_EQ("A suffusion of yellow.", 2268 EXPECT_EQ("A suffusion of yellow.",
2252 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); 2269 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters)));
2253 } 2270 }
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
2444 2461
2445 // Sanity checks for the Navigation Timing API |navigationStart| override. We 2462 // Sanity checks for the Navigation Timing API |navigationStart| override. We
2446 // are asserting only most basic constraints, as TimeTicks (passed as the 2463 // are asserting only most basic constraints, as TimeTicks (passed as the
2447 // override) are not comparable with the wall time (returned by the Blink API). 2464 // override) are not comparable with the wall time (returned by the Blink API).
2448 TEST_F(RenderViewImplTest, NavigationStartOverride) { 2465 TEST_F(RenderViewImplTest, NavigationStartOverride) {
2449 // Verify that a navigation that claims to have started at the earliest 2466 // Verify that a navigation that claims to have started at the earliest
2450 // possible TimeTicks is indeed reported as one that started before 2467 // possible TimeTicks is indeed reported as one that started before
2451 // OnNavigate() is called. 2468 // OnNavigate() is called.
2452 base::Time before_navigation = base::Time::Now(); 2469 base::Time before_navigation = base::Time::Now();
2453 FrameMsg_Navigate_Params early_nav_params; 2470 FrameMsg_Navigate_Params early_nav_params;
2454 early_nav_params.url = GURL("data:text/html,<div>Page</div>"); 2471 early_nav_params.core_params.url = GURL("data:text/html,<div>Page</div>");
2455 early_nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2472 early_nav_params.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2456 early_nav_params.transition = PAGE_TRANSITION_TYPED; 2473 early_nav_params.core_params.transition = PAGE_TRANSITION_TYPED;
2457 early_nav_params.page_id = -1; 2474 early_nav_params.commit_params.page_id = -1;
2458 early_nav_params.is_post = true; 2475 early_nav_params.request_params.is_post = true;
2459 early_nav_params.browser_navigation_start = 2476 early_nav_params.commit_params.browser_navigation_start =
2460 base::TimeTicks::FromInternalValue(1); 2477 base::TimeTicks::FromInternalValue(1);
2461 2478
2462 frame()->OnNavigate(early_nav_params); 2479 frame()->OnNavigate(early_nav_params);
2463 ProcessPendingMessages(); 2480 ProcessPendingMessages();
2464 2481
2465 base::Time early_nav_reported_start = 2482 base::Time early_nav_reported_start =
2466 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart()); 2483 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart());
2467 EXPECT_LT(early_nav_reported_start, before_navigation); 2484 EXPECT_LT(early_nav_reported_start, before_navigation);
2468 2485
2469 // Verify that a navigation that claims to have started in the future - 42 2486 // Verify that a navigation that claims to have started in the future - 42
2470 // days from now is *not* reported as one that starts in the future; as we 2487 // days from now is *not* reported as one that starts in the future; as we
2471 // sanitize the override allowing a maximum of ::Now(). 2488 // sanitize the override allowing a maximum of ::Now().
2472 FrameMsg_Navigate_Params late_nav_params; 2489 FrameMsg_Navigate_Params late_nav_params;
2473 late_nav_params.url = GURL("data:text/html,<div>Another page</div>"); 2490 late_nav_params.core_params.url =
2474 late_nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 2491 GURL("data:text/html,<div>Another page</div>");
2475 late_nav_params.transition = PAGE_TRANSITION_TYPED; 2492 late_nav_params.core_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2476 late_nav_params.page_id = -1; 2493 late_nav_params.core_params.transition = PAGE_TRANSITION_TYPED;
2477 late_nav_params.is_post = true; 2494 late_nav_params.commit_params.page_id = -1;
2478 late_nav_params.browser_navigation_start = 2495 late_nav_params.request_params.is_post = true;
2496 late_nav_params.commit_params.browser_navigation_start =
2479 base::TimeTicks::Now() + base::TimeDelta::FromDays(42); 2497 base::TimeTicks::Now() + base::TimeDelta::FromDays(42);
2480 2498
2481 frame()->OnNavigate(late_nav_params); 2499 frame()->OnNavigate(late_nav_params);
2482 ProcessPendingMessages(); 2500 ProcessPendingMessages();
2483 base::Time after_navigation = 2501 base::Time after_navigation =
2484 base::Time::Now() + base::TimeDelta::FromDays(1); 2502 base::Time::Now() + base::TimeDelta::FromDays(1);
2485 2503
2486 base::Time late_nav_reported_start = 2504 base::Time late_nav_reported_start =
2487 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart()); 2505 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart());
2488 EXPECT_LE(late_nav_reported_start, after_navigation); 2506 EXPECT_LE(late_nav_reported_start, after_navigation);
2489 } 2507 }
2490 2508
2491 } // namespace content 2509 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698