Bug 981363 - Wait or cursor to be cleared in tests. Some cleanup and improvements. r=yzen

This commit is contained in:
Eitan Isaacson 2014-03-24 09:29:44 -07:00
parent 4bd819c27e
commit 5290341ec1
3 changed files with 24 additions and 11 deletions

View File

@ -139,8 +139,11 @@ this.ContentControl.prototype = {
},
handleClearCursor: function cc_handleClearCursor(aMessage) {
this.sendToChild(this.vc, aMessage);
let forwarded = this.sendToChild(this.vc, aMessage);
this.vc.position = null;
if (!forwarded) {
this._contentScope.get().sendAsyncMessage('AccessFu:CursorCleared');
}
},
handleAutoMove: function cc_handleAutoMove(aMessage) {
@ -175,7 +178,7 @@ this.ContentControl.prototype = {
// (via ARIA roles, etc.), so we need to generate a click.
// Could possibly be made simpler in the future. Maybe core
// engine could expose nsCoreUtiles::DispatchMouseEvent()?
let docAcc = Utils.AccRetrieval.getAccessibleFor(content.document);
let docAcc = Utils.AccRetrieval.getAccessibleFor(this.document);
let docX = {}, docY = {}, docW = {}, docH = {};
docAcc.getBounds(docX, docY, docW, docH);
@ -188,8 +191,8 @@ this.ContentControl.prototype = {
let node = aAccessible.DOMNode || aAccessible.parent.DOMNode;
for (let eventType of ['mousedown', 'mouseup']) {
let evt = content.document.createEvent('MouseEvents');
evt.initMouseEvent(eventType, true, true, content,
let evt = this.document.createEvent('MouseEvents');
evt.initMouseEvent(eventType, true, true, this.window,
x, y, 0, 0, 0, false, false, false, false, 0, null);
node.dispatchEvent(evt);
}

View File

@ -209,6 +209,7 @@ AccessFuContentTest.prototype = {
}
aMessageManager.addMessageListener('AccessFu:Present', this);
aMessageManager.addMessageListener('AccessFu:CursorCleared', this);
aMessageManager.addMessageListener('AccessFu:Ready', function () {
aMessageManager.addMessageListener('AccessFu:ContentStarted', aCallback);
aMessageManager.sendAsyncMessage('AccessFu:Start',
@ -249,11 +250,20 @@ AccessFuContentTest.prototype = {
}
var expected = this.currentPair[1] || {};
// |expected| can simply be a name of a message, no more further testing.
if (aMessage.name === expected) {
ok(true, 'Received ' + expected);
this.pump();
return;
}
var speech = this.extractUtterance(aMessage.json);
var android = this.extractAndroid(aMessage.json, expected.android);
if ((speech && expected.speak) || (android && expected.android)) {
if (expected.speak) {
(SimpleTest[expected.speak_checkFunc] || is)(speech, expected.speak);
(SimpleTest[expected.speak_checkFunc] || is)(speech, expected.speak,
'"' + speech + '" spoken');
}
if (expected.android) {

View File

@ -96,7 +96,7 @@
speak_checkFunc: 'todo_is'
}],
[ContentMessages.clearCursor, null], // Reset cursors
[ContentMessages.clearCursor, 'AccessFu:CursorCleared'],
// Moving to the absolute first item from an embedded document
// fails. Bug 972035.
@ -115,7 +115,7 @@
}],
// Reset cursors
[ContentMessages.clearCursor, null],
[ContentMessages.clearCursor, 'AccessFu:CursorCleared'],
// Move cursor with focus in outside document
[ContentMessages.simpleMoveNext, {
@ -127,7 +127,7 @@
// Blur button and reset cursor
[ContentMessages.focusSelector('button#home', true), null],
[ContentMessages.clearCursor, null],
[ContentMessages.clearCursor, 'AccessFu:CursorCleared'],
// Set focus on element outside of embedded frame while
// cursor is in frame
@ -143,7 +143,7 @@
// Blur button and reset cursor
[ContentMessages.focusSelector('button#home', true), null],
[ContentMessages.clearCursor, null],
[ContentMessages.clearCursor, 'AccessFu:CursorCleared'],
// XXX: Set focus on iframe itself.
// XXX: Set focus on element in iframe when cursor is outside of it.
@ -163,7 +163,7 @@
speak: 'wow heading level 1 such app'
}],
[ContentMessages.clearCursor, null],
[ContentMessages.clearCursor, 'AccessFu:CursorCleared'],
// Open dialog in outer doc, while cursor is in inner frame
[ContentMessages.simpleMoveNext, {
@ -181,7 +181,7 @@
speak: 'many option not checked check button such app'
}],
[ContentMessages.clearCursor, null],
[ContentMessages.clearCursor, 'AccessFu:CursorCleared'],
// Open dialog, then focus on something when closing
[ContentMessages.simpleMoveNext, {