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

Side by Side Diff: Source/web/tests/KeyboardTest.cpp

Issue 663523002: Adding support for DOM3 KeyboardEvents Code in KeyboardEvents (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: "Updated test for keypress and keyup. Added DOM3 code attribute as runtime enabled feature. DOMcode… Created 5 years, 11 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 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 18 matching lines...) Expand all
29 */ 29 */
30 30
31 #include "config.h" 31 #include "config.h"
32 32
33 #include <gtest/gtest.h> 33 #include <gtest/gtest.h>
34 34
35 #include "core/editing/EditingBehavior.h" 35 #include "core/editing/EditingBehavior.h"
36 #include "core/editing/Editor.h" 36 #include "core/editing/Editor.h"
37 #include "core/events/EventTarget.h" 37 #include "core/events/EventTarget.h"
38 #include "core/events/KeyboardEvent.h" 38 #include "core/events/KeyboardEvent.h"
39 #include "core/frame/FrameView.h"
39 #include "core/frame/Settings.h" 40 #include "core/frame/Settings.h"
41 #include "core/page/Page.h"
42 #include "core/testing/URLTestHelpers.h"
40 #include "platform/KeyboardCodes.h" 43 #include "platform/KeyboardCodes.h"
41 #include "public/web/WebInputEvent.h" 44 #include "public/web/WebInputEvent.h"
42 #include "web/WebInputEventConversion.h" 45 #include "web/WebInputEventConversion.h"
46 #include "web/WebViewImpl.h"
47 #include "web/tests/FrameTestHelpers.h"
43 48
44 using namespace blink; 49 using namespace blink;
45 50
46 namespace { 51 namespace {
47 52
48 class KeyboardTest : public testing::Test { 53 class KeyboardTest : public testing::Test {
49 public: 54 public:
50 55
51 // Pass a WebKeyboardEvent into the EditorClient and get back the string 56 // Pass a WebKeyboardEvent into the EditorClient and get back the string
52 // name of which editing event that key causes. 57 // name of which editing event that key causes.
53 // E.g., sending in the enter key gives back "InsertNewline". 58 // E.g., sending in the enter key gives back "InsertNewline".
54 const char* interpretKeyEvent( 59 const char* interpretKeyEvent(
55 const WebKeyboardEvent& webKeyboardEvent, 60 const WebKeyboardEvent& webKeyboardEvent,
56 PlatformEvent::Type keyType) 61 PlatformEvent::Type keyType)
57 { 62 {
58 PlatformKeyboardEventBuilder evt(webKeyboardEvent); 63 PlatformKeyboardEventBuilder evt(toLocalFrame(m_webView->page()->mainFra me())->view(), webKeyboardEvent);
59 evt.setKeyType(keyType); 64 evt.setKeyType(keyType);
60 RefPtrWillBeRawPtr<KeyboardEvent> keyboardEvent = KeyboardEvent::create( evt, 0); 65 RefPtrWillBeRawPtr<KeyboardEvent> keyboardEvent = KeyboardEvent::create( evt, 0);
61 OwnPtr<Settings> settings = Settings::create(); 66 OwnPtr<Settings> settings = Settings::create();
62 EditingBehavior behavior(settings->editingBehaviorType()); 67 EditingBehavior behavior(settings->editingBehaviorType());
63 return behavior.interpretKeyEvent(*keyboardEvent); 68 return behavior.interpretKeyEvent(*keyboardEvent);
64 } 69 }
65 70
66 // Set up a WebKeyboardEvent KEY_DOWN event with key code and modifiers. 71 // Set up a WebKeyboardEvent KEY_DOWN event with key code and modifiers.
67 void setupKeyDownEvent(WebKeyboardEvent* keyboardEvent, 72 void setupKeyDownEvent(WebKeyboardEvent* keyboardEvent,
68 char keyCode, 73 char keyCode,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 } 112 }
108 113
109 // Like interpretKeyEvent, but with typing a newline. 114 // Like interpretKeyEvent, but with typing a newline.
110 const char* interpretNewLine(int modifiers) 115 const char* interpretNewLine(int modifiers)
111 { 116 {
112 WebKeyboardEvent keyboardEvent; 117 WebKeyboardEvent keyboardEvent;
113 setupKeyDownEvent(&keyboardEvent, '\r', modifiers); 118 setupKeyDownEvent(&keyboardEvent, '\r', modifiers);
114 return interpretKeyEvent(keyboardEvent, PlatformEvent::Char); 119 return interpretKeyEvent(keyboardEvent, PlatformEvent::Char);
115 } 120 }
116 121
122 void initializeAndLoad()
123 {
124 const std::string baseURL("http://www.test5.com/");
bokan 2015/01/23 15:35:25 You'll likely get the same problem here with tryin
Habib Virji 2015/01/23 15:58:16 Done.
125 const std::string fileName("fixed_layout.html");
126 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(baseURL .c_str()), WebString::fromUTF8(fileName.c_str()));
127 m_webView = m_helper.initializeAndLoad(baseURL + fileName, true);
128 m_webView->resize(WebSize(640, 480));
129 m_webView->layout();
130 }
131
117 // A name for "no modifiers set". 132 // A name for "no modifiers set".
118 static const int noModifiers = 0; 133 static const int noModifiers = 0;
134
135 private:
136 FrameTestHelpers::WebViewHelper m_helper;
137 WebViewImpl* m_webView;
119 }; 138 };
120 139
121 TEST_F(KeyboardTest, TestCtrlReturn) 140 TEST_F(KeyboardTest, TestCtrlReturn)
122 { 141 {
142 initializeAndLoad();
123 EXPECT_STREQ("InsertNewline", interpretCtrlKeyPress(0xD)); 143 EXPECT_STREQ("InsertNewline", interpretCtrlKeyPress(0xD));
124 } 144 }
125 145
126 TEST_F(KeyboardTest, TestOSModifierZ) 146 TEST_F(KeyboardTest, TestOSModifierZ)
127 { 147 {
148 initializeAndLoad();
128 #if !OS(MACOSX) 149 #if !OS(MACOSX)
129 EXPECT_STREQ("Undo", interpretOSModifierKeyPress('Z')); 150 EXPECT_STREQ("Undo", interpretOSModifierKeyPress('Z'));
130 #endif 151 #endif
131 } 152 }
132 153
133 TEST_F(KeyboardTest, TestOSModifierY) 154 TEST_F(KeyboardTest, TestOSModifierY)
134 { 155 {
156 initializeAndLoad();
135 #if !OS(MACOSX) 157 #if !OS(MACOSX)
136 EXPECT_STREQ("Redo", interpretOSModifierKeyPress('Y')); 158 EXPECT_STREQ("Redo", interpretOSModifierKeyPress('Y'));
137 #endif 159 #endif
138 } 160 }
139 161
140 TEST_F(KeyboardTest, TestOSModifierA) 162 TEST_F(KeyboardTest, TestOSModifierA)
141 { 163 {
164 initializeAndLoad();
142 #if !OS(MACOSX) 165 #if !OS(MACOSX)
143 EXPECT_STREQ("SelectAll", interpretOSModifierKeyPress('A')); 166 EXPECT_STREQ("SelectAll", interpretOSModifierKeyPress('A'));
144 #endif 167 #endif
145 } 168 }
146 169
147 TEST_F(KeyboardTest, TestOSModifierX) 170 TEST_F(KeyboardTest, TestOSModifierX)
148 { 171 {
172 initializeAndLoad();
149 #if !OS(MACOSX) 173 #if !OS(MACOSX)
150 EXPECT_STREQ("Cut", interpretOSModifierKeyPress('X')); 174 EXPECT_STREQ("Cut", interpretOSModifierKeyPress('X'));
151 #endif 175 #endif
152 } 176 }
153 177
154 TEST_F(KeyboardTest, TestOSModifierC) 178 TEST_F(KeyboardTest, TestOSModifierC)
155 { 179 {
180 initializeAndLoad();
156 #if !OS(MACOSX) 181 #if !OS(MACOSX)
157 EXPECT_STREQ("Copy", interpretOSModifierKeyPress('C')); 182 EXPECT_STREQ("Copy", interpretOSModifierKeyPress('C'));
158 #endif 183 #endif
159 } 184 }
160 185
161 TEST_F(KeyboardTest, TestOSModifierV) 186 TEST_F(KeyboardTest, TestOSModifierV)
162 { 187 {
188 initializeAndLoad();
163 #if !OS(MACOSX) 189 #if !OS(MACOSX)
164 EXPECT_STREQ("Paste", interpretOSModifierKeyPress('V')); 190 EXPECT_STREQ("Paste", interpretOSModifierKeyPress('V'));
165 #endif 191 #endif
166 } 192 }
167 193
168 TEST_F(KeyboardTest, TestEscape) 194 TEST_F(KeyboardTest, TestEscape)
169 { 195 {
196 initializeAndLoad();
170 WebKeyboardEvent keyboardEvent; 197 WebKeyboardEvent keyboardEvent;
171 setupKeyDownEvent(&keyboardEvent, VKEY_ESCAPE, noModifiers); 198 setupKeyDownEvent(&keyboardEvent, VKEY_ESCAPE, noModifiers);
172 199
173 const char* result = interpretKeyEvent(keyboardEvent, 200 const char* result = interpretKeyEvent(keyboardEvent,
174 PlatformEvent::RawKeyDown); 201 PlatformEvent::RawKeyDown);
175 EXPECT_STREQ("Cancel", result); 202 EXPECT_STREQ("Cancel", result);
176 } 203 }
177 204
178 TEST_F(KeyboardTest, TestInsertTab) 205 TEST_F(KeyboardTest, TestInsertTab)
179 { 206 {
207 initializeAndLoad();
180 EXPECT_STREQ("InsertTab", interpretTab(noModifiers)); 208 EXPECT_STREQ("InsertTab", interpretTab(noModifiers));
181 } 209 }
182 210
183 TEST_F(KeyboardTest, TestInsertBackTab) 211 TEST_F(KeyboardTest, TestInsertBackTab)
184 { 212 {
213 initializeAndLoad();
185 EXPECT_STREQ("InsertBacktab", interpretTab(WebInputEvent::ShiftKey)); 214 EXPECT_STREQ("InsertBacktab", interpretTab(WebInputEvent::ShiftKey));
186 } 215 }
187 216
188 TEST_F(KeyboardTest, TestInsertNewline) 217 TEST_F(KeyboardTest, TestInsertNewline)
189 { 218 {
219 initializeAndLoad();
190 EXPECT_STREQ("InsertNewline", interpretNewLine(noModifiers)); 220 EXPECT_STREQ("InsertNewline", interpretNewLine(noModifiers));
191 } 221 }
192 222
193 TEST_F(KeyboardTest, TestInsertNewline2) 223 TEST_F(KeyboardTest, TestInsertNewline2)
194 { 224 {
225 initializeAndLoad();
195 EXPECT_STREQ("InsertNewline", interpretNewLine(WebInputEvent::ControlKey)); 226 EXPECT_STREQ("InsertNewline", interpretNewLine(WebInputEvent::ControlKey));
196 } 227 }
197 228
198 TEST_F(KeyboardTest, TestInsertLineBreak) 229 TEST_F(KeyboardTest, TestInsertLineBreak)
199 { 230 {
231 initializeAndLoad();
200 EXPECT_STREQ("InsertLineBreak", interpretNewLine(WebInputEvent::ShiftKey)); 232 EXPECT_STREQ("InsertLineBreak", interpretNewLine(WebInputEvent::ShiftKey));
201 } 233 }
202 234
203 TEST_F(KeyboardTest, TestInsertNewline3) 235 TEST_F(KeyboardTest, TestInsertNewline3)
204 { 236 {
237 initializeAndLoad();
205 EXPECT_STREQ("InsertNewline", interpretNewLine(WebInputEvent::AltKey)); 238 EXPECT_STREQ("InsertNewline", interpretNewLine(WebInputEvent::AltKey));
206 } 239 }
207 240
208 TEST_F(KeyboardTest, TestInsertNewline4) 241 TEST_F(KeyboardTest, TestInsertNewline4)
209 { 242 {
243 initializeAndLoad();
210 int modifiers = WebInputEvent::AltKey | WebInputEvent::ShiftKey; 244 int modifiers = WebInputEvent::AltKey | WebInputEvent::ShiftKey;
211 const char* result = interpretNewLine(modifiers); 245 const char* result = interpretNewLine(modifiers);
212 EXPECT_STREQ("InsertNewline", result); 246 EXPECT_STREQ("InsertNewline", result);
213 } 247 }
214 248
215 } // empty namespace 249 } // empty namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698