OLD | NEW |
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/run_loop.h" |
5 #include "base/strings/string16.h" | 6 #include "base/strings/string16.h" |
6 #include "base/strings/string_util.h" | 7 #include "base/strings/string_util.h" |
7 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
8 #include "content/common/frame_messages.h" | 9 #include "content/common/frame_messages.h" |
9 #include "content/common/frame_replication_state.h" | 10 #include "content/common/frame_replication_state.h" |
10 #include "content/common/input_messages.h" | 11 #include "content/common/input_messages.h" |
11 #include "content/common/text_input_client_messages.h" | 12 #include "content/common/text_input_client_messages.h" |
12 #include "content/public/browser/native_web_keyboard_event.h" | 13 #include "content/public/browser/native_web_keyboard_event.h" |
13 #include "content/public/common/web_preferences.h" | 14 #include "content/public/common/web_preferences.h" |
14 #include "content/public/test/render_view_test.h" | 15 #include "content/public/test/render_view_test.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 | 105 |
105 // First test when javascript does not eat keypresses -- should scroll. | 106 // First test when javascript does not eat keypresses -- should scroll. |
106 view->set_send_content_state_immediately(true); | 107 view->set_send_content_state_immediately(true); |
107 LoadHTML(kRawHtml); | 108 LoadHTML(kRawHtml); |
108 render_thread_->sink().ClearMessages(); | 109 render_thread_->sink().ClearMessages(); |
109 | 110 |
110 const char* kArrowDownScrollDown = "40,false,false,true,false\n10144\np1"; | 111 const char* kArrowDownScrollDown = "40,false,false,true,false\n10144\np1"; |
111 view->OnSetEditCommandsForNextKeyEvent( | 112 view->OnSetEditCommandsForNextKeyEvent( |
112 EditCommands(1, EditCommand("moveToEndOfDocument", ""))); | 113 EditCommands(1, EditCommand("moveToEndOfDocument", ""))); |
113 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowDownKeyDown)); | 114 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowDownKeyDown)); |
114 ProcessPendingMessages(); | 115 base::RunLoop().RunUntilIdle(); |
115 ExecuteJavaScriptForTests("scroll.textContent = window.pageYOffset"); | 116 ExecuteJavaScriptForTests("scroll.textContent = window.pageYOffset"); |
116 output = WebFrameContentDumper::DumpWebViewAsText(view->GetWebView(), | 117 output = WebFrameContentDumper::DumpWebViewAsText(view->GetWebView(), |
117 kMaxOutputCharacters) | 118 kMaxOutputCharacters) |
118 .Ascii(); | 119 .Ascii(); |
119 EXPECT_EQ(kArrowDownScrollDown, output); | 120 EXPECT_EQ(kArrowDownScrollDown, output); |
120 | 121 |
121 const char* kArrowUpScrollUp = "38,false,false,true,false\n0\np1"; | 122 const char* kArrowUpScrollUp = "38,false,false,true,false\n0\np1"; |
122 view->OnSetEditCommandsForNextKeyEvent( | 123 view->OnSetEditCommandsForNextKeyEvent( |
123 EditCommands(1, EditCommand("moveToBeginningOfDocument", ""))); | 124 EditCommands(1, EditCommand("moveToBeginningOfDocument", ""))); |
124 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowUpKeyDown)); | 125 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowUpKeyDown)); |
125 ProcessPendingMessages(); | 126 base::RunLoop().RunUntilIdle(); |
126 ExecuteJavaScriptForTests("scroll.textContent = window.pageYOffset"); | 127 ExecuteJavaScriptForTests("scroll.textContent = window.pageYOffset"); |
127 output = WebFrameContentDumper::DumpWebViewAsText(view->GetWebView(), | 128 output = WebFrameContentDumper::DumpWebViewAsText(view->GetWebView(), |
128 kMaxOutputCharacters) | 129 kMaxOutputCharacters) |
129 .Ascii(); | 130 .Ascii(); |
130 EXPECT_EQ(kArrowUpScrollUp, output); | 131 EXPECT_EQ(kArrowUpScrollUp, output); |
131 | 132 |
132 // Now let javascript eat the key events -- no scrolling should happen. | 133 // Now let javascript eat the key events -- no scrolling should happen. |
133 // Set a scroll position slightly down the page to ensure that it does not | 134 // Set a scroll position slightly down the page to ensure that it does not |
134 // move. | 135 // move. |
135 ExecuteJavaScriptForTests("allowKeyEvents = false; window.scrollTo(0, 100)"); | 136 ExecuteJavaScriptForTests("allowKeyEvents = false; window.scrollTo(0, 100)"); |
136 | 137 |
137 const char* kArrowDownNoScroll = "40,false,false,true,false\n100\np1"; | 138 const char* kArrowDownNoScroll = "40,false,false,true,false\n100\np1"; |
138 view->OnSetEditCommandsForNextKeyEvent( | 139 view->OnSetEditCommandsForNextKeyEvent( |
139 EditCommands(1, EditCommand("moveToEndOfDocument", ""))); | 140 EditCommands(1, EditCommand("moveToEndOfDocument", ""))); |
140 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowDownKeyDown)); | 141 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowDownKeyDown)); |
141 ProcessPendingMessages(); | 142 base::RunLoop().RunUntilIdle(); |
142 ExecuteJavaScriptForTests("scroll.textContent = window.pageYOffset"); | 143 ExecuteJavaScriptForTests("scroll.textContent = window.pageYOffset"); |
143 output = WebFrameContentDumper::DumpWebViewAsText(view->GetWebView(), | 144 output = WebFrameContentDumper::DumpWebViewAsText(view->GetWebView(), |
144 kMaxOutputCharacters) | 145 kMaxOutputCharacters) |
145 .Ascii(); | 146 .Ascii(); |
146 EXPECT_EQ(kArrowDownNoScroll, output); | 147 EXPECT_EQ(kArrowDownNoScroll, output); |
147 | 148 |
148 const char* kArrowUpNoScroll = "38,false,false,true,false\n100\np1"; | 149 const char* kArrowUpNoScroll = "38,false,false,true,false\n100\np1"; |
149 view->OnSetEditCommandsForNextKeyEvent( | 150 view->OnSetEditCommandsForNextKeyEvent( |
150 EditCommands(1, EditCommand("moveToBeginningOfDocument", ""))); | 151 EditCommands(1, EditCommand("moveToBeginningOfDocument", ""))); |
151 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowUpKeyDown)); | 152 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowUpKeyDown)); |
152 ProcessPendingMessages(); | 153 base::RunLoop().RunUntilIdle(); |
153 ExecuteJavaScriptForTests("scroll.textContent = window.pageYOffset"); | 154 ExecuteJavaScriptForTests("scroll.textContent = window.pageYOffset"); |
154 output = WebFrameContentDumper::DumpWebViewAsText(view->GetWebView(), | 155 output = WebFrameContentDumper::DumpWebViewAsText(view->GetWebView(), |
155 kMaxOutputCharacters) | 156 kMaxOutputCharacters) |
156 .Ascii(); | 157 .Ascii(); |
157 EXPECT_EQ(kArrowUpNoScroll, output); | 158 EXPECT_EQ(kArrowUpNoScroll, output); |
158 } | 159 } |
159 | 160 |
160 // TODO(ekaramad): This test could be removed once we do not send irrelevant | 161 // TODO(ekaramad): This test could be removed once we do not send irrelevant |
161 // IPCs from browser during the time RenderViewImpl is swapped out | 162 // IPCs from browser during the time RenderViewImpl is swapped out |
162 // (https://crbug.com/669219). | 163 // (https://crbug.com/669219). |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 using Text = base::string16; | 196 using Text = base::string16; |
196 using Underlines = std::vector<blink::WebCompositionUnderline>; | 197 using Underlines = std::vector<blink::WebCompositionUnderline>; |
197 view->OnMessageReceived(InputMsg_ImeSetComposition( | 198 view->OnMessageReceived(InputMsg_ImeSetComposition( |
198 routing_id, Text(), Underlines(), Range(), 0, 0)); | 199 routing_id, Text(), Underlines(), Range(), 0, 0)); |
199 view->OnMessageReceived( | 200 view->OnMessageReceived( |
200 InputMsg_ImeCommitText(routing_id, Text(), Underlines(), Range(), 0)); | 201 InputMsg_ImeCommitText(routing_id, Text(), Underlines(), Range(), 0)); |
201 view->OnMessageReceived(InputMsg_ImeFinishComposingText(routing_id, false)); | 202 view->OnMessageReceived(InputMsg_ImeFinishComposingText(routing_id, false)); |
202 } | 203 } |
203 | 204 |
204 } // namespace content | 205 } // namespace content |
OLD | NEW |