OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 3 * Use of this source code is governed by a BSD-style license that can be |
4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
5 */ | 5 */ |
6 | 6 |
7 var mockController; | 7 var mockController; |
8 var mockTimer; | 8 var mockTimer; |
9 var setComposition; | 9 var setComposition; |
10 | 10 |
11 var DEFAULT_CONTEXT_ID = 0; | 11 var DEFAULT_CONTEXT_ID = 0; |
12 var LONGPRESS_DELAY = 1100; | 12 var LONGPRESS_DELAY = 1100; |
| 13 var CAPSLOCK_ID = "OsLeft"; |
13 | 14 |
14 /** | 15 /** |
15 * Key alignments. | 16 * Key alignments. |
16 * @enum {string} | 17 * @enum {string} |
17 */ | 18 */ |
18 var Alignment = { | 19 var Alignment = { |
19 LEFT: 'left', | 20 LEFT: 'left', |
20 RIGHT: 'right', | 21 RIGHT: 'right', |
21 CENTER: 'center' | 22 CENTER: 'center' |
22 }; | 23 }; |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 * @param target {Object} The target of the event. | 76 * @param target {Object} The target of the event. |
76 * @param type {String} The type of the mouse event. | 77 * @param type {String} The type of the mouse event. |
77 */ | 78 */ |
78 function generateMouseEvent(target, type) { | 79 function generateMouseEvent(target, type) { |
79 var e = document.createEvent('MouseEvents'); | 80 var e = document.createEvent('MouseEvents'); |
80 e.initEvent.apply(e, Array.prototype.slice.call(arguments, 1)); | 81 e.initEvent.apply(e, Array.prototype.slice.call(arguments, 1)); |
81 target.dispatchEvent(e); | 82 target.dispatchEvent(e); |
82 } | 83 } |
83 | 84 |
84 /** | 85 /** |
85 * Mocks a character type using the mouse. | 86 * Mocks a key type using the mouse. |
| 87 * @param {Object} key The key to click on. |
| 88 */ |
| 89 function mockMouseTypeOnKey(key) { |
| 90 generateMouseEvent(key, 'mouseover', true, true); |
| 91 generateMouseEvent(key, 'mousedown', true, true); |
| 92 generateMouseEvent(key, 'mouseup', true, true); |
| 93 generateMouseEvent(key, 'click', true, true); |
| 94 generateMouseEvent(key, 'mouseover', true, true); |
| 95 generateMouseEvent(key, 'mouseout', true, true); |
| 96 } |
| 97 |
| 98 /** |
| 99 * Mocks a character type using the mouse. Expects the character will be |
| 100 * committed. |
86 * @param {String} char The character to type. | 101 * @param {String} char The character to type. |
87 */ | 102 */ |
88 function mockMouseType(char) { | 103 function mockMouseType(char) { |
89 var send = chrome.input.ime.commitText; | 104 var send = chrome.input.ime.commitText; |
90 send.addExpectation({ | 105 send.addExpectation({ |
91 contextId: DEFAULT_CONTEXT_ID, | 106 contextId: DEFAULT_CONTEXT_ID, |
92 text: char, | 107 text: char, |
93 }); | 108 }); |
94 var key = getKey(char); | 109 var key = getKey(char); |
95 generateMouseEvent(key, 'mouseover', true, true); | 110 mockMouseTypeOnKey(key); |
96 generateMouseEvent(key, 'mousedown', true, true); | |
97 generateMouseEvent(key, 'mouseup', true, true); | |
98 generateMouseEvent(key, 'click', true, true); | |
99 generateMouseEvent(key, 'mouseover', true, true); | |
100 generateMouseEvent(key, 'mouseout', true, true); | |
101 } | 111 } |
102 | 112 |
103 /** | 113 /** |
104 * Generates a touch event and dispatches it on the target. | 114 * Generates a touch event and dispatches it on the target. |
105 * @param target {Object} The target of the event. | 115 * @param target {Object} The target of the event. |
106 * @param type {String} The type of the touch event. | 116 * @param type {String} The type of the touch event. |
107 */ | 117 */ |
108 function generateTouchEvent(target, type) { | 118 function generateTouchEvent(target, type) { |
109 var e = document.createEvent('UIEvents'); | 119 var e = document.createEvent('UIEvents'); |
110 e.initEvent.apply(e, Array.prototype.slice.call(arguments, 1)); | 120 e.initEvent.apply(e, Array.prototype.slice.call(arguments, 1)); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 send.addExpectation({ | 194 send.addExpectation({ |
185 contextId: DEFAULT_CONTEXT_ID, | 195 contextId: DEFAULT_CONTEXT_ID, |
186 text: selection, | 196 text: selection, |
187 }); | 197 }); |
188 // TODO(rsadam:) Add support for touch move here once latest CRX uploaded to | 198 // TODO(rsadam:) Add support for touch move here once latest CRX uploaded to |
189 // chrome/test/data. | 199 // chrome/test/data. |
190 generateTouchEvent(key, 'touchend', true, true) | 200 generateTouchEvent(key, 'touchend', true, true) |
191 container = getActiveAltContainer(); | 201 container = getActiveAltContainer(); |
192 assertFalse(!!container, "Alt key container was not hidden."); | 202 assertFalse(!!container, "Alt key container was not hidden."); |
193 } | 203 } |
| 204 |
| 205 /** |
| 206 * Retrieves the shift key from the current keyset. |
| 207 * @param {Alignment} align The alignment of the shift key. |
| 208 * @return {Object} The key. |
| 209 */ |
| 210 function getShiftKey(align) { |
| 211 var id; |
| 212 switch(align) { |
| 213 case Alignment.LEFT: |
| 214 id = 'ShiftLeft'; |
| 215 break; |
| 216 case Alignment.RIGHT: |
| 217 id = 'ShiftRight'; |
| 218 break; |
| 219 default: |
| 220 break; |
| 221 } |
| 222 assertTrue(!!id, "Invalid shift alignment option: " + align); |
| 223 var shift = document.querySelector('#' + id); |
| 224 assertTrue(!!shift, "Cannot find shift key with alignment: " + align); |
| 225 return shift; |
| 226 } |
OLD | NEW |