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

Side by Side Diff: chrome/browser/chromeos/events/event_rewriter_unittest.cc

Issue 286103004: Blocked volume up/down events that originated from remapped function keys. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge of 'master' branch Created 6 years, 6 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 | « ash/wm/maximize_mode/maximize_mode_event_blocker.cc ('k') | ui/events/event_constants.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/chromeos/events/event_rewriter.h" 5 #include "chrome/browser/chromeos/events/event_rewriter.h"
6 6
7 #include <X11/keysym.h> 7 #include <X11/keysym.h>
8 #include <X11/XF86keysym.h> 8 #include <X11/XF86keysym.h>
9 #include <X11/Xlib.h> 9 #include <X11/Xlib.h>
10 #undef Bool 10 #undef Bool
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 // and check that it also matches the rewritten event. 128 // and check that it also matches the rewritten event.
129 ui::KeyEvent from_native_event(rewritten_key_event.native_event(), 129 ui::KeyEvent from_native_event(rewritten_key_event.native_event(),
130 false); 130 false);
131 EXPECT_EQ(expected, id + GetKeyEventAsString(from_native_event)); 131 EXPECT_EQ(expected, id + GetKeyEventAsString(from_native_event));
132 } 132 }
133 } 133 }
134 } 134 }
135 #endif 135 #endif
136 } 136 }
137 137
138 // Table entry for simple single function key event rewriting tests.
139 struct FunctionKeyTestCase {
140 ui::EventType type;
141 struct {
142 ui::KeyboardCode key_code;
143 int flags;
144 } input, vkey_expected, native_expected;
145 };
146
147 // Tests a single stateless function key rewrite operation.
148 // |i| is a an identifying number to locate failing tests in the tables.
149 // Function key mapping differs from the other key mappings because the
150 // EF_FUNCTION_KEY flag is set during ui::KeyEvent construction when passing in
151 // a native X11 event and the flag is not set when using other constructors.
152 void CheckFunctionKeyTestCase(size_t i,
153 chromeos::EventRewriter* rewriter,
154 const FunctionKeyTestCase& test) {
155 std::string id = base::StringPrintf("(%zu) ", i);
156 std::string vkey_expected =
157 id + GetExpectedResultAsString(
158 test.vkey_expected.key_code,
159 test.vkey_expected.flags,
160 test.type);
161 // Check rewriting of a non-native-based key event.
162 EXPECT_EQ(
163 vkey_expected,
164 id + GetRewrittenEventAsString(
165 rewriter, test.input.key_code, test.input.flags, test.type));
166
167 #if defined(USE_X11)
168 ui::ScopedXI2Event xev;
169 xev.InitKeyEvent(test.type, test.input.key_code, test.input.flags);
170 XEvent* xevent = xev;
171 if (xevent->xkey.keycode) {
172 ui::KeyEvent xkey_event(xevent, false);
173 // Rewrite the event and check the result.
174 scoped_ptr<ui::Event> new_event;
175 rewriter->RewriteEvent(xkey_event, &new_event);
176 ui::KeyEvent& rewritten_key_event =
177 new_event ? *static_cast<ui::KeyEvent*>(new_event.get()) : xkey_event;
178 std::string native_expected =
179 id + GetExpectedResultAsString(
180 test.native_expected.key_code,
181 test.native_expected.flags,
182 test.type);
183 EXPECT_EQ(native_expected, id + GetKeyEventAsString(rewritten_key_event));
184 }
185 #endif
186 }
187
138 } // namespace 188 } // namespace
139 189
140 namespace chromeos { 190 namespace chromeos {
141 191
142 class EventRewriterTest : public ash::test::AshTestBase { 192 class EventRewriterTest : public ash::test::AshTestBase {
143 public: 193 public:
144 EventRewriterTest() 194 EventRewriterTest()
145 : display_(gfx::GetXDisplay()), 195 : display_(gfx::GetXDisplay()),
146 mock_user_manager_(new chromeos::MockUserManager), 196 mock_user_manager_(new chromeos::MockUserManager),
147 user_manager_enabler_(mock_user_manager_), 197 user_manager_enabler_(mock_user_manager_),
(...skipping 999 matching lines...) Expand 10 before | Expand all | Expand 10 after
1147 CheckKeyTestCase(1000 + i, &rewriter, tests[i]); 1197 CheckKeyTestCase(1000 + i, &rewriter, tests[i]);
1148 } 1198 }
1149 } 1199 }
1150 1200
1151 TEST_F(EventRewriterTest, TestRewriteFunctionKeys) { 1201 TEST_F(EventRewriterTest, TestRewriteFunctionKeys) {
1152 TestingPrefServiceSyncable prefs; 1202 TestingPrefServiceSyncable prefs;
1153 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1203 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1154 EventRewriter rewriter; 1204 EventRewriter rewriter;
1155 rewriter.set_pref_service_for_testing(&prefs); 1205 rewriter.set_pref_service_for_testing(&prefs);
1156 1206
1157 KeyTestCase tests[] = { 1207 FunctionKeyTestCase tests[] = {
1158 // F1 -> Back 1208 // F1 -> Back
1159 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1209 {ui::ET_KEY_PRESSED,
1160 {ui::VKEY_F1, ui::EF_NONE}, 1210 {ui::VKEY_F1, ui::EF_NONE},
1161 {ui::VKEY_BROWSER_BACK, ui::EF_NONE}}, 1211 {ui::VKEY_BROWSER_BACK, ui::EF_NONE},
1162 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1212 {ui::VKEY_BROWSER_BACK, ui::EF_FUNCTION_KEY}},
1213 {ui::ET_KEY_PRESSED,
1163 {ui::VKEY_F1, ui::EF_CONTROL_DOWN}, 1214 {ui::VKEY_F1, ui::EF_CONTROL_DOWN},
1164 {ui::VKEY_BROWSER_BACK, ui::EF_CONTROL_DOWN}}, 1215 {ui::VKEY_BROWSER_BACK, ui::EF_CONTROL_DOWN},
1165 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1216 {ui::VKEY_BROWSER_BACK, ui::EF_CONTROL_DOWN | ui::EF_FUNCTION_KEY}},
1217 {ui::ET_KEY_PRESSED,
1166 {ui::VKEY_F1, ui::EF_ALT_DOWN}, 1218 {ui::VKEY_F1, ui::EF_ALT_DOWN},
1167 {ui::VKEY_BROWSER_BACK, ui::EF_ALT_DOWN}}, 1219 {ui::VKEY_BROWSER_BACK, ui::EF_ALT_DOWN},
1220 {ui::VKEY_BROWSER_BACK, ui::EF_ALT_DOWN | ui::EF_FUNCTION_KEY}},
1168 // F2 -> Forward 1221 // F2 -> Forward
1169 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1222 {ui::ET_KEY_PRESSED,
1170 {ui::VKEY_F2, ui::EF_NONE}, 1223 {ui::VKEY_F2, ui::EF_NONE},
1171 {ui::VKEY_BROWSER_FORWARD, ui::EF_NONE}}, 1224 {ui::VKEY_BROWSER_FORWARD, ui::EF_NONE},
1172 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1225 {ui::VKEY_BROWSER_FORWARD, ui::EF_FUNCTION_KEY}},
1226 {ui::ET_KEY_PRESSED,
1173 {ui::VKEY_F2, ui::EF_CONTROL_DOWN}, 1227 {ui::VKEY_F2, ui::EF_CONTROL_DOWN},
1174 {ui::VKEY_BROWSER_FORWARD, ui::EF_CONTROL_DOWN}}, 1228 {ui::VKEY_BROWSER_FORWARD, ui::EF_CONTROL_DOWN},
1175 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1229 {ui::VKEY_BROWSER_FORWARD, ui::EF_CONTROL_DOWN | ui::EF_FUNCTION_KEY}},
1230 {ui::ET_KEY_PRESSED,
1176 {ui::VKEY_F2, ui::EF_ALT_DOWN}, 1231 {ui::VKEY_F2, ui::EF_ALT_DOWN},
1177 {ui::VKEY_BROWSER_FORWARD, ui::EF_ALT_DOWN}}, 1232 {ui::VKEY_BROWSER_FORWARD, ui::EF_ALT_DOWN},
1233 {ui::VKEY_BROWSER_FORWARD, ui::EF_ALT_DOWN | ui::EF_FUNCTION_KEY}},
1178 // F3 -> Refresh 1234 // F3 -> Refresh
1179 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1235 {ui::ET_KEY_PRESSED,
1180 {ui::VKEY_F3, ui::EF_NONE}, 1236 {ui::VKEY_F3, ui::EF_NONE},
1181 {ui::VKEY_BROWSER_REFRESH, ui::EF_NONE}}, 1237 {ui::VKEY_BROWSER_REFRESH, ui::EF_NONE},
1182 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1238 {ui::VKEY_BROWSER_REFRESH, ui::EF_FUNCTION_KEY}},
1239 {ui::ET_KEY_PRESSED,
1183 {ui::VKEY_F3, ui::EF_CONTROL_DOWN}, 1240 {ui::VKEY_F3, ui::EF_CONTROL_DOWN},
1184 {ui::VKEY_BROWSER_REFRESH, ui::EF_CONTROL_DOWN}}, 1241 {ui::VKEY_BROWSER_REFRESH, ui::EF_CONTROL_DOWN},
1185 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1242 {ui::VKEY_BROWSER_REFRESH, ui::EF_CONTROL_DOWN | ui::EF_FUNCTION_KEY}},
1243 {ui::ET_KEY_PRESSED,
1186 {ui::VKEY_F3, ui::EF_ALT_DOWN}, 1244 {ui::VKEY_F3, ui::EF_ALT_DOWN},
1187 {ui::VKEY_BROWSER_REFRESH, ui::EF_ALT_DOWN}}, 1245 {ui::VKEY_BROWSER_REFRESH, ui::EF_ALT_DOWN},
1246 {ui::VKEY_BROWSER_REFRESH, ui::EF_ALT_DOWN | ui::EF_FUNCTION_KEY}},
1188 // F4 -> Launch App 2 1247 // F4 -> Launch App 2
1189 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1248 {ui::ET_KEY_PRESSED,
1190 {ui::VKEY_F4, ui::EF_NONE}, 1249 {ui::VKEY_F4, ui::EF_NONE},
1191 {ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_NONE}}, 1250 {ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_NONE},
1192 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1251 {ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_FUNCTION_KEY}},
1252 {ui::ET_KEY_PRESSED,
1193 {ui::VKEY_F4, ui::EF_CONTROL_DOWN}, 1253 {ui::VKEY_F4, ui::EF_CONTROL_DOWN},
1194 {ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_CONTROL_DOWN}}, 1254 {ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_CONTROL_DOWN},
1195 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1255 {ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_CONTROL_DOWN | ui::EF_FUNCTION_KEY}},
1256 {ui::ET_KEY_PRESSED,
1196 {ui::VKEY_F4, ui::EF_ALT_DOWN}, 1257 {ui::VKEY_F4, ui::EF_ALT_DOWN},
1197 {ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_ALT_DOWN}}, 1258 {ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_ALT_DOWN},
1259 {ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_ALT_DOWN | ui::EF_FUNCTION_KEY}},
1198 // F5 -> Launch App 1 1260 // F5 -> Launch App 1
1199 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1261 {ui::ET_KEY_PRESSED,
1200 {ui::VKEY_F5, ui::EF_NONE}, 1262 {ui::VKEY_F5, ui::EF_NONE},
1201 {ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_NONE}}, 1263 {ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_NONE},
1202 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1264 {ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_FUNCTION_KEY}},
1265 {ui::ET_KEY_PRESSED,
1203 {ui::VKEY_F5, ui::EF_CONTROL_DOWN}, 1266 {ui::VKEY_F5, ui::EF_CONTROL_DOWN},
1204 {ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN}}, 1267 {ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN},
1205 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1268 {ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN | ui::EF_FUNCTION_KEY}},
1269 {ui::ET_KEY_PRESSED,
1206 {ui::VKEY_F5, ui::EF_ALT_DOWN}, 1270 {ui::VKEY_F5, ui::EF_ALT_DOWN},
1207 {ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_ALT_DOWN}}, 1271 {ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_ALT_DOWN},
1272 {ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_ALT_DOWN | ui::EF_FUNCTION_KEY}},
1208 // F6 -> Brightness down 1273 // F6 -> Brightness down
1209 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1274 {ui::ET_KEY_PRESSED,
1210 {ui::VKEY_F6, ui::EF_NONE}, 1275 {ui::VKEY_F6, ui::EF_NONE},
1211 {ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE}}, 1276 {ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE},
1212 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1277 {ui::VKEY_BRIGHTNESS_DOWN, ui::EF_FUNCTION_KEY}},
1278 {ui::ET_KEY_PRESSED,
1213 {ui::VKEY_F6, ui::EF_CONTROL_DOWN}, 1279 {ui::VKEY_F6, ui::EF_CONTROL_DOWN},
1214 {ui::VKEY_BRIGHTNESS_DOWN, ui::EF_CONTROL_DOWN}}, 1280 {ui::VKEY_BRIGHTNESS_DOWN, ui::EF_CONTROL_DOWN},
1215 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1281 {ui::VKEY_BRIGHTNESS_DOWN, ui::EF_CONTROL_DOWN | ui::EF_FUNCTION_KEY}},
1282 {ui::ET_KEY_PRESSED,
1216 {ui::VKEY_F6, ui::EF_ALT_DOWN}, 1283 {ui::VKEY_F6, ui::EF_ALT_DOWN},
1217 {ui::VKEY_BRIGHTNESS_DOWN, ui::EF_ALT_DOWN}}, 1284 {ui::VKEY_BRIGHTNESS_DOWN, ui::EF_ALT_DOWN},
1285 {ui::VKEY_BRIGHTNESS_DOWN, ui::EF_ALT_DOWN | ui::EF_FUNCTION_KEY}},
1218 // F7 -> Brightness up 1286 // F7 -> Brightness up
1219 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1287 {ui::ET_KEY_PRESSED,
1220 {ui::VKEY_F7, ui::EF_NONE}, 1288 {ui::VKEY_F7, ui::EF_NONE},
1221 {ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE}}, 1289 {ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE},
1222 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1290 {ui::VKEY_BRIGHTNESS_UP, ui::EF_FUNCTION_KEY}},
1291 {ui::ET_KEY_PRESSED,
1223 {ui::VKEY_F7, ui::EF_CONTROL_DOWN}, 1292 {ui::VKEY_F7, ui::EF_CONTROL_DOWN},
1224 {ui::VKEY_BRIGHTNESS_UP, ui::EF_CONTROL_DOWN}}, 1293 {ui::VKEY_BRIGHTNESS_UP, ui::EF_CONTROL_DOWN},
1225 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1294 {ui::VKEY_BRIGHTNESS_UP, ui::EF_CONTROL_DOWN | ui::EF_FUNCTION_KEY}},
1295 {ui::ET_KEY_PRESSED,
1226 {ui::VKEY_F7, ui::EF_ALT_DOWN}, 1296 {ui::VKEY_F7, ui::EF_ALT_DOWN},
1227 {ui::VKEY_BRIGHTNESS_UP, ui::EF_ALT_DOWN}}, 1297 {ui::VKEY_BRIGHTNESS_UP, ui::EF_ALT_DOWN},
1298 {ui::VKEY_BRIGHTNESS_UP, ui::EF_ALT_DOWN | ui::EF_FUNCTION_KEY}},
1228 // F8 -> Volume Mute 1299 // F8 -> Volume Mute
1229 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1300 {ui::ET_KEY_PRESSED,
1230 {ui::VKEY_F8, ui::EF_NONE}, 1301 {ui::VKEY_F8, ui::EF_NONE},
1231 {ui::VKEY_VOLUME_MUTE, ui::EF_NONE}}, 1302 {ui::VKEY_VOLUME_MUTE, ui::EF_NONE},
1232 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1303 {ui::VKEY_VOLUME_MUTE, ui::EF_FUNCTION_KEY}},
1304 {ui::ET_KEY_PRESSED,
1233 {ui::VKEY_F8, ui::EF_CONTROL_DOWN}, 1305 {ui::VKEY_F8, ui::EF_CONTROL_DOWN},
1234 {ui::VKEY_VOLUME_MUTE, ui::EF_CONTROL_DOWN}}, 1306 {ui::VKEY_VOLUME_MUTE, ui::EF_CONTROL_DOWN},
1235 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1307 {ui::VKEY_VOLUME_MUTE, ui::EF_CONTROL_DOWN | ui::EF_FUNCTION_KEY}},
1308 {ui::ET_KEY_PRESSED,
1236 {ui::VKEY_F8, ui::EF_ALT_DOWN}, 1309 {ui::VKEY_F8, ui::EF_ALT_DOWN},
1237 {ui::VKEY_VOLUME_MUTE, ui::EF_ALT_DOWN}}, 1310 {ui::VKEY_VOLUME_MUTE, ui::EF_ALT_DOWN},
1311 {ui::VKEY_VOLUME_MUTE, ui::EF_ALT_DOWN | ui::EF_FUNCTION_KEY}},
1238 // F9 -> Volume Down 1312 // F9 -> Volume Down
1239 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1313 {ui::ET_KEY_PRESSED,
1240 {ui::VKEY_F9, ui::EF_NONE}, 1314 {ui::VKEY_F9, ui::EF_NONE},
1241 {ui::VKEY_VOLUME_DOWN, ui::EF_NONE}}, 1315 {ui::VKEY_VOLUME_DOWN, ui::EF_NONE},
1242 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1316 {ui::VKEY_VOLUME_DOWN, ui::EF_FUNCTION_KEY}},
1317 {ui::ET_KEY_PRESSED,
1243 {ui::VKEY_F9, ui::EF_CONTROL_DOWN}, 1318 {ui::VKEY_F9, ui::EF_CONTROL_DOWN},
1244 {ui::VKEY_VOLUME_DOWN, ui::EF_CONTROL_DOWN}}, 1319 {ui::VKEY_VOLUME_DOWN, ui::EF_CONTROL_DOWN},
1245 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1320 {ui::VKEY_VOLUME_DOWN, ui::EF_CONTROL_DOWN | ui::EF_FUNCTION_KEY}},
1321 {ui::ET_KEY_PRESSED,
1246 {ui::VKEY_F9, ui::EF_ALT_DOWN}, 1322 {ui::VKEY_F9, ui::EF_ALT_DOWN},
1247 {ui::VKEY_VOLUME_DOWN, ui::EF_ALT_DOWN}}, 1323 {ui::VKEY_VOLUME_DOWN, ui::EF_ALT_DOWN},
1324 {ui::VKEY_VOLUME_DOWN, ui::EF_ALT_DOWN | ui::EF_FUNCTION_KEY}},
1248 // F10 -> Volume Up 1325 // F10 -> Volume Up
1249 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1326 {ui::ET_KEY_PRESSED,
1250 {ui::VKEY_F10, ui::EF_NONE}, 1327 {ui::VKEY_F10, ui::EF_NONE},
1251 {ui::VKEY_VOLUME_UP, ui::EF_NONE}}, 1328 {ui::VKEY_VOLUME_UP, ui::EF_NONE},
1252 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1329 {ui::VKEY_VOLUME_UP, ui::EF_FUNCTION_KEY}},
1330 {ui::ET_KEY_PRESSED,
1253 {ui::VKEY_F10, ui::EF_CONTROL_DOWN}, 1331 {ui::VKEY_F10, ui::EF_CONTROL_DOWN},
1254 {ui::VKEY_VOLUME_UP, ui::EF_CONTROL_DOWN}}, 1332 {ui::VKEY_VOLUME_UP, ui::EF_CONTROL_DOWN},
1255 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1333 {ui::VKEY_VOLUME_UP, ui::EF_CONTROL_DOWN | ui::EF_FUNCTION_KEY}},
1334 {ui::ET_KEY_PRESSED,
1256 {ui::VKEY_F10, ui::EF_ALT_DOWN}, 1335 {ui::VKEY_F10, ui::EF_ALT_DOWN},
1257 {ui::VKEY_VOLUME_UP, ui::EF_ALT_DOWN}}, 1336 {ui::VKEY_VOLUME_UP, ui::EF_ALT_DOWN},
1337 {ui::VKEY_VOLUME_UP, ui::EF_ALT_DOWN | ui::EF_FUNCTION_KEY}},
1258 // F11 -> F11 1338 // F11 -> F11
1259 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1339 {ui::ET_KEY_PRESSED,
1340 {ui::VKEY_F11, ui::EF_NONE},
1341 {ui::VKEY_F11, ui::EF_NONE},
1342 {ui::VKEY_F11, ui::EF_FUNCTION_KEY}},
1343 {ui::ET_KEY_PRESSED,
1344 {ui::VKEY_F11, ui::EF_CONTROL_DOWN},
1345 {ui::VKEY_F11, ui::EF_CONTROL_DOWN},
1346 {ui::VKEY_F11, ui::EF_CONTROL_DOWN | ui::EF_FUNCTION_KEY}},
1347 {ui::ET_KEY_PRESSED,
1348 {ui::VKEY_F11, ui::EF_ALT_DOWN},
1349 {ui::VKEY_F11, ui::EF_ALT_DOWN},
1350 {ui::VKEY_F11, ui::EF_ALT_DOWN | ui::EF_FUNCTION_KEY}},
1351 // F12 -> F12
1352 {ui::ET_KEY_PRESSED,
1353 {ui::VKEY_F12, ui::EF_NONE},
1354 {ui::VKEY_F12, ui::EF_NONE},
1355 {ui::VKEY_F12, ui::EF_FUNCTION_KEY}},
1356 {ui::ET_KEY_PRESSED,
1357 {ui::VKEY_F12, ui::EF_CONTROL_DOWN},
1358 {ui::VKEY_F12, ui::EF_CONTROL_DOWN},
1359 {ui::VKEY_F12, ui::EF_CONTROL_DOWN | ui::EF_FUNCTION_KEY}},
1360 {ui::ET_KEY_PRESSED,
1361 {ui::VKEY_F12, ui::EF_ALT_DOWN},
1362 {ui::VKEY_F12, ui::EF_ALT_DOWN},
1363 {ui::VKEY_F12, ui::EF_ALT_DOWN | ui::EF_FUNCTION_KEY}},
1364
1365 // The number row should not be rewritten without Search key.
1366 {ui::ET_KEY_PRESSED,
1367 {ui::VKEY_1, ui::EF_NONE},
1368 {ui::VKEY_1, ui::EF_NONE},
1369 {ui::VKEY_1, ui::EF_NONE}},
1370 {ui::ET_KEY_PRESSED,
1371 {ui::VKEY_2, ui::EF_NONE},
1372 {ui::VKEY_2, ui::EF_NONE},
1373 {ui::VKEY_2, ui::EF_NONE}},
1374 {ui::ET_KEY_PRESSED,
1375 {ui::VKEY_3, ui::EF_NONE},
1376 {ui::VKEY_3, ui::EF_NONE},
1377 {ui::VKEY_3, ui::EF_NONE}},
1378 {ui::ET_KEY_PRESSED,
1379 {ui::VKEY_4, ui::EF_NONE},
1380 {ui::VKEY_4, ui::EF_NONE},
1381 {ui::VKEY_4, ui::EF_NONE}},
1382 {ui::ET_KEY_PRESSED,
1383 {ui::VKEY_5, ui::EF_NONE},
1384 {ui::VKEY_5, ui::EF_NONE},
1385 {ui::VKEY_5, ui::EF_NONE}},
1386 {ui::ET_KEY_PRESSED,
1387 {ui::VKEY_6, ui::EF_NONE},
1388 {ui::VKEY_6, ui::EF_NONE},
1389 {ui::VKEY_6, ui::EF_NONE}},
1390 {ui::ET_KEY_PRESSED,
1391 {ui::VKEY_7, ui::EF_NONE},
1392 {ui::VKEY_7, ui::EF_NONE},
1393 {ui::VKEY_7, ui::EF_NONE}},
1394 {ui::ET_KEY_PRESSED,
1395 {ui::VKEY_8, ui::EF_NONE},
1396 {ui::VKEY_8, ui::EF_NONE},
1397 {ui::VKEY_8, ui::EF_NONE}},
1398 {ui::ET_KEY_PRESSED,
1399 {ui::VKEY_9, ui::EF_NONE},
1400 {ui::VKEY_9, ui::EF_NONE},
1401 {ui::VKEY_9, ui::EF_NONE}},
1402 {ui::ET_KEY_PRESSED,
1403 {ui::VKEY_0, ui::EF_NONE},
1404 {ui::VKEY_0, ui::EF_NONE},
1405 {ui::VKEY_0, ui::EF_NONE}},
1406 {ui::ET_KEY_PRESSED,
1407 {ui::VKEY_OEM_MINUS, ui::EF_NONE},
1408 {ui::VKEY_OEM_MINUS, ui::EF_NONE},
1409 {ui::VKEY_OEM_MINUS, ui::EF_NONE}},
1410 {ui::ET_KEY_PRESSED,
1411 {ui::VKEY_OEM_PLUS, ui::EF_NONE},
1412 {ui::VKEY_OEM_PLUS, ui::EF_NONE},
1413 {ui::VKEY_OEM_PLUS, ui::EF_NONE}},
1414
1415 // The number row should be rewritten as the F<number> row with Search
1416 // key.
1417 {ui::ET_KEY_PRESSED,
1418 {ui::VKEY_1, ui::EF_COMMAND_DOWN},
1419 {ui::VKEY_F1, ui::EF_NONE},
1420 {ui::VKEY_F1, ui::EF_NONE}},
1421 {ui::ET_KEY_PRESSED,
1422 {ui::VKEY_2, ui::EF_COMMAND_DOWN},
1423 {ui::VKEY_F2, ui::EF_NONE},
1424 {ui::VKEY_F2, ui::EF_NONE}},
1425 {ui::ET_KEY_PRESSED,
1426 {ui::VKEY_3, ui::EF_COMMAND_DOWN},
1427 {ui::VKEY_F3, ui::EF_NONE},
1428 {ui::VKEY_F3, ui::EF_NONE}},
1429 {ui::ET_KEY_PRESSED,
1430 {ui::VKEY_4, ui::EF_COMMAND_DOWN},
1431 {ui::VKEY_F4, ui::EF_NONE},
1432 {ui::VKEY_F4, ui::EF_NONE}},
1433 {ui::ET_KEY_PRESSED,
1434 {ui::VKEY_5, ui::EF_COMMAND_DOWN},
1435 {ui::VKEY_F5, ui::EF_NONE},
1436 {ui::VKEY_F5, ui::EF_NONE}},
1437 {ui::ET_KEY_PRESSED,
1438 {ui::VKEY_6, ui::EF_COMMAND_DOWN},
1439 {ui::VKEY_F6, ui::EF_NONE},
1440 {ui::VKEY_F6, ui::EF_NONE}},
1441 {ui::ET_KEY_PRESSED,
1442 {ui::VKEY_7, ui::EF_COMMAND_DOWN},
1443 {ui::VKEY_F7, ui::EF_NONE},
1444 {ui::VKEY_F7, ui::EF_NONE}},
1445 {ui::ET_KEY_PRESSED,
1446 {ui::VKEY_8, ui::EF_COMMAND_DOWN},
1447 {ui::VKEY_F8, ui::EF_NONE},
1448 {ui::VKEY_F8, ui::EF_NONE}},
1449 {ui::ET_KEY_PRESSED,
1450 {ui::VKEY_9, ui::EF_COMMAND_DOWN},
1451 {ui::VKEY_F9, ui::EF_NONE},
1452 {ui::VKEY_F9, ui::EF_NONE}},
1453 {ui::ET_KEY_PRESSED,
1454 {ui::VKEY_0, ui::EF_COMMAND_DOWN},
1455 {ui::VKEY_F10, ui::EF_NONE},
1456 {ui::VKEY_F10, ui::EF_NONE}},
1457 {ui::ET_KEY_PRESSED,
1458 {ui::VKEY_OEM_MINUS, ui::EF_COMMAND_DOWN},
1260 {ui::VKEY_F11, ui::EF_NONE}, 1459 {ui::VKEY_F11, ui::EF_NONE},
1261 {ui::VKEY_F11, ui::EF_NONE}}, 1460 {ui::VKEY_F11, ui::EF_NONE}},
1262 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1461 {ui::ET_KEY_PRESSED,
1263 {ui::VKEY_F11, ui::EF_CONTROL_DOWN}, 1462 {ui::VKEY_OEM_PLUS, ui::EF_COMMAND_DOWN},
1264 {ui::VKEY_F11, ui::EF_CONTROL_DOWN}},
1265 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1266 {ui::VKEY_F11, ui::EF_ALT_DOWN},
1267 {ui::VKEY_F11, ui::EF_ALT_DOWN}},
1268 // F12 -> F12
1269 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1270 {ui::VKEY_F12, ui::EF_NONE}, 1463 {ui::VKEY_F12, ui::EF_NONE},
1271 {ui::VKEY_F12, ui::EF_NONE}}, 1464 {ui::VKEY_F12, ui::EF_NONE}},
1272 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1273 {ui::VKEY_F12, ui::EF_CONTROL_DOWN},
1274 {ui::VKEY_F12, ui::EF_CONTROL_DOWN}},
1275 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1276 {ui::VKEY_F12, ui::EF_ALT_DOWN},
1277 {ui::VKEY_F12, ui::EF_ALT_DOWN}},
1278
1279 // The number row should not be rewritten without Search key.
1280 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1281 {ui::VKEY_1, ui::EF_NONE},
1282 {ui::VKEY_1, ui::EF_NONE}},
1283 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1284 {ui::VKEY_2, ui::EF_NONE},
1285 {ui::VKEY_2, ui::EF_NONE}},
1286 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1287 {ui::VKEY_3, ui::EF_NONE},
1288 {ui::VKEY_3, ui::EF_NONE}},
1289 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1290 {ui::VKEY_4, ui::EF_NONE},
1291 {ui::VKEY_4, ui::EF_NONE}},
1292 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1293 {ui::VKEY_5, ui::EF_NONE},
1294 {ui::VKEY_5, ui::EF_NONE}},
1295 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1296 {ui::VKEY_6, ui::EF_NONE},
1297 {ui::VKEY_6, ui::EF_NONE}},
1298 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1299 {ui::VKEY_7, ui::EF_NONE},
1300 {ui::VKEY_7, ui::EF_NONE}},
1301 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1302 {ui::VKEY_8, ui::EF_NONE},
1303 {ui::VKEY_8, ui::EF_NONE}},
1304 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1305 {ui::VKEY_9, ui::EF_NONE},
1306 {ui::VKEY_9, ui::EF_NONE}},
1307 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1308 {ui::VKEY_0, ui::EF_NONE},
1309 {ui::VKEY_0, ui::EF_NONE}},
1310 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1311 {ui::VKEY_OEM_MINUS, ui::EF_NONE},
1312 {ui::VKEY_OEM_MINUS, ui::EF_NONE}},
1313 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1314 {ui::VKEY_OEM_PLUS, ui::EF_NONE},
1315 {ui::VKEY_OEM_PLUS, ui::EF_NONE}},
1316
1317 // The number row should be rewritten as the F<number> row with Search
1318 // key.
1319 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1320 {ui::VKEY_1, ui::EF_COMMAND_DOWN},
1321 {ui::VKEY_F1, ui::EF_NONE}},
1322 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1323 {ui::VKEY_2, ui::EF_COMMAND_DOWN},
1324 {ui::VKEY_F2, ui::EF_NONE}},
1325 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1326 {ui::VKEY_3, ui::EF_COMMAND_DOWN},
1327 {ui::VKEY_F3, ui::EF_NONE}},
1328 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1329 {ui::VKEY_4, ui::EF_COMMAND_DOWN},
1330 {ui::VKEY_F4, ui::EF_NONE}},
1331 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1332 {ui::VKEY_5, ui::EF_COMMAND_DOWN},
1333 {ui::VKEY_F5, ui::EF_NONE}},
1334 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1335 {ui::VKEY_6, ui::EF_COMMAND_DOWN},
1336 {ui::VKEY_F6, ui::EF_NONE}},
1337 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1338 {ui::VKEY_7, ui::EF_COMMAND_DOWN},
1339 {ui::VKEY_F7, ui::EF_NONE}},
1340 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1341 {ui::VKEY_8, ui::EF_COMMAND_DOWN},
1342 {ui::VKEY_F8, ui::EF_NONE}},
1343 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1344 {ui::VKEY_9, ui::EF_COMMAND_DOWN},
1345 {ui::VKEY_F9, ui::EF_NONE}},
1346 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1347 {ui::VKEY_0, ui::EF_COMMAND_DOWN},
1348 {ui::VKEY_F10, ui::EF_NONE}},
1349 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1350 {ui::VKEY_OEM_MINUS, ui::EF_COMMAND_DOWN},
1351 {ui::VKEY_F11, ui::EF_NONE}},
1352 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1353 {ui::VKEY_OEM_PLUS, ui::EF_COMMAND_DOWN},
1354 {ui::VKEY_F12, ui::EF_NONE}},
1355 1465
1356 // The function keys should not be rewritten with Search key pressed. 1466 // The function keys should not be rewritten with Search key pressed.
1357 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1467 {ui::ET_KEY_PRESSED,
1358 {ui::VKEY_F1, ui::EF_COMMAND_DOWN}, 1468 {ui::VKEY_F1, ui::EF_COMMAND_DOWN},
1359 {ui::VKEY_F1, ui::EF_NONE}}, 1469 {ui::VKEY_F1, ui::EF_NONE},
1360 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1470 {ui::VKEY_F1, ui::EF_FUNCTION_KEY}},
1471 {ui::ET_KEY_PRESSED,
1361 {ui::VKEY_F2, ui::EF_COMMAND_DOWN}, 1472 {ui::VKEY_F2, ui::EF_COMMAND_DOWN},
1362 {ui::VKEY_F2, ui::EF_NONE}}, 1473 {ui::VKEY_F2, ui::EF_NONE},
1363 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1474 {ui::VKEY_F2, ui::EF_FUNCTION_KEY}},
1475 {ui::ET_KEY_PRESSED,
1364 {ui::VKEY_F3, ui::EF_COMMAND_DOWN}, 1476 {ui::VKEY_F3, ui::EF_COMMAND_DOWN},
1365 {ui::VKEY_F3, ui::EF_NONE}}, 1477 {ui::VKEY_F3, ui::EF_NONE},
1366 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1478 {ui::VKEY_F3, ui::EF_FUNCTION_KEY}},
1479 {ui::ET_KEY_PRESSED,
1367 {ui::VKEY_F4, ui::EF_COMMAND_DOWN}, 1480 {ui::VKEY_F4, ui::EF_COMMAND_DOWN},
1368 {ui::VKEY_F4, ui::EF_NONE}}, 1481 {ui::VKEY_F4, ui::EF_NONE},
1369 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1482 {ui::VKEY_F4, ui::EF_FUNCTION_KEY}},
1483 {ui::ET_KEY_PRESSED,
1370 {ui::VKEY_F5, ui::EF_COMMAND_DOWN}, 1484 {ui::VKEY_F5, ui::EF_COMMAND_DOWN},
1371 {ui::VKEY_F5, ui::EF_NONE}}, 1485 {ui::VKEY_F5, ui::EF_NONE},
1372 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1486 {ui::VKEY_F5, ui::EF_FUNCTION_KEY}},
1487 {ui::ET_KEY_PRESSED,
1373 {ui::VKEY_F6, ui::EF_COMMAND_DOWN}, 1488 {ui::VKEY_F6, ui::EF_COMMAND_DOWN},
1374 {ui::VKEY_F6, ui::EF_NONE}}, 1489 {ui::VKEY_F6, ui::EF_NONE},
1375 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1490 {ui::VKEY_F6, ui::EF_FUNCTION_KEY}},
1491 {ui::ET_KEY_PRESSED,
1376 {ui::VKEY_F7, ui::EF_COMMAND_DOWN}, 1492 {ui::VKEY_F7, ui::EF_COMMAND_DOWN},
1377 {ui::VKEY_F7, ui::EF_NONE}}, 1493 {ui::VKEY_F7, ui::EF_NONE},
1378 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1494 {ui::VKEY_F7, ui::EF_FUNCTION_KEY}},
1495 {ui::ET_KEY_PRESSED,
1379 {ui::VKEY_F8, ui::EF_COMMAND_DOWN}, 1496 {ui::VKEY_F8, ui::EF_COMMAND_DOWN},
1380 {ui::VKEY_F8, ui::EF_NONE}}, 1497 {ui::VKEY_F8, ui::EF_NONE},
1381 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1498 {ui::VKEY_F8, ui::EF_FUNCTION_KEY}},
1499 {ui::ET_KEY_PRESSED,
1382 {ui::VKEY_F9, ui::EF_COMMAND_DOWN}, 1500 {ui::VKEY_F9, ui::EF_COMMAND_DOWN},
1383 {ui::VKEY_F9, ui::EF_NONE}}, 1501 {ui::VKEY_F9, ui::EF_NONE},
1384 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1502 {ui::VKEY_F9, ui::EF_FUNCTION_KEY}},
1503 {ui::ET_KEY_PRESSED,
1385 {ui::VKEY_F10, ui::EF_COMMAND_DOWN}, 1504 {ui::VKEY_F10, ui::EF_COMMAND_DOWN},
1386 {ui::VKEY_F10, ui::EF_NONE}}, 1505 {ui::VKEY_F10, ui::EF_NONE},
1387 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1506 {ui::VKEY_F10, ui::EF_FUNCTION_KEY}},
1507 {ui::ET_KEY_PRESSED,
1388 {ui::VKEY_F11, ui::EF_COMMAND_DOWN}, 1508 {ui::VKEY_F11, ui::EF_COMMAND_DOWN},
1389 {ui::VKEY_F11, ui::EF_NONE}}, 1509 {ui::VKEY_F11, ui::EF_NONE},
1390 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1510 {ui::VKEY_F11, ui::EF_FUNCTION_KEY}},
1511 {ui::ET_KEY_PRESSED,
1391 {ui::VKEY_F12, ui::EF_COMMAND_DOWN}, 1512 {ui::VKEY_F12, ui::EF_COMMAND_DOWN},
1392 {ui::VKEY_F12, ui::EF_NONE}}, 1513 {ui::VKEY_F12, ui::EF_NONE},
1514 {ui::VKEY_F12, ui::EF_FUNCTION_KEY}},
1393 }; 1515 };
1394 1516
1395 for (size_t i = 0; i < arraysize(tests); ++i) { 1517 for (size_t i = 0; i < arraysize(tests); ++i) {
1396 CheckKeyTestCase(1000 + i, &rewriter, tests[i]); 1518 CheckFunctionKeyTestCase(1000 + i, &rewriter, tests[i]);
1397 } 1519 }
1398 } 1520 }
1399 1521
1400 TEST_F(EventRewriterTest, TestRewriteExtendedKeysWithSearchRemapped) { 1522 TEST_F(EventRewriterTest, TestRewriteExtendedKeysWithSearchRemapped) {
1401 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); 1523 const CommandLine original_cl(*CommandLine::ForCurrentProcess());
1402 1524
1403 // Remap Search to Control. 1525 // Remap Search to Control.
1404 TestingPrefServiceSyncable prefs; 1526 TestingPrefServiceSyncable prefs;
1405 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1527 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1406 IntegerPrefMember search; 1528 IntegerPrefMember search;
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
1666 ui::ScopedXI2Event xev; 1788 ui::ScopedXI2Event xev;
1667 xev.InitGenericButtonEvent( 1789 xev.InitGenericButtonEvent(
1668 11, ui::ET_MOUSE_RELEASED, gfx::Point(), kLeftAndAltFlag); 1790 11, ui::ET_MOUSE_RELEASED, gfx::Point(), kLeftAndAltFlag);
1669 ui::MouseEvent release(xev); 1791 ui::MouseEvent release(xev);
1670 int flags = RewriteMouseEvent(&rewriter, release); 1792 int flags = RewriteMouseEvent(&rewriter, release);
1671 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & flags); 1793 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & flags);
1672 } 1794 }
1673 } 1795 }
1674 1796
1675 } // namespace chromeos 1797 } // namespace chromeos
OLDNEW
« no previous file with comments | « ash/wm/maximize_mode/maximize_mode_event_blocker.cc ('k') | ui/events/event_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698