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

Unified Diff: chrome/test/data/chromeos/virtual_keyboard/inputview/test_base.js

Issue 314453002: Upload IME Test CRX to latest version. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nit Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/chromeos/virtual_keyboard/inputview/test_base.js
diff --git a/chrome/test/data/chromeos/virtual_keyboard/inputview/test_base.js b/chrome/test/data/chromeos/virtual_keyboard/inputview/test_base.js
index 248341a7f1f7213bee9fc66d4dd3c5937cfbd8e1..65e1440af8a9c17d4f678912c434ba86e5b46e83 100644
--- a/chrome/test/data/chromeos/virtual_keyboard/inputview/test_base.js
+++ b/chrome/test/data/chromeos/virtual_keyboard/inputview/test_base.js
@@ -7,14 +7,17 @@
var mockController;
var mockTimer;
var setComposition;
+var realSetTimeout;
var DEFAULT_CONTEXT_ID = 1;
+var LONGPRESS_DELAY = 1100;
/**
* Create mocks for the virtualKeyboardPrivate API. Any tests that trigger API
* calls must set expectations for call signatures.
*/
function setUp() {
+ realSetTimeout = window.setTimeout;
mockController = new MockController();
mockTimer = new MockTimer();
mockTimer.install();
@@ -40,6 +43,17 @@ function setUp() {
// TODO(rsadam): Mock additional extension API calls as required.
}
+function RunTest(testFn, testDoneCallback) {
+ var pollTillReady = function() {
+ if (window.isKeyboardReady()) {
+ testFn();
+ testDoneCallback();
+ } else
+ realSetTimeout(pollTillReady, 100);
+ }
+ pollTillReady();
+}
+
/**
* Verify that API calls match expectations.
*/
@@ -64,38 +78,43 @@ function isActive(el) {
/**
* Map from keys to layout specific key ids. This only contains a small subset
* of the keys which are used in testing. The ids are based on the XKB layouts
- * in GoogleKeyboardInput-xkb.crx.
+ * in GoogleKeyboardInput-xkb.crx. Ids that start with a number are escaped
+ * so that document.querySelector returns the correct element.
*/
var KEY_IDS = {
'a' : {
- 'us' : '101kbd-k-29',
- 'us.compact' : 'compactkbd-k-key-10',
+ 'us' : '#\\31 01kbd-k-29',
+ 'us.compact.qwerty' : '#compactkbd-k-key-11',
},
'c' : {
- 'us' : '101kbd-k-44',
- 'us.compact' : 'compactkbd-k-key-21',
+ 'us' : '#\\31 01kbd-k-44',
+ 'us.compact.qwerty' : '#compactkbd-k-key-24',
},
'd' : {
- 'us' : '101kbd-k-31',
- 'us.compact' : 'compactkbd-k-key-12',
+ 'us' : '#\\31 01kbd-k-31',
+ 'us.compact.qwerty' : '#compactkbd-k-key-13',
},
+ 'e' : {
+ 'us' : '#\\31 01kbd-k-43',
+ 'us.compact.qwerty': '#compactkbd-k-key-2',
+ },
'l' : {
- 'us' : '101kbd-k-37',
- 'us.compact' : 'compactkbd-k-key-18',
+ 'us' : '#\\31 01kbd-k-37',
+ 'us.compact.qwerty' : '#compactkbd-k-key-19',
},
'p' : {
- 'us' : '101kbd-k-24',
- 'us.compact' : 'compactkbd-k-key-9',
+ 'us' : '#\\31 01kbd-k-24',
+ 'us.compact.qwerty' : '#compactkbd-k-key-9',
},
'leftshift' : {
- 'us' : '101kbd-k-41',
- 'us.compact' : 'compactkbd-k-21',
+ 'us' : '#\\31 01kbd-k-41',
+ 'us.compact.qwerty' : '#compactkbd-k-21',
},
"capslock" : {
- 'us' : '101kbd-k-28',
+ 'us' : '#\\31 01kbd-k-28',
}
};
@@ -124,14 +143,35 @@ function isActive(el) {
}
/**
+ * Returns the layout with the id provided. Periods in the id are replaced by
+ * hyphens.
+ * @param id {string} id The layout id.
+ * @return {object}
+ */
+
+ var getLayout_ = function(id) {
+ // Escape periods to hyphens.
+ var layoutId = id.replace(/\./g, '-');
+ var layout = document.querySelector('#' + layoutId);
+ assertTrue(!!layout, "Cannot find layout with id: " + layoutId);
+ return layout;
+ }
+
+ /**
* Returns the key object corresponding to the character.
* @return {string} char The character.
*/
var getKey_ = function(char) {
var layoutId = getLayoutId();
- var key = document.getElementById(getKeyId_(layoutId, char));
- assertTrue(!!key, "Key not present in layout: " + char);
- return key;
+ var layout = getLayout_(layoutId);
+
+ // All keys in the layout that are in the target keys position.
+ var candidates = layout.querySelectorAll(getKeyId_(layoutId, char));
+ assertTrue(candidates.length > 0, "Cannot find key: " + char);
+ var visible = Array.prototype.filter.call(candidates, isActive);
+ assertEquals(1, visible.length,
+ "Expect exactly one visible key for char: " + char);
+ return visible[0];
}
exports.getKey = getKey_;
@@ -182,8 +222,13 @@ function mockMouseType(char) {
* @param type {String} The type of the touch event.
*/
function generateTouchEvent(target, type) {
- var e = document.createEvent('UIEvents');
+ // UIEvent does not allow mocking pageX pageY of the event, so we use the
+ // parent Event class.
+ var e = document.createEvent('Event');
e.initEvent(type, true, true);
+ var rect = target.getBoundingClientRect();
+ e.pageX = rect.left;
+ e.pageY = rect.top;
target.dispatchEvent(e);
}

Powered by Google App Engine
This is Rietveld 408576698