| 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 |