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/strings/string16.h" | 5 #include "base/strings/string16.h" |
6 #include "base/strings/string_util.h" | 6 #include "base/strings/string_util.h" |
| 7 #include "base/strings/utf_string_conversions.h" |
7 #include "content/public/browser/native_web_keyboard_event.h" | 8 #include "content/public/browser/native_web_keyboard_event.h" |
8 #include "content/public/test/render_view_test.h" | 9 #include "content/public/test/render_view_test.h" |
9 #include "content/renderer/render_view_impl.h" | 10 #include "content/renderer/render_view_impl.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
11 #include "webkit/common/webpreferences.h" | 12 #include "webkit/common/webpreferences.h" |
12 | 13 |
13 #include <Cocoa/Cocoa.h> | 14 #include <Cocoa/Cocoa.h> |
14 #include <Carbon/Carbon.h> // for the kVK_* constants. | 15 #include <Carbon/Carbon.h> // for the kVK_* constants. |
15 | 16 |
16 namespace content { | 17 namespace content { |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 LoadHTML(kRawHtml); | 97 LoadHTML(kRawHtml); |
97 render_thread_->sink().ClearMessages(); | 98 render_thread_->sink().ClearMessages(); |
98 | 99 |
99 const char* kArrowDownScrollDown = "40,false,false,true,false\n10144\np1"; | 100 const char* kArrowDownScrollDown = "40,false,false,true,false\n10144\np1"; |
100 view->OnSetEditCommandsForNextKeyEvent( | 101 view->OnSetEditCommandsForNextKeyEvent( |
101 EditCommands(1, EditCommand("moveToEndOfDocument", ""))); | 102 EditCommands(1, EditCommand("moveToEndOfDocument", ""))); |
102 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowDownKeyDown)); | 103 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowDownKeyDown)); |
103 ProcessPendingMessages(); | 104 ProcessPendingMessages(); |
104 ExecuteJavaScript("scroll.textContent = window.pageYOffset"); | 105 ExecuteJavaScript("scroll.textContent = window.pageYOffset"); |
105 output = GetMainFrame()->contentAsText(kMaxOutputCharacters); | 106 output = GetMainFrame()->contentAsText(kMaxOutputCharacters); |
106 EXPECT_EQ(kArrowDownScrollDown, UTF16ToASCII(output)); | 107 EXPECT_EQ(kArrowDownScrollDown, base::UTF16ToASCII(output)); |
107 | 108 |
108 const char* kArrowUpScrollUp = "38,false,false,true,false\n0\np1"; | 109 const char* kArrowUpScrollUp = "38,false,false,true,false\n0\np1"; |
109 view->OnSetEditCommandsForNextKeyEvent( | 110 view->OnSetEditCommandsForNextKeyEvent( |
110 EditCommands(1, EditCommand("moveToBeginningOfDocument", ""))); | 111 EditCommands(1, EditCommand("moveToBeginningOfDocument", ""))); |
111 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowUpKeyDown)); | 112 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowUpKeyDown)); |
112 ProcessPendingMessages(); | 113 ProcessPendingMessages(); |
113 ExecuteJavaScript("scroll.textContent = window.pageYOffset"); | 114 ExecuteJavaScript("scroll.textContent = window.pageYOffset"); |
114 output = GetMainFrame()->contentAsText(kMaxOutputCharacters); | 115 output = GetMainFrame()->contentAsText(kMaxOutputCharacters); |
115 EXPECT_EQ(kArrowUpScrollUp, UTF16ToASCII(output)); | 116 EXPECT_EQ(kArrowUpScrollUp, base::UTF16ToASCII(output)); |
116 | 117 |
117 // Now let javascript eat the key events -- no scrolling should happen. | 118 // Now let javascript eat the key events -- no scrolling should happen. |
118 // Set a scroll position slightly down the page to ensure that it does not | 119 // Set a scroll position slightly down the page to ensure that it does not |
119 // move. | 120 // move. |
120 ExecuteJavaScript("allowKeyEvents = false; window.scrollTo(0, 100)"); | 121 ExecuteJavaScript("allowKeyEvents = false; window.scrollTo(0, 100)"); |
121 | 122 |
122 const char* kArrowDownNoScroll = "40,false,false,true,false\n100\np1"; | 123 const char* kArrowDownNoScroll = "40,false,false,true,false\n100\np1"; |
123 view->OnSetEditCommandsForNextKeyEvent( | 124 view->OnSetEditCommandsForNextKeyEvent( |
124 EditCommands(1, EditCommand("moveToEndOfDocument", ""))); | 125 EditCommands(1, EditCommand("moveToEndOfDocument", ""))); |
125 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowDownKeyDown)); | 126 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowDownKeyDown)); |
126 ProcessPendingMessages(); | 127 ProcessPendingMessages(); |
127 ExecuteJavaScript("scroll.textContent = window.pageYOffset"); | 128 ExecuteJavaScript("scroll.textContent = window.pageYOffset"); |
128 output = GetMainFrame()->contentAsText(kMaxOutputCharacters); | 129 output = GetMainFrame()->contentAsText(kMaxOutputCharacters); |
129 EXPECT_EQ(kArrowDownNoScroll, UTF16ToASCII(output)); | 130 EXPECT_EQ(kArrowDownNoScroll, base::UTF16ToASCII(output)); |
130 | 131 |
131 const char* kArrowUpNoScroll = "38,false,false,true,false\n100\np1"; | 132 const char* kArrowUpNoScroll = "38,false,false,true,false\n100\np1"; |
132 view->OnSetEditCommandsForNextKeyEvent( | 133 view->OnSetEditCommandsForNextKeyEvent( |
133 EditCommands(1, EditCommand("moveToBeginningOfDocument", ""))); | 134 EditCommands(1, EditCommand("moveToBeginningOfDocument", ""))); |
134 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowUpKeyDown)); | 135 SendNativeKeyEvent(NativeWebKeyboardEvent(arrowUpKeyDown)); |
135 ProcessPendingMessages(); | 136 ProcessPendingMessages(); |
136 ExecuteJavaScript("scroll.textContent = window.pageYOffset"); | 137 ExecuteJavaScript("scroll.textContent = window.pageYOffset"); |
137 output = GetMainFrame()->contentAsText(kMaxOutputCharacters); | 138 output = GetMainFrame()->contentAsText(kMaxOutputCharacters); |
138 EXPECT_EQ(kArrowUpNoScroll, UTF16ToASCII(output)); | 139 EXPECT_EQ(kArrowUpNoScroll, base::UTF16ToASCII(output)); |
139 } | 140 } |
140 | 141 |
141 } // namespace content | 142 } // namespace content |
OLD | NEW |