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

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

Issue 2648053002: Remove old session history logic. (Closed)
Patch Set: Remove comment. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/renderer/render_frame_impl.cc ('k') | content/renderer/render_view_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <tuple> 7 #include <tuple>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 #include "content/public/renderer/content_renderer_client.h" 43 #include "content/public/renderer/content_renderer_client.h"
44 #include "content/public/renderer/document_state.h" 44 #include "content/public/renderer/document_state.h"
45 #include "content/public/renderer/navigation_state.h" 45 #include "content/public/renderer/navigation_state.h"
46 #include "content/public/test/browser_test_utils.h" 46 #include "content/public/test/browser_test_utils.h"
47 #include "content/public/test/frame_load_waiter.h" 47 #include "content/public/test/frame_load_waiter.h"
48 #include "content/public/test/render_view_test.h" 48 #include "content/public/test/render_view_test.h"
49 #include "content/public/test/test_utils.h" 49 #include "content/public/test/test_utils.h"
50 #include "content/renderer/accessibility/render_accessibility_impl.h" 50 #include "content/renderer/accessibility/render_accessibility_impl.h"
51 #include "content/renderer/devtools/devtools_agent.h" 51 #include "content/renderer/devtools/devtools_agent.h"
52 #include "content/renderer/gpu/render_widget_compositor.h" 52 #include "content/renderer/gpu/render_widget_compositor.h"
53 #include "content/renderer/history_controller.h" 53 #include "content/renderer/history_entry.h"
54 #include "content/renderer/history_serialization.h" 54 #include "content/renderer/history_serialization.h"
55 #include "content/renderer/navigation_state_impl.h" 55 #include "content/renderer/navigation_state_impl.h"
56 #include "content/renderer/render_frame_proxy.h" 56 #include "content/renderer/render_frame_proxy.h"
57 #include "content/renderer/render_process.h" 57 #include "content/renderer/render_process.h"
58 #include "content/renderer/render_view_impl.h" 58 #include "content/renderer/render_view_impl.h"
59 #include "content/shell/browser/shell.h" 59 #include "content/shell/browser/shell.h"
60 #include "content/shell/browser/shell_browser_context.h" 60 #include "content/shell/browser/shell_browser_context.h"
61 #include "content/test/mock_keyboard.h" 61 #include "content/test/mock_keyboard.h"
62 #include "content/test/test_render_frame.h" 62 #include "content/test/test_render_frame.h"
63 #include "net/base/net_errors.h" 63 #include "net/base/net_errors.h"
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 } 578 }
579 579
580 // Test that we get form state change notifications when input fields change. 580 // Test that we get form state change notifications when input fields change.
581 TEST_F(RenderViewImplTest, OnNavStateChanged) { 581 TEST_F(RenderViewImplTest, OnNavStateChanged) {
582 view()->set_send_content_state_immediately(true); 582 view()->set_send_content_state_immediately(true);
583 LoadHTML("<input type=\"text\" id=\"elt_text\"></input>"); 583 LoadHTML("<input type=\"text\" id=\"elt_text\"></input>");
584 584
585 // We should NOT have gotten a form state change notification yet. 585 // We should NOT have gotten a form state change notification yet.
586 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching( 586 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching(
587 FrameHostMsg_UpdateState::ID)); 587 FrameHostMsg_UpdateState::ID));
588 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching(
589 ViewHostMsg_UpdateState::ID));
590 render_thread_->sink().ClearMessages(); 588 render_thread_->sink().ClearMessages();
591 589
592 // Change the value of the input. We should have gotten an update state 590 // Change the value of the input. We should have gotten an update state
593 // notification. We need to spin the message loop to catch this update. 591 // notification. We need to spin the message loop to catch this update.
594 ExecuteJavaScriptForTests( 592 ExecuteJavaScriptForTests(
595 "document.getElementById('elt_text').value = 'foo';"); 593 "document.getElementById('elt_text').value = 'foo';");
596 ProcessPendingMessages(); 594 ProcessPendingMessages();
597 595
598 EXPECT_TRUE(render_thread_->sink().GetUniqueMessageMatching( 596 EXPECT_TRUE(render_thread_->sink().GetUniqueMessageMatching(
599 FrameHostMsg_UpdateState::ID)); 597 FrameHostMsg_UpdateState::ID));
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 TEST_F(RenderViewImplTest, DISABLED_LastCommittedUpdateState) { 928 TEST_F(RenderViewImplTest, DISABLED_LastCommittedUpdateState) {
931 // Load page A. 929 // Load page A.
932 LoadHTML("<div>Page A</div>"); 930 LoadHTML("<div>Page A</div>");
933 931
934 // Load page B, which will trigger an UpdateState message for page A. 932 // Load page B, which will trigger an UpdateState message for page A.
935 LoadHTML("<div>Page B</div>"); 933 LoadHTML("<div>Page B</div>");
936 934
937 // Check for a valid UpdateState message for page A. 935 // Check for a valid UpdateState message for page A.
938 ProcessPendingMessages(); 936 ProcessPendingMessages();
939 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( 937 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching(
940 ViewHostMsg_UpdateState::ID); 938 FrameHostMsg_UpdateState::ID);
941 ASSERT_TRUE(msg_A); 939 ASSERT_TRUE(msg_A);
942 ViewHostMsg_UpdateState::Param param; 940 FrameHostMsg_UpdateState::Param param;
943 ViewHostMsg_UpdateState::Read(msg_A, &param); 941 FrameHostMsg_UpdateState::Read(msg_A, &param);
944 PageState state_A = std::get<0>(param); 942 PageState state_A = std::get<0>(param);
945 render_thread_->sink().ClearMessages(); 943 render_thread_->sink().ClearMessages();
946 944
947 // Load page C, which will trigger an UpdateState message for page B. 945 // Load page C, which will trigger an UpdateState message for page B.
948 LoadHTML("<div>Page C</div>"); 946 LoadHTML("<div>Page C</div>");
949 947
950 // Check for a valid UpdateState for page B. 948 // Check for a valid UpdateState for page B.
951 ProcessPendingMessages(); 949 ProcessPendingMessages();
952 const IPC::Message* msg_B = render_thread_->sink().GetUniqueMessageMatching( 950 const IPC::Message* msg_B = render_thread_->sink().GetUniqueMessageMatching(
953 ViewHostMsg_UpdateState::ID); 951 FrameHostMsg_UpdateState::ID);
954 ASSERT_TRUE(msg_B); 952 ASSERT_TRUE(msg_B);
955 ViewHostMsg_UpdateState::Read(msg_B, &param); 953 FrameHostMsg_UpdateState::Read(msg_B, &param);
956 PageState state_B = std::get<0>(param); 954 PageState state_B = std::get<0>(param);
957 EXPECT_NE(state_A, state_B); 955 EXPECT_NE(state_A, state_B);
958 render_thread_->sink().ClearMessages(); 956 render_thread_->sink().ClearMessages();
959 957
960 // Load page D, which will trigger an UpdateState message for page C. 958 // Load page D, which will trigger an UpdateState message for page C.
961 LoadHTML("<div>Page D</div>"); 959 LoadHTML("<div>Page D</div>");
962 960
963 // Check for a valid UpdateState for page C. 961 // Check for a valid UpdateState for page C.
964 ProcessPendingMessages(); 962 ProcessPendingMessages();
965 const IPC::Message* msg_C = render_thread_->sink().GetUniqueMessageMatching( 963 const IPC::Message* msg_C = render_thread_->sink().GetUniqueMessageMatching(
966 ViewHostMsg_UpdateState::ID); 964 FrameHostMsg_UpdateState::ID);
967 ASSERT_TRUE(msg_C); 965 ASSERT_TRUE(msg_C);
968 ViewHostMsg_UpdateState::Read(msg_C, &param); 966 FrameHostMsg_UpdateState::Read(msg_C, &param);
969 PageState state_C = std::get<0>(param); 967 PageState state_C = std::get<0>(param);
970 EXPECT_NE(state_B, state_C); 968 EXPECT_NE(state_B, state_C);
971 render_thread_->sink().ClearMessages(); 969 render_thread_->sink().ClearMessages();
972 970
973 // Go back to C and commit, preparing for our real test. 971 // Go back to C and commit, preparing for our real test.
974 CommonNavigationParams common_params_C; 972 CommonNavigationParams common_params_C;
975 RequestNavigationParams request_params_C; 973 RequestNavigationParams request_params_C;
976 common_params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL; 974 common_params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL;
977 common_params_C.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 975 common_params_C.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
978 request_params_C.current_history_list_length = 4; 976 request_params_C.current_history_list_length = 4;
979 request_params_C.current_history_list_offset = 3; 977 request_params_C.current_history_list_offset = 3;
980 request_params_C.pending_history_list_offset = 2; 978 request_params_C.pending_history_list_offset = 2;
979 request_params_C.nav_entry_id = 3;
981 request_params_C.page_state = state_C; 980 request_params_C.page_state = state_C;
982 frame()->Navigate(common_params_C, StartNavigationParams(), request_params_C); 981 frame()->Navigate(common_params_C, StartNavigationParams(), request_params_C);
983 ProcessPendingMessages(); 982 ProcessPendingMessages();
984 render_thread_->sink().ClearMessages(); 983 render_thread_->sink().ClearMessages();
985 984
986 // Go back twice quickly, such that page B does not have a chance to commit. 985 // Go back twice quickly, such that page B does not have a chance to commit.
987 // This leads to two changes to the back/forward list but only one change to 986 // This leads to two changes to the back/forward list but only one change to
988 // the RenderView's page ID. 987 // the RenderView's page ID.
989 988
990 // Back to page B without committing. 989 // Back to page B without committing.
991 CommonNavigationParams common_params_B; 990 CommonNavigationParams common_params_B;
992 RequestNavigationParams request_params_B; 991 RequestNavigationParams request_params_B;
993 common_params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; 992 common_params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL;
994 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 993 common_params_B.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
995 request_params_B.current_history_list_length = 4; 994 request_params_B.current_history_list_length = 4;
996 request_params_B.current_history_list_offset = 2; 995 request_params_B.current_history_list_offset = 2;
997 request_params_B.pending_history_list_offset = 1; 996 request_params_B.pending_history_list_offset = 1;
997 request_params_B.nav_entry_id = 2;
998 request_params_B.page_state = state_B; 998 request_params_B.page_state = state_B;
999 frame()->Navigate(common_params_B, StartNavigationParams(), request_params_B); 999 frame()->Navigate(common_params_B, StartNavigationParams(), request_params_B);
1000 1000
1001 // Back to page A and commit. 1001 // Back to page A and commit.
1002 CommonNavigationParams common_params; 1002 CommonNavigationParams common_params;
1003 RequestNavigationParams request_params; 1003 RequestNavigationParams request_params;
1004 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; 1004 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1005 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 1005 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
1006 request_params.current_history_list_length = 4; 1006 request_params.current_history_list_length = 4;
1007 request_params.current_history_list_offset = 2; 1007 request_params.current_history_list_offset = 2;
1008 request_params.pending_history_list_offset = 0; 1008 request_params.pending_history_list_offset = 0;
1009 request_params.nav_entry_id = 1;
1009 request_params.page_state = state_A; 1010 request_params.page_state = state_A;
1010 frame()->Navigate(common_params, StartNavigationParams(), request_params); 1011 frame()->Navigate(common_params, StartNavigationParams(), request_params);
1011 ProcessPendingMessages(); 1012 ProcessPendingMessages();
1012 1013
1013 // Now ensure that the UpdateState message we receive is consistent 1014 // Now ensure that the UpdateState message we receive is consistent
1014 // and represents page C in state. 1015 // and represents page C in state.
1015 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 1016 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
1016 ViewHostMsg_UpdateState::ID); 1017 FrameHostMsg_UpdateState::ID);
1017 ASSERT_TRUE(msg); 1018 ASSERT_TRUE(msg);
1018 ViewHostMsg_UpdateState::Read(msg, &param); 1019 FrameHostMsg_UpdateState::Read(msg, &param);
1019 PageState state = std::get<0>(param); 1020 PageState state = std::get<0>(param);
1020 EXPECT_NE(state_A, state); 1021 EXPECT_NE(state_A, state);
1021 EXPECT_NE(state_B, state); 1022 EXPECT_NE(state_B, state);
1022 EXPECT_EQ(state_C, state); 1023 EXPECT_EQ(state_C, state);
1023 } 1024 }
1024 1025
1025 // Test that our IME backend sends a notification message when the input focus 1026 // Test that our IME backend sends a notification message when the input focus
1026 // changes. 1027 // changes.
1027 TEST_F(RenderViewImplTest, OnImeTypeChanged) { 1028 TEST_F(RenderViewImplTest, OnImeTypeChanged) {
1028 // Load an HTML page consisting of two input fields. 1029 // Load an HTML page consisting of two input fields.
(...skipping 1526 matching lines...) Expand 10 before | Expand all | Expand 10 after
2555 ExpectPauseAndResume(3); 2556 ExpectPauseAndResume(3);
2556 blink::WebScriptSource source2( 2557 blink::WebScriptSource source2(
2557 WebString::fromUTF8("function func2() { func1(); }; func2();")); 2558 WebString::fromUTF8("function func2() { func1(); }; func2();"));
2558 frame()->GetWebFrame()->executeScriptInIsolatedWorld(17, &source2, 1); 2559 frame()->GetWebFrame()->executeScriptInIsolatedWorld(17, &source2, 1);
2559 2560
2560 EXPECT_FALSE(IsPaused()); 2561 EXPECT_FALSE(IsPaused());
2561 Detach(); 2562 Detach();
2562 } 2563 }
2563 2564
2564 } // namespace content 2565 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.cc ('k') | content/renderer/render_view_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698