Roll src/third_party/WebKit d9c6159:8139f33 (svn 201974:201975)
[chromium-blink-merge.git] / chrome / test / data / chromeos / virtual_keyboard / modifier_test.js
blob8a7a6ac6211240ed03551fc0026259ea9ff3c2c0
1 /*
2  * Copyright 2014 The Chromium Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  */
7 /**
8  * Test that the Control modifier key is sticky.
9  */
10 function testControlKeyStickyAsync(testDoneCallback) {
11   var testCallback = function() {
12     mockTap(findKeyById('ControlLeft'));
13     mockTypeCharacter('a', 0x41, Modifier.CONTROL, 0);
15     // Ensure that the control key is no longer sticking. i.e. Ensure that
16     // typing 'a' on its own results in only 'a'.
17     mockTypeCharacter('a', 0x41, Modifier.NONE);
19     testDoneCallback();
20   };
21   var config = {
22     keyset: 'us',
23     languageCode: 'en',
24     passwordLayout: 'us',
25     name: 'English'
26   };
27   onKeyboardReady(testCallback, config);
30 /**
31  * Test that holding down a modifier key will apply it to all character keys
32  * until it is released.
33  */
34 function testChordedControlKeyAsync(testDoneCallback) {
35   var testCallback = function() {
36     var controlKey = findKeyById('ControlLeft');
37     mockTouchEvent(controlKey, 'touchstart');
39     // Expect the first chorded press of Ctrl+a to work.
40     mockTypeCharacter('a', 0x41, Modifier.CONTROL, 0);
42     // Expect following chorded presses to work as well.
43     mockTypeCharacter('a', 0x41, Modifier.CONTROL, 0);
45     // Expect a regular tap of a key after chording ends.
46     mockTouchEvent(controlKey, 'touchend');
47     mockTypeCharacter('a', 0x41, Modifier.NONE);
48     testDoneCallback();
49   };
50   var config = {
51     keyset: 'us',
52     languageCode: 'en',
53     passwordLayout: 'us',
54     name: 'English'
55   };
56   onKeyboardReady(testCallback, config);
59 /**
60  * Test that multiple sticky keys stack until a character is typed.
61  */
62 function testMultipleStickyModifiersAsync(testDoneCallback) {
63   var testCallback = function() {
64     mockTap(findKeyById('ControlLeft'));
65     mockTap(findKeyById('AltLeft'));
66     mockTap(findKeyById('ShiftLeft'));
67     mockTypeCharacter('A', 0x41,
68                       Modifier.CONTROL | Modifier.ALT | Modifier.SHIFT,
69                       0);
71     // Keys should un-stick on a subsequent press.
72     mockTypeCharacter('a', 0x41, Modifier.NONE);
73     testDoneCallback();
74   };
75   var config = {
76     keyset: 'us',
77     languageCode: 'en',
78     passwordLayout: 'us',
79     name: 'English'
80   };
81   onKeyboardReady(testCallback, config);
84 /**
85  * Test that the second tap on a sticky key disables it.
86  */
87 function testDoubleTapUnstickAsync(testDoneCallback) {
88   var testCallback = function() {
89     mockTap(findKeyById('ControlLeft'));
90     mockTap(findKeyById('ControlLeft'));
91     mockTypeCharacter('a', 0x41, Modifier.NONE);
92     testDoneCallback();
93   };
94   var config = {
95     keyset: 'us',
96     languageCode: 'en',
97     passwordLayout: 'us',
98     name: 'English'
99   };
100   onKeyboardReady(testCallback, config);