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

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

Issue 1002803002: Classify navigations without page id in parallel to the existing classifier. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: greeeeeeen Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
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 652 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 663
664 // Back to page A (page_id 1) and commit. 664 // Back to page A (page_id 1) and commit.
665 CommonNavigationParams common_params_A; 665 CommonNavigationParams common_params_A;
666 RequestNavigationParams request_params_A; 666 RequestNavigationParams request_params_A;
667 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; 667 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL;
668 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 668 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
669 request_params_A.current_history_list_length = 2; 669 request_params_A.current_history_list_length = 2;
670 request_params_A.current_history_list_offset = 1; 670 request_params_A.current_history_list_offset = 1;
671 request_params_A.pending_history_list_offset = 0; 671 request_params_A.pending_history_list_offset = 0;
672 request_params_A.page_id = 1; 672 request_params_A.page_id = 1;
673 request_params_A.nav_entry_id = 1;
673 request_params_A.page_state = state_A; 674 request_params_A.page_state = state_A;
674 frame()->OnNavigate(common_params_A, StartNavigationParams(), 675 frame()->OnNavigate(common_params_A, StartNavigationParams(),
675 request_params_A); 676 request_params_A);
676 EXPECT_EQ(1, view()->historyBackListCount()); 677 EXPECT_EQ(1, view()->historyBackListCount());
677 EXPECT_EQ(2, view()->historyBackListCount() + 678 EXPECT_EQ(2, view()->historyBackListCount() +
678 view()->historyForwardListCount() + 1); 679 view()->historyForwardListCount() + 1);
679 ProcessPendingMessages(); 680 ProcessPendingMessages();
680 681
681 // Respond to a swap out request. 682 // Respond to a swap out request.
682 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId, true, 683 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId, true,
(...skipping 11 matching lines...) Expand all
694 // Ensure the old page gets reloaded, not swappedout://. 695 // Ensure the old page gets reloaded, not swappedout://.
695 CommonNavigationParams common_params; 696 CommonNavigationParams common_params;
696 RequestNavigationParams request_params; 697 RequestNavigationParams request_params;
697 common_params.url = GURL("data:text/html,<div>Page A</div>"); 698 common_params.url = GURL("data:text/html,<div>Page A</div>");
698 common_params.navigation_type = FrameMsg_Navigate_Type::RELOAD; 699 common_params.navigation_type = FrameMsg_Navigate_Type::RELOAD;
699 common_params.transition = ui::PAGE_TRANSITION_RELOAD; 700 common_params.transition = ui::PAGE_TRANSITION_RELOAD;
700 request_params.current_history_list_length = 2; 701 request_params.current_history_list_length = 2;
701 request_params.current_history_list_offset = 0; 702 request_params.current_history_list_offset = 0;
702 request_params.pending_history_list_offset = 0; 703 request_params.pending_history_list_offset = 0;
703 request_params.page_id = 1; 704 request_params.page_id = 1;
705 request_params.nav_entry_id = 1;
704 request_params.page_state = state_A; 706 request_params.page_state = state_A;
705 frame()->OnNavigate(common_params, StartNavigationParams(), request_params); 707 frame()->OnNavigate(common_params, StartNavigationParams(), request_params);
706 ProcessPendingMessages(); 708 ProcessPendingMessages();
707 709
708 // Verify page A committed, not swappedout://. 710 // Verify page A committed, not swappedout://.
709 const IPC::Message* frame_navigate_msg = 711 const IPC::Message* frame_navigate_msg =
710 render_thread_->sink().GetUniqueMessageMatching( 712 render_thread_->sink().GetUniqueMessageMatching(
711 FrameHostMsg_DidCommitProvisionalLoad::ID); 713 FrameHostMsg_DidCommitProvisionalLoad::ID);
712 EXPECT_TRUE(frame_navigate_msg); 714 EXPECT_TRUE(frame_navigate_msg);
713 715
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 EXPECT_EQ(page_id_C, page_id); 868 EXPECT_EQ(page_id_C, page_id);
867 EXPECT_NE(state_A, state); 869 EXPECT_NE(state_A, state);
868 EXPECT_NE(state_B, state); 870 EXPECT_NE(state_B, state);
869 EXPECT_EQ(state_C, state); 871 EXPECT_EQ(state_C, state);
870 } 872 }
871 873
872 // Test that stale back/forward navigations arriving from the browser are 874 // Test that stale back/forward navigations arriving from the browser are
873 // ignored. See http://crbug.com/86758. 875 // ignored. See http://crbug.com/86758.
874 TEST_F(RenderViewImplTest, StaleNavigationsIgnored) { 876 TEST_F(RenderViewImplTest, StaleNavigationsIgnored) {
875 // Load page A. 877 // Load page A.
876 LoadHTML("<div>Page A</div>"); 878 LoadHTML("<div id=pagename>Page A</div>");
877 EXPECT_EQ(1, view()->history_list_length_); 879 EXPECT_EQ(1, view()->history_list_length_);
878 EXPECT_EQ(0, view()->history_list_offset_); 880 EXPECT_EQ(0, view()->history_list_offset_);
879 881
880 // Load page B, which will trigger an UpdateState message for page A. 882 // Load page B, which will trigger an UpdateState message for page A.
881 LoadHTML("<div>Page B</div>"); 883 LoadHTML("<div id=pagename>Page B</div>");
882 EXPECT_EQ(2, view()->history_list_length_); 884 EXPECT_EQ(2, view()->history_list_length_);
883 EXPECT_EQ(1, view()->history_list_offset_); 885 EXPECT_EQ(1, view()->history_list_offset_);
884 886
885 // Check for a valid UpdateState message for page A. 887 // Check for a valid UpdateState message for page A.
886 ProcessPendingMessages(); 888 ProcessPendingMessages();
887 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( 889 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching(
888 ViewHostMsg_UpdateState::ID); 890 ViewHostMsg_UpdateState::ID);
889 ASSERT_TRUE(msg_A); 891 ASSERT_TRUE(msg_A);
890 ViewHostMsg_UpdateState::Param param; 892 ViewHostMsg_UpdateState::Param param;
891 ViewHostMsg_UpdateState::Read(msg_A, &param); 893 ViewHostMsg_UpdateState::Read(msg_A, &param);
892 int page_id_A = get<0>(param); 894 int page_id_A = get<0>(param);
893 PageState state_A = get<1>(param); 895 PageState state_A = get<1>(param);
894 EXPECT_EQ(1, page_id_A); 896 EXPECT_EQ(1, page_id_A);
895 render_thread_->sink().ClearMessages(); 897 render_thread_->sink().ClearMessages();
896 898
897 // Back to page A (page_id 1) and commit. 899 // Back to page A (nav_entry_id 1) and commit.
898 CommonNavigationParams common_params_A; 900 CommonNavigationParams common_params_A;
899 RequestNavigationParams request_params_A; 901 RequestNavigationParams request_params_A;
900 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; 902 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL;
901 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 903 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
902 request_params_A.current_history_list_length = 2; 904 request_params_A.current_history_list_length = 2;
903 request_params_A.current_history_list_offset = 1; 905 request_params_A.current_history_list_offset = 1;
904 request_params_A.pending_history_list_offset = 0; 906 request_params_A.pending_history_list_offset = 0;
905 request_params_A.page_id = 1; 907 request_params_A.page_id = 1;
908 request_params_A.nav_entry_id = 1;
906 request_params_A.page_state = state_A; 909 request_params_A.page_state = state_A;
907 frame()->OnNavigate(common_params_A, StartNavigationParams(), 910 frame()->OnNavigate(common_params_A, StartNavigationParams(),
908 request_params_A); 911 request_params_A);
909 ProcessPendingMessages(); 912 ProcessPendingMessages();
910 913
911 // A new navigation commits, clearing the forward history. 914 // A new navigation commits, clearing the forward history.
912 LoadHTML("<div>Page C</div>"); 915 LoadHTML("<div id=pagename>Page C</div>");
913 EXPECT_EQ(2, view()->history_list_length_); 916 EXPECT_EQ(2, view()->history_list_length_);
914 EXPECT_EQ(1, view()->history_list_offset_); 917 EXPECT_EQ(1, view()->history_list_offset_);
915 EXPECT_EQ(3, view()->page_id_); // page C is now page id 3 918 EXPECT_EQ(3, view()->page_id_); // page C is now page id 3
919 int was_page_c = -1;
920 base::string16 check_page_c = base::ASCIIToUTF16(
921 "Number(document.getElementById('pagename').innerHTML == 'Page C')");
922 EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(check_page_c, &was_page_c));
923 EXPECT_EQ(1, was_page_c);
916 924
917 // The browser then sends a stale navigation to B, which should be ignored. 925 // The browser then sends a stale navigation to B, which should be ignored.
918 CommonNavigationParams common_params_B; 926 CommonNavigationParams common_params_B;
919 RequestNavigationParams request_params_B; 927 RequestNavigationParams request_params_B;
920 common_params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; 928 common_params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL;
921 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 929 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
922 request_params_B.current_history_list_length = 2; 930 request_params_B.current_history_list_length = 2;
923 request_params_B.current_history_list_offset = 0; 931 request_params_B.current_history_list_offset = 0;
924 request_params_B.pending_history_list_offset = 1; 932 request_params_B.pending_history_list_offset = 1;
925 request_params_B.page_id = 2; 933 request_params_B.page_id = 2;
934 request_params_B.nav_entry_id = 2;
926 request_params_B.page_state = 935 request_params_B.page_state =
927 state_A; // Doesn't matter, just has to be present. 936 state_A; // Doesn't matter, just has to be present.
928 frame()->OnNavigate(common_params_B, StartNavigationParams(), 937 frame()->OnNavigate(common_params_B, StartNavigationParams(),
929 request_params_B); 938 request_params_B);
930 939
931 // State should be unchanged. 940 // State should be unchanged.
932 EXPECT_EQ(2, view()->history_list_length_); 941 EXPECT_EQ(2, view()->history_list_length_);
933 EXPECT_EQ(1, view()->history_list_offset_); 942 EXPECT_EQ(1, view()->history_list_offset_);
934 EXPECT_EQ(3, view()->page_id_); // page C, not page B 943 EXPECT_EQ(3, view()->page_id_); // page C, not page B
944 was_page_c = -1;
945 EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(check_page_c, &was_page_c));
946 EXPECT_EQ(1, was_page_c);
935 947
936 // Check for a valid DidDropNavigation message. 948 // Check for a valid DidDropNavigation message.
937 ProcessPendingMessages(); 949 ProcessPendingMessages();
938 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 950 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
939 FrameHostMsg_DidDropNavigation::ID); 951 FrameHostMsg_DidDropNavigation::ID);
940 ASSERT_TRUE(msg); 952 ASSERT_TRUE(msg);
941 render_thread_->sink().ClearMessages(); 953 render_thread_->sink().ClearMessages();
942 } 954 }
943 955
944 // Test that our IME backend sends a notification message when the input focus 956 // Test that our IME backend sends a notification message when the input focus
(...skipping 1436 matching lines...) Expand 10 before | Expand all | Expand 10 after
2381 base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind( 2393 base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind(
2382 &DevToolsAgentTest::CloseWhilePaused, base::Unretained(this))); 2394 &DevToolsAgentTest::CloseWhilePaused, base::Unretained(this)));
2383 ExecuteJavaScript("debugger;"); 2395 ExecuteJavaScript("debugger;");
2384 2396
2385 // CloseWhilePaused should resume execution and continue here. 2397 // CloseWhilePaused should resume execution and continue here.
2386 EXPECT_FALSE(IsPaused()); 2398 EXPECT_FALSE(IsPaused());
2387 Detach(); 2399 Detach();
2388 } 2400 }
2389 2401
2390 } // namespace content 2402 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698