Bug 1367255 - Switch a11y browser tests to async/await. r=surkov

MozReview-Commit-ID: 4ptIIDckcqg
This commit is contained in:
Eitan Isaacson 2017-05-23 16:23:58 -07:00
parent fbd397af34
commit f0c56bf2da
44 changed files with 366 additions and 366 deletions

View File

@ -4,18 +4,18 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Create a11y service.
let a11yInit = initPromise();
let accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
yield a11yInit;
await a11yInit;
ok(accService, 'Service initialized');
// Accessible object reference will live longer than the scope of this
// function.
let acc = yield new Promise(resolve => {
let acc = await new Promise(resolve => {
let intervalId = setInterval(() => {
let tabAcc = accService.getAccessibleFor(gBrowser.mCurrentTab);
if (tabAcc) {
@ -41,7 +41,7 @@ add_task(function* () {
// a reference to an accessible object.
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Now allow a11y service to shutdown.
canShutdown = true;
@ -51,5 +51,5 @@ add_task(function* () {
// Force garbage collection that should now trigger shutdown.
forceGC();
yield a11yShutdown;
await a11yShutdown;
});

View File

@ -4,13 +4,13 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Create a11y service.
let a11yInit = initPromise();
let accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
yield a11yInit;
await a11yInit;
ok(accService, 'Service initialized');
// Accessible document reference will live longer than the scope of this
@ -33,7 +33,7 @@ add_task(function* () {
// a reference to an accessible document.
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Now allow a11y service to shutdown.
canShutdown = true;
@ -43,5 +43,5 @@ add_task(function* () {
// Force garbage collection that should now trigger shutdown.
forceGC();
yield a11yShutdown;
await a11yShutdown;
});

View File

@ -4,13 +4,13 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Create a11y service.
let a11yInit = initPromise();
let accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
yield a11yInit;
await a11yInit;
ok(accService, 'Service initialized');
let docAcc = accService.getAccessibleFor(document);
@ -18,7 +18,7 @@ add_task(function* () {
// Accessible object reference will live longer than the scope of this
// function.
let acc = yield new Promise(resolve => {
let acc = await new Promise(resolve => {
let intervalId = setInterval(() => {
let tabAcc = accService.getAccessibleFor(gBrowser.mCurrentTab);
if (tabAcc) {
@ -44,7 +44,7 @@ add_task(function* () {
// references to accessible objects.
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Remove a reference to an accessible object.
acc = null;
@ -53,7 +53,7 @@ add_task(function* () {
// a reference to an accessible document.
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Now allow a11y service to shutdown.
canShutdown = true;
@ -63,5 +63,5 @@ add_task(function* () {
// Force garbage collection that should now trigger shutdown.
forceGC();
yield a11yShutdown;
await a11yShutdown;
});

View File

@ -4,13 +4,13 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Create a11y service.
let a11yInit = initPromise();
let accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
yield a11yInit;
await a11yInit;
ok(accService, 'Service initialized');
let docAcc = accService.getAccessibleFor(document);
@ -18,7 +18,7 @@ add_task(function* () {
// Accessible object reference will live longer than the scope of this
// function.
let acc = yield new Promise(resolve => {
let acc = await new Promise(resolve => {
let intervalId = setInterval(() => {
let tabAcc = accService.getAccessibleFor(gBrowser.mCurrentTab);
if (tabAcc) {
@ -44,7 +44,7 @@ add_task(function* () {
// references to accessible objects.
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Remove a reference to an accessible document.
docAcc = null;
@ -53,7 +53,7 @@ add_task(function* () {
// a reference to an accessible object.
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Now allow a11y service to shutdown.
canShutdown = true;
@ -63,5 +63,5 @@ add_task(function* () {
// Force garbage collection that should now trigger shutdown.
forceGC();
yield a11yShutdown;
await a11yShutdown;
});

View File

@ -4,9 +4,9 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Making sure that the e10s is enabled on Windows for testing.
yield setE10sPrefs();
await setE10sPrefs();
let docLoaded = waitForEvent(
Ci.nsIAccessibleEvent.EVENT_DOCUMENT_LOAD_COMPLETE, 'body');
@ -14,9 +14,9 @@ add_task(function* () {
let accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
ok(accService, 'Service initialized');
yield a11yInit;
await a11yInit;
yield BrowserTestUtils.withNewTab({
await BrowserTestUtils.withNewTab({
gBrowser,
url: `data:text/html,
<html>
@ -26,8 +26,8 @@ add_task(function* () {
</head>
<body id="body"><div id="div"></div></body>
</html>`
}, function*(browser) {
let docLoadedEvent = yield docLoaded;
}, async function(browser) {
let docLoadedEvent = await docLoaded;
let docAcc = docLoadedEvent.accessibleDocument;
ok(docAcc, 'Accessible document proxy is created');
// Remove unnecessary dangling references
@ -49,7 +49,7 @@ add_task(function* () {
// is a reference to an accessible proxy.
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Remove a reference to an accessible proxy.
acc = null;
@ -58,7 +58,7 @@ add_task(function* () {
// a reference to an accessible document proxy.
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Now allow a11y service to shutdown.
canShutdown = true;
@ -68,9 +68,9 @@ add_task(function* () {
// Force garbage collection that should now trigger shutdown.
forceGC();
yield a11yShutdown;
await a11yShutdown;
});
// Unsetting e10s related preferences.
yield unsetE10sPrefs();
await unsetE10sPrefs();
});

View File

@ -4,9 +4,9 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Making sure that the e10s is enabled on Windows for testing.
yield setE10sPrefs();
await setE10sPrefs();
let docLoaded = waitForEvent(
Ci.nsIAccessibleEvent.EVENT_DOCUMENT_LOAD_COMPLETE, 'body');
@ -14,9 +14,9 @@ add_task(function* () {
let accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
ok(accService, 'Service initialized');
yield a11yInit;
await a11yInit;
yield BrowserTestUtils.withNewTab({
await BrowserTestUtils.withNewTab({
gBrowser,
url: `data:text/html,
<html>
@ -26,8 +26,8 @@ add_task(function* () {
</head>
<body id="body"><div id="div"></div></body>
</html>`
}, function*(browser) {
let docLoadedEvent = yield docLoaded;
}, async function(browser) {
let docLoadedEvent = await docLoaded;
let docAcc = docLoadedEvent.accessibleDocument;
ok(docAcc, 'Accessible document proxy is created');
// Remove unnecessary dangling references
@ -49,7 +49,7 @@ add_task(function* () {
// is a reference to an accessible proxy.
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Remove a reference to an accessible document proxy.
docAcc = null;
@ -58,7 +58,7 @@ add_task(function* () {
// a reference to an accessible proxy.
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Now allow a11y service to shutdown.
canShutdown = true;
@ -68,9 +68,9 @@ add_task(function* () {
// Force garbage collection that should now trigger shutdown.
forceGC();
yield a11yShutdown;
await a11yShutdown;
});
// Unsetting e10s related preferences.
yield unsetE10sPrefs();
await unsetE10sPrefs();
});

View File

@ -4,13 +4,13 @@
'use strict';
add_task(function* () {
add_task(async function () {
info('Creating a service');
// Create a11y service.
let a11yInit = initPromise();
let accService1 = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
yield a11yInit;
await a11yInit;
ok(accService1, 'Service initialized');
// Add another reference to a11y service. This will not trigger
@ -35,7 +35,7 @@ add_task(function* () {
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Now allow a11y service to shutdown.
canShutdown = true;
@ -44,5 +44,5 @@ add_task(function* () {
ok(!accService2, 'Service is removed');
// Force garbage collection that should trigger shutdown.
forceGC();
yield a11yShutdown;
await a11yShutdown;
});

View File

@ -4,11 +4,11 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Making sure that the e10s is enabled on Windows for testing.
yield setE10sPrefs();
await setE10sPrefs();
yield BrowserTestUtils.withNewTab({
await BrowserTestUtils.withNewTab({
gBrowser,
url: `data:text/html,
<html>
@ -18,7 +18,7 @@ add_task(function* () {
</head>
<body></body>
</html>`
}, function*(browser) {
}, async function(browser) {
info('Creating a service in parent and waiting for service to be created ' +
'in content');
// Create a11y service in the main process. This will trigger creating of
@ -28,7 +28,7 @@ add_task(function* () {
let accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
ok(accService, 'Service initialized in parent');
yield Promise.all([parentA11yInit, contentA11yInit]);
await Promise.all([parentA11yInit, contentA11yInit]);
info('Adding additional reference to accessibility service in content ' +
'process');
@ -52,7 +52,7 @@ add_task(function* () {
loadFrameScripts(browser, `accService = null; Components.utils.forceGC();`);
// Have some breathing room between a11y service shutdowns.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
info('Removing a service in parent');
// Now allow a11y service to shutdown in content.
@ -64,9 +64,9 @@ add_task(function* () {
// Force garbage collection that should trigger shutdown in both parent and
// content.
forceGC();
yield Promise.all([parentA11yShutdown, contentA11yShutdown]);
await Promise.all([parentA11yShutdown, contentA11yShutdown]);
// Unsetting e10s related preferences.
yield unsetE10sPrefs();
await unsetE10sPrefs();
});
});

View File

@ -4,17 +4,17 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Making sure that the e10s is enabled on Windows for testing.
yield setE10sPrefs();
await setE10sPrefs();
let a11yInit = initPromise();
let accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
ok(accService, 'Service initialized');
yield a11yInit;
await a11yInit;
yield BrowserTestUtils.withNewTab({
await BrowserTestUtils.withNewTab({
gBrowser,
url: `data:text/html,
<html>
@ -24,10 +24,10 @@ add_task(function* () {
</head>
<body><div id="div" style="visibility: hidden;"></div></body>
</html>`
}, function*(browser) {
}, async function(browser) {
let onShow = waitForEvent(Ci.nsIAccessibleEvent.EVENT_SHOW, 'div');
yield invokeSetStyle(browser, 'div', 'visibility', 'visible');
let showEvent = yield onShow;
await invokeSetStyle(browser, 'div', 'visibility', 'visible');
let showEvent = await onShow;
let divAcc = showEvent.accessible;
ok(divAcc, 'Accessible proxy is created');
// Remove unnecessary dangling references
@ -46,7 +46,7 @@ add_task(function* () {
// is a reference to an accessible proxy.
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Now allow a11y service to shutdown.
canShutdown = true;
@ -56,9 +56,9 @@ add_task(function* () {
// Force garbage collection that should now trigger shutdown.
forceGC();
yield a11yShutdown;
await a11yShutdown;
});
// Unsetting e10s related preferences.
yield unsetE10sPrefs();
await unsetE10sPrefs();
});

View File

@ -4,9 +4,9 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Making sure that the e10s is enabled on Windows for testing.
yield setE10sPrefs();
await setE10sPrefs();
let docLoaded = waitForEvent(
Ci.nsIAccessibleEvent.EVENT_DOCUMENT_LOAD_COMPLETE, 'body');
@ -14,9 +14,9 @@ add_task(function* () {
let accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
ok(accService, 'Service initialized');
yield a11yInit;
await a11yInit;
yield BrowserTestUtils.withNewTab({
await BrowserTestUtils.withNewTab({
gBrowser,
url: `data:text/html,
<html>
@ -26,8 +26,8 @@ add_task(function* () {
</head>
<body id="body"></body>
</html>`
}, function*(browser) {
let docLoadedEvent = yield docLoaded;
}, async function(browser) {
let docLoadedEvent = await docLoaded;
let docAcc = docLoadedEvent.accessibleDocument;
ok(docAcc, 'Accessible document proxy is created');
// Remove unnecessary dangling references
@ -46,7 +46,7 @@ add_task(function* () {
// is a reference to an accessible proxy.
forceGC();
// Have some breathing room when removing a11y service references.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
// Now allow a11y service to shutdown.
canShutdown = true;
@ -56,9 +56,9 @@ add_task(function* () {
// Force garbage collection that should now trigger shutdown.
forceGC();
yield a11yShutdown;
await a11yShutdown;
});
// Unsetting e10s related preferences.
yield unsetE10sPrefs();
await unsetE10sPrefs();
});

View File

@ -4,11 +4,11 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Making sure that the e10s is enabled on Windows for testing.
yield setE10sPrefs();
await setE10sPrefs();
yield BrowserTestUtils.withNewTab({
await BrowserTestUtils.withNewTab({
gBrowser,
url: `data:text/html,
<html>
@ -18,7 +18,7 @@ add_task(function* () {
</head>
<body></body>
</html>`
}, function*(browser) {
}, async function(browser) {
info('Creating a service in parent and waiting for service to be created ' +
'in content');
// Create a11y service in the main process. This will trigger creating of
@ -28,7 +28,7 @@ add_task(function* () {
let accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
ok(accService, 'Service initialized in parent');
yield Promise.all([parentA11yInit, contentA11yInit]);
await Promise.all([parentA11yInit, contentA11yInit]);
info('Removing a service in parent and waiting for service to be shut ' +
'down in content');
@ -40,9 +40,9 @@ add_task(function* () {
// Force garbage collection that should trigger shutdown in both main and
// content process.
forceGC();
yield Promise.all([parentA11yShutdown, contentA11yShutdown]);
await Promise.all([parentA11yShutdown, contentA11yShutdown]);
});
// Unsetting e10s related preferences.
yield unsetE10sPrefs();
await unsetE10sPrefs();
});

View File

@ -4,11 +4,11 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Making sure that the e10s is enabled on Windows for testing.
yield setE10sPrefs();
await setE10sPrefs();
yield BrowserTestUtils.withNewTab({
await BrowserTestUtils.withNewTab({
gBrowser,
url: `data:text/html,
<html>
@ -18,23 +18,23 @@ add_task(function* () {
</head>
<body></body>
</html>`
}, function*(browser) {
}, async function(browser) {
info('Creating a service in content');
// Create a11y service in the content process.
let a11yInit = initPromise(browser);
loadFrameScripts(browser, `let accService = Components.classes[
'@mozilla.org/accessibilityService;1'].getService(
Components.interfaces.nsIAccessibilityService);`);
yield a11yInit;
await a11yInit;
info('Removing a service in content');
// Remove a11y service reference from the content process.
let a11yShutdown = shutdownPromise(browser);
// Force garbage collection that should trigger shutdown.
loadFrameScripts(browser, `accService = null; Components.utils.forceGC();`);
yield a11yShutdown;
await a11yShutdown;
// Unsetting e10s related preferences.
yield unsetE10sPrefs();
await unsetE10sPrefs();
});
});

View File

@ -4,11 +4,11 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Making sure that the e10s is enabled on Windows for testing.
yield setE10sPrefs();
await setE10sPrefs();
yield BrowserTestUtils.withNewTab({
await BrowserTestUtils.withNewTab({
gBrowser,
url: `data:text/html,
<html>
@ -18,7 +18,7 @@ add_task(function* () {
</head>
<body></body>
</html>`
}, function*(browser) {
}, async function(browser) {
info('Creating a service in parent and waiting for service to be created ' +
'in content');
// Create a11y service in the main process. This will trigger creating of
@ -28,7 +28,7 @@ add_task(function* () {
let accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
ok(accService, 'Service initialized in parent');
yield Promise.all([parentA11yInit, contentA11yInit]);
await Promise.all([parentA11yInit, contentA11yInit]);
info('Adding additional reference to accessibility service in content ' +
'process');
@ -56,10 +56,10 @@ add_task(function* () {
// is a reference in a content process.
forceGC();
loadFrameScripts(browser, `Components.utils.forceGC();`);
yield parentA11yShutdown;
await parentA11yShutdown;
// Have some breathing room between a11y service shutdowns.
yield new Promise(resolve => executeSoon(resolve));
await new Promise(resolve => executeSoon(resolve));
info('Removing a service in content');
// Now allow a11y service to shutdown in content.
@ -67,9 +67,9 @@ add_task(function* () {
// Remove last reference to a11y service in content and force garbage
// collection that should trigger shutdown.
loadFrameScripts(browser, `accService = null; Components.utils.forceGC();`);
yield contentA11yShutdown;
await contentA11yShutdown;
// Unsetting e10s related preferences.
yield unsetE10sPrefs();
await unsetE10sPrefs();
});
});

View File

@ -4,7 +4,7 @@
'use strict';
add_task(function* () {
add_task(async function () {
// Create a11y service inside of the function scope. Its reference should be
// released once the anonimous function is called.
let a11yInitThenShutdown = initPromise().then(shutdownPromise);
@ -17,5 +17,5 @@ add_task(function* () {
// Force garbage collection that should trigger shutdown.
forceGC();
yield a11yInitThenShutdown;
await a11yInitThenShutdown;
});

View File

@ -4,13 +4,13 @@
'use strict';
add_task(function* () {
add_task(async function () {
info('Creating a service');
// Create a11y service.
let a11yInit = initPromise();
let accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
yield a11yInit;
await a11yInit;
ok(accService, 'Service initialized');
info('Removing a service');
@ -20,14 +20,14 @@ add_task(function* () {
ok(!accService, 'Service is removed');
// Force garbage collection that should trigger shutdown.
forceGC();
yield a11yShutdown;
await a11yShutdown;
info('Recreating a service');
// Re-create a11y service.
a11yInit = initPromise();
accService = Cc['@mozilla.org/accessibilityService;1'].getService(
Ci.nsIAccessibilityService);
yield a11yInit;
await a11yInit;
ok(accService, 'Service initialized again');
info('Removing a service again');
@ -37,5 +37,5 @@ add_task(function* () {
ok(!accService, 'Service is removed again');
// Force garbage collection that should trigger shutdown.
forceGC();
yield a11yShutdown;
await a11yShutdown;
});

View File

@ -25,14 +25,14 @@ const defaultAttributes = {
/**
* Test data has the format of:
* {
* desc {String} description for better logging
* expected {Object} expected attributes for given accessibles
* unexpected {Object} unexpected attributes for given accessibles
* desc {String} description for better logging
* expected {Object} expected attributes for given accessibles
* unexpected {Object} unexpected attributes for given accessibles
*
* action {?Function*} an optional action that yields a change in
* attributes
* attrs {?Array} an optional list of attributes to update
* waitFor {?Number} an optional event to wait for
* action {?AsyncFunction} an optional action that awaits a change in
* attributes
* attrs {?Array} an optional list of attributes to update
* waitFor {?Number} an optional event to wait for
* }
*/
const attributesTests = [{
@ -46,8 +46,8 @@ const attributesTests = [{
}
}, {
desc: '@line-number attribute is present when textbox is focused',
action: function*(browser) {
yield invokeFocus(browser, 'textbox');
action: async function(browser) {
await invokeFocus(browser, 'textbox');
},
waitFor: EVENT_FOCUS,
expected: Object.assign({}, defaultAttributes, { 'line-number': '1' }),
@ -90,7 +90,7 @@ const attributesTests = [{
*/
addAccessibleTask(`
<input id="textbox" value="hello">`,
function* (browser, accDoc) {
async function (browser, accDoc) {
let textbox = findAccessibleChildByID(accDoc, 'textbox');
for (let { desc, action, attrs, expected, waitFor, unexpected } of attributesTests) {
info(desc);
@ -101,14 +101,14 @@ addAccessibleTask(`
}
if (action) {
yield action(browser);
await action(browser);
} else if (attrs) {
for (let { attr, value } of attrs) {
yield invokeSetAttribute(browser, 'textbox', attr, value);
await invokeSetAttribute(browser, 'textbox', attr, value);
}
}
yield onUpdate;
await onUpdate;
testAttrs(textbox, expected);
testAbsentAttrs(textbox, unexpected);
}

View File

@ -137,7 +137,7 @@ addAccessibleTask(`
<p id="description">aria description</p>
<p id="description2">another description</p>
<img id="image" />`,
function*(browser, accDoc) {
async function(browser, accDoc) {
let imgAcc = findAccessibleChildByID(accDoc, 'image');
for (let { desc, waitFor, attrs, expected } of tests) {
@ -148,10 +148,10 @@ addAccessibleTask(`
}
if (attrs) {
for (let { attr, value } of attrs) {
yield invokeSetAttribute(browser, 'image', attr, value);
await invokeSetAttribute(browser, 'image', attr, value);
}
}
yield onUpdate;
await onUpdate;
// When attribute change (alt) triggers reorder event, accessible will
// become defunct.
if (isDefunct(imgAcc)) {

View File

@ -318,8 +318,8 @@ const markupTests = [{
* accessible, its parent and its content element
* id.
*/
function* updateAccessibleIfNeeded(onEvent, target) {
let event = yield onEvent;
async function updateAccessibleIfNeeded(onEvent, target) {
let event = await onEvent;
if (isDefunct(target.acc)) {
target.acc = findAccessibleChildByID(event.accessible, target.id);
}
@ -338,7 +338,7 @@ function* updateAccessibleIfNeeded(onEvent, target) {
* @param {Object} rule current attr rule for name calculation
* @param {[type]} expected expected name value
*/
function* testAttrRule(browser, target, rule, expected) {
async function testAttrRule(browser, target, rule, expected) {
testName(target.acc, expected);
let onEvent;
if (rule.recreated) {
@ -346,9 +346,9 @@ function* testAttrRule(browser, target, rule, expected) {
} else if (rule.textchanged) {
onEvent = waitForEvent(EVENT_TEXT_INSERTED, target.id);
}
yield invokeSetAttribute(browser, target.id, rule.attr);
await invokeSetAttribute(browser, target.id, rule.attr);
if (onEvent) {
yield updateAccessibleIfNeeded(onEvent, target);
await updateAccessibleIfNeeded(onEvent, target);
}
}
@ -364,13 +364,13 @@ function* testAttrRule(browser, target, rule, expected) {
* @param {Object} rule current elm rule for name calculation
* @param {[type]} expected expected name value
*/
function* testElmRule(browser, target, rule, expected) {
async function testElmRule(browser, target, rule, expected) {
testName(target.acc, expected);
let onEvent = waitForEvent(EVENT_REORDER, rule.isSibling ?
target.parent : target.id);
yield ContentTask.spawn(browser, rule.elm, elm =>
await ContentTask.spawn(browser, rule.elm, elm =>
content.document.querySelector(`${elm}`).remove());
yield updateAccessibleIfNeeded(onEvent, target);
await updateAccessibleIfNeeded(onEvent, target);
}
/**
@ -385,16 +385,16 @@ function* testElmRule(browser, target, rule, expected) {
* @param {Object} rule current subtree rule for name calculation
* @param {[type]} expected expected name value
*/
function* testSubtreeRule(browser, target, rule, expected) {
async function testSubtreeRule(browser, target, rule, expected) {
testName(target.acc, expected);
let onEvent = waitForEvent(EVENT_REORDER, target.id);
yield ContentTask.spawn(browser, target.id, id => {
await ContentTask.spawn(browser, target.id, id => {
let elm = content.document.getElementById(id);
while (elm.firstChild) {
elm.firstChild.remove();
}
});
yield updateAccessibleIfNeeded(onEvent, target);
await updateAccessibleIfNeeded(onEvent, target);
}
/**
@ -407,7 +407,7 @@ function* testSubtreeRule(browser, target, rule, expected) {
* @param {Array} ruleset A list of rules to test a target with
* @param {Array} expected A list of expected name value for each rule
*/
function* testNameRule(browser, target, ruleset, expected) {
async function testNameRule(browser, target, ruleset, expected) {
for (let i = 0; i < ruleset.length; ++i) {
let rule = ruleset[i];
let testFn;
@ -418,16 +418,16 @@ function* testNameRule(browser, target, ruleset, expected) {
} else if (rule.fromsubtree) {
testFn = testSubtreeRule;
}
yield testFn(browser, target, rule, expected[i]);
await testFn(browser, target, rule, expected[i]);
}
}
markupTests.forEach(({ id, ruleset, markup, expected }) =>
addAccessibleTask(markup, function*(browser, accDoc) {
addAccessibleTask(markup, async function(browser, accDoc) {
// Find a target accessible from an accessible subtree.
let acc = findAccessibleChildByID(accDoc, id);
// Find target's parent accessible from an accessible subtree.
let parent = getAccessibleDOMNodeID(acc.parent);
let target = { id, parent, acc };
yield testNameRule(browser, target, rules[ruleset], expected);
await testNameRule(browser, target, rules[ruleset], expected);
}));

View File

@ -22,7 +22,7 @@ const attrRelationsSpec = [
['aria-flowto', RELATION_FLOWS_TO, RELATION_FLOWS_FROM]
];
function* testRelated(browser, accDoc, attr, hostRelation, dependantRelation) {
async function testRelated(browser, accDoc, attr, hostRelation, dependantRelation) {
let host = findAccessibleChildByID(accDoc, 'host');
let dependant1 = findAccessibleChildByID(accDoc, 'dependant1');
let dependant2 = findAccessibleChildByID(accDoc, 'dependant2');
@ -58,7 +58,7 @@ function* testRelated(browser, accDoc, attr, hostRelation, dependantRelation) {
if (attrs) {
for (let { key, value } of attrs) {
yield invokeSetAttribute(browser, 'host', key, value);
await invokeSetAttribute(browser, 'host', key, value);
}
}
@ -75,9 +75,9 @@ addAccessibleTask(`
<div id="dependant1">label</div>
<div id="dependant2">label2</div>
<div role="checkbox" id="host"></div>`,
function* (browser, accDoc) {
async function (browser, accDoc) {
for (let spec of attrRelationsSpec) {
yield testRelated(browser, accDoc, ...spec);
await testRelated(browser, accDoc, ...spec);
}
}
);

View File

@ -91,15 +91,15 @@ const extraStateTests = [{
expected: [0, EXT_STATE_ENABLED]
}];
function* runStateTests(browser, accDoc, id, tests) {
async function runStateTests(browser, accDoc, id, tests) {
let acc = findAccessibleChildByID(accDoc, id);
for (let { desc, attrs, expected } of tests) {
info(desc);
let onUpdate = waitForEvent(EVENT_STATE_CHANGE, id);
for (let { attr, value } of attrs) {
yield invokeSetAttribute(browser, id, attr, value);
await invokeSetAttribute(browser, id, attr, value);
}
yield onUpdate;
await onUpdate;
testStates(acc, ...expected);
}
}
@ -111,9 +111,9 @@ addAccessibleTask(`
<input id="checkbox" type="checkbox">
<input id="file" type="file">
<input id="text">`,
function* (browser, accDoc) {
yield runStateTests(browser, accDoc, 'checkbox', attributeTests);
yield runStateTests(browser, accDoc, 'file', ariaTests);
yield runStateTests(browser, accDoc, 'text', extraStateTests);
async function (browser, accDoc) {
await runStateTests(browser, accDoc, 'checkbox', attributeTests);
await runStateTests(browser, accDoc, 'file', ariaTests);
await runStateTests(browser, accDoc, 'text', extraStateTests);
}
);

View File

@ -10,12 +10,12 @@ loadScripts({ name: 'value.js', dir: MOCHITESTS_DIR });
/**
* Test data has the format of:
* {
* desc {String} description for better logging
* id {String} given accessible DOMNode ID
* expected {String} expected value for a given accessible
* action {?Function*} an optional action that yields a value change
* attrs {?Array} an optional list of attributes to update
* waitFor {?Number} an optional value change event to wait for
* desc {String} description for better logging
* id {String} given accessible DOMNode ID
* expected {String} expected value for a given accessible
* action {?AsyncFunction} an optional action that awaits a value change
* attrs {?Array} an optional list of attributes to update
* waitFor {?Number} an optional value change event to wait for
* }
*/
const valueTests = [{
@ -25,9 +25,9 @@ const valueTests = [{
}, {
desc: 'Value should update to 3rd when 3 is pressed',
id: 'select',
action: function*(browser) {
yield invokeFocus(browser, 'select');
yield BrowserTestUtils.synthesizeKey('3', {}, browser);
action: async function(browser) {
await invokeFocus(browser, 'select');
await BrowserTestUtils.synthesizeKey('3', {}, browser);
},
waitFor: EVENT_TEXT_VALUE_CHANGE,
expected: '3rd'
@ -102,9 +102,9 @@ const valueTests = [{
}, {
desc: 'Value should change when slider is moved',
id: 'range',
action: function*(browser) {
yield invokeFocus(browser, 'range');
yield BrowserTestUtils.synthesizeKey('VK_LEFT', {}, browser);
action: async function(browser) {
await invokeFocus(browser, 'range');
await BrowserTestUtils.synthesizeKey('VK_LEFT', {}, browser);
},
waitFor: EVENT_VALUE_CHANGE,
expected: '5'
@ -124,7 +124,7 @@ addAccessibleTask(`
<input id="combobox" role="combobox" aria-autocomplete="inline">
<progress id="progress" value="22" max="100"></progress>
<input type="range" id="range" min="0" max="10" value="6">`,
function* (browser, accDoc) {
async function (browser, accDoc) {
for (let { desc, id, action, attrs, expected, waitFor } of valueTests) {
info(desc);
let acc = findAccessibleChildByID(accDoc, id);
@ -135,14 +135,14 @@ addAccessibleTask(`
}
if (action) {
yield action(browser);
await action(browser);
} else if (attrs) {
for (let { attr, value } of attrs) {
yield invokeSetAttribute(browser, id, attr, value);
await invokeSetAttribute(browser, id, attr, value);
}
}
yield onUpdate;
await onUpdate;
if (Array.isArray(expected)) {
acc.QueryInterface(nsIAccessibleValue);
testValue(acc, ...expected);

View File

@ -8,10 +8,10 @@
* Test caret move event and its interface:
* - caretOffset
*/
addAccessibleTask('<input id="textbox" value="hello"/>', function*(browser) {
addAccessibleTask('<input id="textbox" value="hello"/>', async function(browser) {
let onCaretMoved = waitForEvent(EVENT_TEXT_CARET_MOVED, 'textbox');
yield invokeFocus(browser, 'textbox');
let event = yield onCaretMoved;
await invokeFocus(browser, 'textbox');
let event = await onCaretMoved;
let caretMovedEvent = event.QueryInterface(nsIAccessibleCaretMoveEvent);
is(caretMovedEvent.caretOffset, 5,

View File

@ -16,11 +16,11 @@ addAccessibleTask(`
<div id="to-hide"></div>
<div id="next"></div>
</div>`,
function*(browser, accDoc) {
async function(browser, accDoc) {
let acc = findAccessibleChildByID(accDoc, 'to-hide');
let onHide = waitForEvent(EVENT_HIDE, acc);
yield invokeSetStyle(browser, 'to-hide', 'visibility', 'hidden');
let event = yield onHide;
await invokeSetStyle(browser, 'to-hide', 'visibility', 'hidden');
let event = await onHide;
let hideEvent = event.QueryInterface(Ci.nsIAccessibleHideEvent);
is(getAccessibleDOMNodeID(hideEvent.targetParent), 'parent',

View File

@ -8,8 +8,8 @@
* Test show event
*/
addAccessibleTask('<div id="div" style="visibility: hidden;"></div>',
function*(browser) {
async function(browser) {
let onShow = waitForEvent(EVENT_SHOW, 'div');
yield invokeSetStyle(browser, 'div', 'visibility', 'visible');
yield onShow;
await invokeSetStyle(browser, 'div', 'visibility', 'visible');
await onShow;
});

View File

@ -36,14 +36,14 @@ let iframeSrc = `data:text/html,
*/
addAccessibleTask(`
<iframe id="iframe" src="${iframeSrc}"></iframe>
<input id="checkbox" type="checkbox" />`, function*(browser) {
<input id="checkbox" type="checkbox" />`, async function(browser) {
// Test state change
let onStateChange = waitForEvent(EVENT_STATE_CHANGE, 'checkbox');
// Set checked for a checkbox.
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
content.document.getElementById('checkbox').checked = true;
});
let event = yield onStateChange;
let event = await onStateChange;
checkStateChangeEvent(event, STATE_CHECKED, false, true);
testStates(event.accessible, STATE_CHECKED, 0);
@ -51,10 +51,10 @@ addAccessibleTask(`
// Test extra state
onStateChange = waitForEvent(EVENT_STATE_CHANGE, 'iframe');
// Set design mode on.
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
content.document.getElementById('iframe').contentDocument.designMode = 'on';
});
event = yield onStateChange;
event = await onStateChange;
checkStateChangeEvent(event, EXT_STATE_EDITABLE, true, true);
testStates(event.accessible, 0, EXT_STATE_EDITABLE);

View File

@ -15,34 +15,34 @@ function checkTextChangeEvent(event, id, text, start, end, isInserted, isFromUse
`Correct value of isFromUserInput for ${prettyName(id)}`);
}
function* changeText(browser, id, value, events) {
async function changeText(browser, id, value, events) {
let onEvents = waitForMultipleEvents(events.map(({ isInserted }) => {
let eventType = isInserted ? EVENT_TEXT_INSERTED : EVENT_TEXT_REMOVED;
return { id, eventType };
}));
// Change text in the subtree.
yield ContentTask.spawn(browser, [id, value], ([contentId, contentValue]) => {
await ContentTask.spawn(browser, [id, value], ([contentId, contentValue]) => {
content.document.getElementById(contentId).firstChild.textContent =
contentValue;
});
let resolvedEvents = yield onEvents;
let resolvedEvents = await onEvents;
events.forEach(({ isInserted, str, offset }, idx) =>
checkTextChangeEvent(resolvedEvents[idx],
id, str, offset, offset + str.length, isInserted, false));
}
function* removeTextFromInput(browser, id, value, start, end) {
async function removeTextFromInput(browser, id, value, start, end) {
let onTextRemoved = waitForEvent(EVENT_TEXT_REMOVED, id);
// Select text and delete it.
yield ContentTask.spawn(browser, [id, start, end], ([contentId, contentStart, contentEnd]) => {
await ContentTask.spawn(browser, [id, start, end], ([contentId, contentStart, contentEnd]) => {
let el = content.document.getElementById(contentId);
el.focus();
el.setSelectionRange(contentStart, contentEnd);
});
yield BrowserTestUtils.sendChar('VK_DELETE', browser);
await BrowserTestUtils.sendChar('VK_DELETE', browser);
let event = yield onTextRemoved;
let event = await onTextRemoved;
checkTextChangeEvent(event, id, value, start, end, false, true);
}
@ -56,16 +56,16 @@ function* removeTextFromInput(browser, id, value, start, end) {
*/
addAccessibleTask(`
<p id="p">abc</p>
<input id="input" value="input" />`, function*(browser) {
<input id="input" value="input" />`, async function(browser) {
let events = [
{ isInserted: false, str: 'abc', offset: 0 },
{ isInserted: true, str: 'def', offset: 0 }
];
yield changeText(browser, 'p', 'def', events);
await changeText(browser, 'p', 'def', events);
events = [{ isInserted: true, str: 'DEF', offset: 2 }];
yield changeText(browser, 'p', 'deDEFf', events);
await changeText(browser, 'p', 'deDEFf', events);
// Test isFromUserInput property.
yield removeTextFromInput(browser, 'input', 'n', 1, 2);
await removeTextFromInput(browser, 'input', 'n', 1, 2);
});

View File

@ -8,7 +8,7 @@
loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
// Test ARIA Dialog
addAccessibleTask('doc_treeupdate_ariadialog.html', function*(browser, accDoc) {
addAccessibleTask('doc_treeupdate_ariadialog.html', async function(browser, accDoc) {
testAccessibleTree(accDoc, {
role: ROLE_DOCUMENT,
children: [ ]
@ -16,10 +16,10 @@ addAccessibleTask('doc_treeupdate_ariadialog.html', function*(browser, accDoc) {
// Make dialog visible and update its inner content.
let onShow = waitForEvent(EVENT_SHOW, 'dialog');
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
content.document.getElementById('dialog').style.display = 'block';
});
yield onShow;
await onShow;
testAccessibleTree(accDoc, {
role: ROLE_DOCUMENT,

View File

@ -7,7 +7,7 @@
/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
function* testContainer1(browser, accDoc) {
async function testContainer1(browser, accDoc) {
const id = 't1_container';
const docID = getAccessibleDOMNodeID(accDoc);
const acc = findAccessibleChildByID(accDoc, id);
@ -26,8 +26,8 @@ function* testContainer1(browser, accDoc) {
/* ================ Change ARIA owns ====================================== */
let onReorder = waitForEvent(EVENT_REORDER, id);
yield invokeSetAttribute(browser, id, 'aria-owns', 't1_button t1_subdiv');
yield onReorder;
await invokeSetAttribute(browser, id, 'aria-owns', 't1_button t1_subdiv');
await onReorder;
// children are swapped again, button and subdiv are appended to
// the children.
@ -42,8 +42,8 @@ function* testContainer1(browser, accDoc) {
/* ================ Remove ARIA owns ====================================== */
onReorder = waitForEvent(EVENT_REORDER, id);
yield invokeSetAttribute(browser, id, 'aria-owns');
yield onReorder;
await invokeSetAttribute(browser, id, 'aria-owns');
await onReorder;
// children follow the DOM order
tree = {
@ -58,8 +58,8 @@ function* testContainer1(browser, accDoc) {
/* ================ Set ARIA owns ========================================= */
onReorder = waitForEvent(EVENT_REORDER, id);
yield invokeSetAttribute(browser, id, 'aria-owns', 't1_button t1_subdiv');
yield onReorder;
await invokeSetAttribute(browser, id, 'aria-owns', 't1_button t1_subdiv');
await onReorder;
// children are swapped again, button and subdiv are appended to
// the children.
@ -74,9 +74,9 @@ function* testContainer1(browser, accDoc) {
/* ================ Add ID to ARIA owns =================================== */
onReorder = waitForEvent(EVENT_REORDER, docID);
yield invokeSetAttribute(browser, id, 'aria-owns',
await invokeSetAttribute(browser, id, 'aria-owns',
't1_button t1_subdiv t1_group');
yield onReorder;
await onReorder;
// children are swapped again, button and subdiv are appended to
// the children.
@ -92,13 +92,13 @@ function* testContainer1(browser, accDoc) {
/* ================ Append element ======================================== */
onReorder = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, id, contentId => {
await ContentTask.spawn(browser, id, contentId => {
let div = content.document.createElement('div');
div.setAttribute('id', 't1_child3');
div.setAttribute('role', 'radio');
content.document.getElementById(contentId).appendChild(div);
});
yield onReorder;
await onReorder;
// children are invalidated, they includes aria-owns swapped kids and
// newly inserted child.
@ -115,9 +115,9 @@ function* testContainer1(browser, accDoc) {
/* ================ Remove element ======================================== */
onReorder = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, {}, () =>
await ContentTask.spawn(browser, {}, () =>
content.document.getElementById('t1_span').remove());
yield onReorder;
await onReorder;
// subdiv should go away
tree = {
@ -132,8 +132,8 @@ function* testContainer1(browser, accDoc) {
/* ================ Remove ID ============================================= */
onReorder = waitForEvent(EVENT_REORDER, docID);
yield invokeSetAttribute(browser, 't1_group', 'id');
yield onReorder;
await invokeSetAttribute(browser, 't1_group', 'id');
await onReorder;
tree = {
SECTION: [
@ -146,8 +146,8 @@ function* testContainer1(browser, accDoc) {
/* ================ Set ID ================================================ */
onReorder = waitForEvent(EVENT_REORDER, docID);
yield invokeSetAttribute(browser, 't1_grouptmp', 'id', 't1_group');
yield onReorder;
await invokeSetAttribute(browser, 't1_grouptmp', 'id', 't1_group');
await onReorder;
tree = {
SECTION: [
@ -160,7 +160,7 @@ function* testContainer1(browser, accDoc) {
testAccessibleTree(acc, tree);
}
function* removeContainer(browser, accDoc) {
async function removeContainer(browser, accDoc) {
const id = 't2_container1';
const acc = findAccessibleChildByID(accDoc, id);
@ -172,10 +172,10 @@ function* removeContainer(browser, accDoc) {
testAccessibleTree(acc, tree);
let onReorder = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, {}, () =>
await ContentTask.spawn(browser, {}, () =>
content.document.getElementById('t2_container2').removeChild(
content.document.getElementById('t2_container3')));
yield onReorder;
await onReorder;
tree = {
SECTION: [ ]
@ -183,7 +183,7 @@ function* removeContainer(browser, accDoc) {
testAccessibleTree(acc, tree);
}
function* stealAndRecacheChildren(browser, accDoc) {
async function stealAndRecacheChildren(browser, accDoc) {
const id1 = 't3_container1';
const id2 = 't3_container2';
const acc1 = findAccessibleChildByID(accDoc, id1);
@ -191,8 +191,8 @@ function* stealAndRecacheChildren(browser, accDoc) {
/* ================ Steal from other ARIA owns ============================ */
let onReorder = waitForEvent(EVENT_REORDER, id2);
yield invokeSetAttribute(browser, id2, 'aria-owns', 't3_child');
yield onReorder;
await invokeSetAttribute(browser, id2, 'aria-owns', 't3_child');
await onReorder;
let tree = {
SECTION: [ ]
@ -208,12 +208,12 @@ function* stealAndRecacheChildren(browser, accDoc) {
/* ================ Append element to recache children ==================== */
onReorder = waitForEvent(EVENT_REORDER, id2);
yield ContentTask.spawn(browser, id2, id => {
await ContentTask.spawn(browser, id2, id => {
let div = content.document.createElement('div');
div.setAttribute('role', 'radio');
content.document.getElementById(id).appendChild(div);
});
yield onReorder;
await onReorder;
tree = {
SECTION: [ ]
@ -229,7 +229,7 @@ function* stealAndRecacheChildren(browser, accDoc) {
testAccessibleTree(acc2, tree);
}
function* showHiddenElement(browser, accDoc) {
async function showHiddenElement(browser, accDoc) {
const id = 't4_container1';
const acc = findAccessibleChildByID(accDoc, id);
@ -241,8 +241,8 @@ function* showHiddenElement(browser, accDoc) {
testAccessibleTree(acc, tree);
let onReorder = waitForEvent(EVENT_REORDER, id);
yield invokeSetStyle(browser, 't4_child1', 'display', 'block');
yield onReorder;
await invokeSetStyle(browser, 't4_child1', 'display', 'block');
await onReorder;
tree = {
SECTION: [
@ -253,7 +253,7 @@ function* showHiddenElement(browser, accDoc) {
testAccessibleTree(acc, tree);
}
function* rearrangeARIAOwns(browser, accDoc) {
async function rearrangeARIAOwns(browser, accDoc) {
const id = 't5_container';
const acc = findAccessibleChildByID(accDoc, id);
const tests = [{
@ -266,8 +266,8 @@ function* rearrangeARIAOwns(browser, accDoc) {
for (let { val, roleList } of tests) {
let onReorder = waitForEvent(EVENT_REORDER, id);
yield invokeSetAttribute(browser, id, 'aria-owns', val);
yield onReorder;
await invokeSetAttribute(browser, id, 'aria-owns', val);
await onReorder;
let tree = { SECTION: [ ] };
for (let role of roleList) {
@ -279,7 +279,7 @@ function* rearrangeARIAOwns(browser, accDoc) {
}
}
function* removeNotARIAOwnedEl(browser, accDoc) {
async function removeNotARIAOwnedEl(browser, accDoc) {
const id = 't6_container';
const acc = findAccessibleChildByID(accDoc, id);
@ -292,11 +292,11 @@ function* removeNotARIAOwnedEl(browser, accDoc) {
testAccessibleTree(acc, tree);
let onReorder = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, id, contentId => {
await ContentTask.spawn(browser, id, contentId => {
content.document.getElementById(contentId).removeChild(
content.document.getElementById('t6_span'));
});
yield onReorder;
await onReorder;
tree = {
SECTION: [
@ -306,11 +306,11 @@ function* removeNotARIAOwnedEl(browser, accDoc) {
testAccessibleTree(acc, tree);
}
addAccessibleTask('doc_treeupdate_ariaowns.html', function*(browser, accDoc) {
yield testContainer1(browser, accDoc);
yield removeContainer(browser, accDoc);
yield stealAndRecacheChildren(browser, accDoc);
yield showHiddenElement(browser, accDoc);
yield rearrangeARIAOwns(browser, accDoc);
yield removeNotARIAOwnedEl(browser, accDoc);
addAccessibleTask('doc_treeupdate_ariaowns.html', async function(browser, accDoc) {
await testContainer1(browser, accDoc);
await removeContainer(browser, accDoc);
await stealAndRecacheChildren(browser, accDoc);
await showHiddenElement(browser, accDoc);
await rearrangeARIAOwns(browser, accDoc);
await removeNotARIAOwnedEl(browser, accDoc);
});

View File

@ -10,15 +10,15 @@ loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
addAccessibleTask(`
<canvas id="canvas">
<div id="dialog" role="dialog" style="display: none;"></div>
</canvas>`, function*(browser, accDoc) {
</canvas>`, async function(browser, accDoc) {
let canvas = findAccessibleChildByID(accDoc, 'canvas');
let dialog = findAccessibleChildByID(accDoc, 'dialog');
testAccessibleTree(canvas, { CANVAS: [] });
let onShow = waitForEvent(EVENT_SHOW, 'dialog');
yield invokeSetStyle(browser, 'dialog', 'display', 'block');
yield onShow;
await invokeSetStyle(browser, 'dialog', 'display', 'block');
await onShow;
testAccessibleTree(dialog, { DIALOG: [] });
});

View File

@ -11,7 +11,7 @@ addAccessibleTask(`
<div id="container"><div id="scrollarea" style="overflow:auto;"><input>
</div></div>
<div id="container2"><div id="scrollarea2" style="overflow:hidden;">
</div></div>`, function*(browser, accDoc) {
</div></div>`, async function(browser, accDoc) {
const id1 = 'container';
const id2 = 'container2';
const container = findAccessibleChildByID(accDoc, id1);
@ -28,12 +28,12 @@ addAccessibleTask(`
testAccessibleTree(container, tree);
let onReorder = waitForEvent(EVENT_REORDER, id1);
yield ContentTask.spawn(browser, id1, id => {
await ContentTask.spawn(browser, id1, id => {
let doc = content.document;
doc.getElementById('scrollarea').style.width = '20px';
doc.getElementById(id).appendChild(doc.createElement('input'));
});
yield onReorder;
await onReorder;
tree = {
SECTION: [ {// container
@ -51,8 +51,8 @@ addAccessibleTask(`
testAccessibleTree(container2, tree);
onReorder = waitForEvent(EVENT_REORDER, id2);
yield invokeSetStyle(browser, 'scrollarea2', 'overflow', 'auto');
yield onReorder;
await invokeSetStyle(browser, 'scrollarea2', 'overflow', 'auto');
await onReorder;
tree = {
SECTION: [ // container

View File

@ -17,7 +17,7 @@ const iframeSrc = `data:text/html,
</html>`;
addAccessibleTask(`
<iframe id="iframe" src="${iframeSrc}"></iframe>`, function*(browser, accDoc) {
<iframe id="iframe" src="${iframeSrc}"></iframe>`, async function(browser, accDoc) {
// ID of the iframe that is being tested
const id = 'inner-iframe';
@ -32,7 +32,7 @@ addAccessibleTask(`
/* ================= Write iframe document ================================ */
let reorderEventPromise = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, id, contentId => {
await ContentTask.spawn(browser, id, contentId => {
let docNode = content.document.getElementById('iframe').contentDocument;
let newHTMLNode = docNode.createElement('html');
let newBodyNode = docNode.createElement('body');
@ -42,7 +42,7 @@ addAccessibleTask(`
newHTMLNode.appendChild(newBodyNode);
docNode.replaceChild(newHTMLNode, docNode.documentElement);
});
yield reorderEventPromise;
await reorderEventPromise;
tree = {
role: ROLE_DOCUMENT,
@ -57,7 +57,7 @@ addAccessibleTask(`
/* ================= Replace iframe HTML element ========================== */
reorderEventPromise = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, id, contentId => {
await ContentTask.spawn(browser, id, contentId => {
let docNode = content.document.getElementById('iframe').contentDocument;
// We can't use open/write/close outside of iframe document because of
// security error.
@ -68,7 +68,7 @@ addAccessibleTask(`
document.close();`;
docNode.body.appendChild(script);
});
yield reorderEventPromise;
await reorderEventPromise;
tree = {
role: ROLE_DOCUMENT,
@ -83,7 +83,7 @@ addAccessibleTask(`
/* ================= Replace iframe body ================================== */
reorderEventPromise = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, id, contentId => {
await ContentTask.spawn(browser, id, contentId => {
let docNode = content.document.getElementById('iframe').contentDocument;
let newBodyNode = docNode.createElement('body');
let newTextNode = docNode.createTextNode('New Hello');
@ -92,7 +92,7 @@ addAccessibleTask(`
newBodyNode.setAttribute('role', 'button');
docNode.documentElement.replaceChild(newBodyNode, docNode.body);
});
yield reorderEventPromise;
await reorderEventPromise;
tree = {
role: ROLE_PUSHBUTTON,
@ -107,7 +107,7 @@ addAccessibleTask(`
/* ================= Open iframe document ================================= */
reorderEventPromise = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, id, contentId => {
await ContentTask.spawn(browser, id, contentId => {
// Open document.
let docNode = content.document.getElementById('iframe').contentDocument;
let script = docNode.createElement('script');
@ -121,7 +121,7 @@ addAccessibleTask(`
document.write('<body id="${contentId}"></body>');`;
docNode.body.appendChild(script);
});
yield reorderEventPromise;
await reorderEventPromise;
tree = {
role: ROLE_DOCUMENT,
@ -131,13 +131,13 @@ addAccessibleTask(`
/* ================= Close iframe document ================================ */
reorderEventPromise = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
// Write and close document.
let docNode = content.document.getElementById('iframe').contentDocument;
docNode.write('Works?');
docNode.close();
});
yield reorderEventPromise;
await reorderEventPromise;
tree = {
role: ROLE_DOCUMENT,
@ -152,12 +152,12 @@ addAccessibleTask(`
/* ================= Remove HTML from iframe document ===================== */
reorderEventPromise = waitForEvent(EVENT_REORDER, iframe);
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
// Remove HTML element.
let docNode = content.document.getElementById('iframe').contentDocument;
docNode.firstChild.remove();
});
let event = yield reorderEventPromise;
let event = await reorderEventPromise;
ok(event.accessible instanceof nsIAccessibleDocument,
'Reorder should happen on the document');
@ -169,7 +169,7 @@ addAccessibleTask(`
/* ================= Insert HTML to iframe document ======================= */
reorderEventPromise = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, id, contentId => {
await ContentTask.spawn(browser, id, contentId => {
// Insert HTML element.
let docNode = content.document.getElementById('iframe').contentDocument;
let html = docNode.createElement('html');
@ -180,7 +180,7 @@ addAccessibleTask(`
html.appendChild(body);
docNode.appendChild(html);
});
yield reorderEventPromise;
await reorderEventPromise;
tree = {
role: ROLE_DOCUMENT,
@ -195,12 +195,12 @@ addAccessibleTask(`
/* ================= Remove body from iframe document ===================== */
reorderEventPromise = waitForEvent(EVENT_REORDER, iframe);
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
// Remove body element.
let docNode = content.document.getElementById('iframe').contentDocument;
docNode.documentElement.removeChild(docNode.body);
});
event = yield reorderEventPromise;
event = await reorderEventPromise;
ok(event.accessible instanceof nsIAccessibleDocument,
'Reorder should happen on the document');
@ -212,12 +212,12 @@ addAccessibleTask(`
/* ================ Insert element under document element while body missed */
reorderEventPromise = waitForEvent(EVENT_REORDER, iframe);
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let docNode = content.document.getElementById('iframe').contentDocument;
let inputNode = content.window.inputNode = docNode.createElement('input');
docNode.documentElement.appendChild(inputNode);
});
event = yield reorderEventPromise;
event = await reorderEventPromise;
ok(event.accessible instanceof nsIAccessibleDocument,
'Reorder should happen on the document');
@ -229,14 +229,14 @@ addAccessibleTask(`
testAccessibleTree(iframe, tree);
reorderEventPromise = waitForEvent(EVENT_REORDER, iframe);
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let docEl =
content.document.getElementById('iframe').contentDocument.documentElement;
// Remove aftermath of this test before next test starts.
docEl.firstChild.remove();
});
// Make sure reorder event was fired and that the input was removed.
yield reorderEventPromise;
await reorderEventPromise;
tree = {
role: ROLE_DOCUMENT,
children: [ ]
@ -245,7 +245,7 @@ addAccessibleTask(`
/* ================= Insert body to iframe document ======================= */
reorderEventPromise = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, id, contentId => {
await ContentTask.spawn(browser, id, contentId => {
// Write and close document.
let docNode = content.document.getElementById('iframe').contentDocument;
// Insert body element.
@ -255,7 +255,7 @@ addAccessibleTask(`
body.id = contentId;
docNode.documentElement.appendChild(body);
});
yield reorderEventPromise;
await reorderEventPromise;
tree = {
role: ROLE_DOCUMENT,
@ -270,9 +270,9 @@ addAccessibleTask(`
/* ================= Change source ======================================== */
reorderEventPromise = waitForEvent(EVENT_REORDER, 'iframe');
yield invokeSetAttribute(browser, 'iframe', 'src',
await invokeSetAttribute(browser, 'iframe', 'src',
`data:text/html,<html><body id="${id}"><input></body></html>`);
event = yield reorderEventPromise;
event = await reorderEventPromise;
tree = {
INTERNAL_FRAME: [
@ -286,7 +286,7 @@ addAccessibleTask(`
/* ================= Replace iframe body on ARIA role body ================ */
reorderEventPromise = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, id, contentId => {
await ContentTask.spawn(browser, id, contentId => {
let docNode = content.document.getElementById('iframe').contentDocument;
let newBodyNode = docNode.createElement('body');
let newTextNode = docNode.createTextNode('New Hello');
@ -295,7 +295,7 @@ addAccessibleTask(`
newBodyNode.id = contentId;
docNode.documentElement.replaceChild(newBodyNode, docNode.body);
});
yield reorderEventPromise;
await reorderEventPromise;
tree = {
role: ROLE_PUSHBUTTON,

View File

@ -18,7 +18,7 @@ addAccessibleTask(`
</style>
<div id="container1"></div>
<div id="container2"><div id="container2_child">text</div></div>`,
function*(browser, accDoc) {
async function(browser, accDoc) {
const id1 = 'container1';
const id2 = 'container2';
let container1 = findAccessibleChildByID(accDoc, id1);
@ -40,13 +40,13 @@ addAccessibleTask(`
let onReorder = waitForEvent(EVENT_REORDER, id1);
// Create and add an element with CSS generated content to container1
yield ContentTask.spawn(browser, id1, id => {
await ContentTask.spawn(browser, id1, id => {
let node = content.document.createElement('div');
node.textContent = 'text';
node.setAttribute('class', 'gentext');
content.document.getElementById(id).appendChild(node);
});
yield onReorder;
await onReorder;
tree = {
SECTION: [ // container
@ -61,8 +61,8 @@ addAccessibleTask(`
onReorder = waitForEvent(EVENT_REORDER, id2);
// Add CSS generated content to an element in container2's subtree
yield invokeSetAttribute(browser, 'container2_child', 'class', 'gentext');
yield onReorder;
await invokeSetAttribute(browser, 'container2_child', 'class', 'gentext');
await onReorder;
tree = {
SECTION: [ // container2

View File

@ -7,23 +7,23 @@
/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
function* setHidden(browser, value) {
async function setHidden(browser, value) {
let onReorder = waitForEvent(EVENT_REORDER, 'container');
yield invokeSetAttribute(browser, 'child', 'hidden', value);
yield onReorder;
await invokeSetAttribute(browser, 'child', 'hidden', value);
await onReorder;
}
addAccessibleTask('<div id="container"><input id="child"></div>',
function*(browser, accDoc) {
async function(browser, accDoc) {
let container = findAccessibleChildByID(accDoc, 'container');
testAccessibleTree(container, { SECTION: [ { ENTRY: [ ] } ] });
// Set @hidden attribute
yield setHidden(browser, 'true');
await setHidden(browser, 'true');
testAccessibleTree(container, { SECTION: [ ] });
// Remove @hidden attribute
yield setHidden(browser);
await setHidden(browser);
testAccessibleTree(container, { SECTION: [ { ENTRY: [ ] } ] });
});

View File

@ -7,7 +7,7 @@
/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
function* testImageMap(browser, accDoc) {
async function testImageMap(browser, accDoc) {
const id = 'imgmap';
const acc = findAccessibleChildByID(accDoc, id);
@ -21,7 +21,7 @@ function* testImageMap(browser, accDoc) {
/* ================= Insert area ========================================== */
let onReorder = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let areaElm = content.document.createElement('area');
let mapNode = content.document.getElementById('map');
areaElm.setAttribute('href',
@ -31,7 +31,7 @@ function* testImageMap(browser, accDoc) {
areaElm.setAttribute('shape', 'rect');
mapNode.insertBefore(areaElm, mapNode.firstChild);
});
yield onReorder;
await onReorder;
tree = {
IMAGE_MAP: [
@ -43,7 +43,7 @@ function* testImageMap(browser, accDoc) {
/* ================= Append area ========================================== */
onReorder = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let areaElm = content.document.createElement('area');
let mapNode = content.document.getElementById('map');
areaElm.setAttribute('href',
@ -53,7 +53,7 @@ function* testImageMap(browser, accDoc) {
areaElm.setAttribute('shape', 'rect');
mapNode.appendChild(areaElm);
});
yield onReorder;
await onReorder;
tree = {
IMAGE_MAP: [
@ -66,11 +66,11 @@ function* testImageMap(browser, accDoc) {
/* ================= Remove area ========================================== */
onReorder = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let mapNode = content.document.getElementById('map');
mapNode.removeChild(mapNode.firstElementChild);
});
yield onReorder;
await onReorder;
tree = {
IMAGE_MAP: [
@ -81,12 +81,12 @@ function* testImageMap(browser, accDoc) {
testAccessibleTree(acc, tree);
}
function* testContainer(browser) {
async function testContainer(browser) {
const id = 'container';
/* ================= Remove name on map =================================== */
let onReorder = waitForEvent(EVENT_REORDER, id);
yield invokeSetAttribute(browser, 'map', 'name');
let event = yield onReorder;
await invokeSetAttribute(browser, 'map', 'name');
let event = await onReorder;
const acc = event.accessible;
let tree = {
@ -98,11 +98,11 @@ function* testContainer(browser) {
/* ================= Restore name on map ================================== */
onReorder = waitForEvent(EVENT_REORDER, id);
yield invokeSetAttribute(browser, 'map', 'name', 'atoz_map');
await invokeSetAttribute(browser, 'map', 'name', 'atoz_map');
// XXX: force repainting of the image (see bug 745788 for details).
yield BrowserTestUtils.synthesizeMouse('#imgmap', 10, 10,
await BrowserTestUtils.synthesizeMouse('#imgmap', 10, 10,
{ type: 'mousemove' }, browser);
yield onReorder;
await onReorder;
tree = {
SECTION: [ {
@ -116,11 +116,11 @@ function* testContainer(browser) {
/* ================= Remove map =========================================== */
onReorder = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let mapNode = content.document.getElementById('map');
mapNode.remove();
});
yield onReorder;
await onReorder;
tree = {
SECTION: [
@ -131,7 +131,7 @@ function* testContainer(browser) {
/* ================= Insert map =========================================== */
onReorder = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, id, contentId => {
await ContentTask.spawn(browser, id, contentId => {
let map = content.document.createElement('map');
let area = content.document.createElement('area');
@ -147,7 +147,7 @@ function* testContainer(browser) {
map.appendChild(area);
content.document.getElementById(contentId).appendChild(map);
});
yield onReorder;
await onReorder;
tree = {
SECTION: [ {
@ -160,8 +160,8 @@ function* testContainer(browser) {
/* ================= Hide image map ======================================= */
onReorder = waitForEvent(EVENT_REORDER, id);
yield invokeSetStyle(browser, 'imgmap', 'display', 'none');
yield onReorder;
await invokeSetStyle(browser, 'imgmap', 'display', 'none');
await onReorder;
tree = {
SECTION: [ ]
@ -169,7 +169,7 @@ function* testContainer(browser) {
testAccessibleTree(acc, tree);
}
function* waitForImageMap(browser, accDoc) {
async function waitForImageMap(browser, accDoc) {
const id = 'imgmap';
const acc = findAccessibleChildByID(accDoc, id);
if (acc.firstChild) {
@ -178,13 +178,13 @@ function* waitForImageMap(browser, accDoc) {
const onReorder = waitForEvent(EVENT_REORDER, id);
// Wave over image map
yield BrowserTestUtils.synthesizeMouse(`#${id}`, 10, 10,
await BrowserTestUtils.synthesizeMouse(`#${id}`, 10, 10,
{ type: 'mousemove' }, browser);
yield onReorder;
await onReorder;
}
addAccessibleTask('doc_treeupdate_imagemap.html', function*(browser, accDoc) {
yield waitForImageMap(browser, accDoc);
yield testImageMap(browser, accDoc);
yield testContainer(browser);
addAccessibleTask('doc_treeupdate_imagemap.html', async function(browser, accDoc) {
await waitForImageMap(browser, accDoc);
await testImageMap(browser, accDoc);
await testContainer(browser);
});

View File

@ -7,16 +7,16 @@
/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
function* setDisplayAndWaitForReorder(browser, value) {
async function setDisplayAndWaitForReorder(browser, value) {
let onReorder = waitForEvent(EVENT_REORDER, 'ul');
yield invokeSetStyle(browser, 'li', 'display', value);
return yield onReorder;
await invokeSetStyle(browser, 'li', 'display', value);
return await onReorder;
}
addAccessibleTask(`
<ul id="ul">
<li id="li">item1</li>
</ul>`, function*(browser, accDoc) {
</ul>`, async function(browser, accDoc) {
let li = findAccessibleChildByID(accDoc, 'li');
let bullet = li.firstChild;
let accTree = {
@ -31,12 +31,12 @@ addAccessibleTask(`
};
testAccessibleTree(li, accTree);
yield setDisplayAndWaitForReorder(browser, 'none');
await setDisplayAndWaitForReorder(browser, 'none');
ok(isDefunct(li), 'Check that li is defunct.');
ok(isDefunct(bullet), 'Check that bullet is defunct.');
let event = yield setDisplayAndWaitForReorder(browser, 'list-item');
let event = await setDisplayAndWaitForReorder(browser, 'list-item');
testAccessibleTree(findAccessibleChildByID(event.accessible, 'li'), accTree);
});

View File

@ -7,7 +7,7 @@
/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
addAccessibleTask('<ol id="list"></ol>', function*(browser, accDoc) {
addAccessibleTask('<ol id="list"></ol>', async function(browser, accDoc) {
let list = findAccessibleChildByID(accDoc, 'list');
testAccessibleTree(list, {
@ -15,14 +15,14 @@ addAccessibleTask('<ol id="list"></ol>', function*(browser, accDoc) {
children: [ ]
});
yield invokeSetAttribute(browser, 'body', 'contentEditable', 'true');
await invokeSetAttribute(browser, 'body', 'contentEditable', 'true');
let onReorder = waitForEvent(EVENT_REORDER, 'list');
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let li = content.document.createElement('li');
li.textContent = 'item';
content.document.getElementById('list').appendChild(li);
});
yield onReorder;
await onReorder;
testAccessibleTree(list, {
role: ROLE_LIST,

View File

@ -8,7 +8,7 @@
loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
addAccessibleTask('<span id="parent"><span id="child"></span></span>',
function*(browser, accDoc) {
async function(browser, accDoc) {
is(findAccessibleChildByID(accDoc, 'parent'), null,
'Check that parent is not accessible.');
is(findAccessibleChildByID(accDoc, 'child'), null,
@ -16,12 +16,12 @@ addAccessibleTask('<span id="parent"><span id="child"></span></span>',
let onReorder = waitForEvent(EVENT_REORDER, 'body');
// Add an event listener to parent.
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
content.window.dummyListener = () => {};
content.document.getElementById('parent').addEventListener(
'click', content.window.dummyListener);
});
yield onReorder;
await onReorder;
let tree = { TEXT: [] };
testAccessibleTree(findAccessibleChildByID(accDoc, 'parent'), tree);

View File

@ -7,12 +7,12 @@
/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
addAccessibleTask('<select id="select"></select>', function*(browser, accDoc) {
addAccessibleTask('<select id="select"></select>', async function(browser, accDoc) {
let select = findAccessibleChildByID(accDoc, 'select');
let onEvent = waitForEvent(EVENT_REORDER, 'select');
// Create a combobox with grouping and 2 standalone options
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let doc = content.document;
let contentSelect = doc.getElementById('select');
let optGroup = doc.createElement('optgroup');
@ -31,7 +31,7 @@ addAccessibleTask('<select id="select"></select>', function*(browser, accDoc) {
}
contentSelect.firstChild.firstChild.id = 'option1Node';
});
let event = yield onEvent;
let event = await onEvent;
let option1Node = findAccessibleChildByID(event.accessible, 'option1Node');
let tree = {
@ -53,11 +53,11 @@ addAccessibleTask('<select id="select"></select>', function*(browser, accDoc) {
onEvent = waitForEvent(EVENT_REORDER, 'select');
// Remove grouping from combobox
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let contentSelect = content.document.getElementById('select');
contentSelect.firstChild.remove();
});
yield onEvent;
await onEvent;
tree = {
COMBOBOX: [ {
@ -73,13 +73,13 @@ addAccessibleTask('<select id="select"></select>', function*(browser, accDoc) {
onEvent = waitForEvent(EVENT_REORDER, 'select');
// Remove all options from combobox
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let contentSelect = content.document.getElementById('select');
while (contentSelect.length) {
contentSelect.remove(0);
}
});
yield onEvent;
await onEvent;
tree = {
COMBOBOX: [ {

View File

@ -7,16 +7,16 @@
/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
addAccessibleTask('doc_treeupdate_removal.xhtml', function*(browser, accDoc) {
addAccessibleTask('doc_treeupdate_removal.xhtml', async function(browser, accDoc) {
ok(isAccessible(findAccessibleChildByID(accDoc, 'the_table')),
'table should be accessible');
// Move the_table element into hidden subtree.
let onReorder = waitForEvent(EVENT_REORDER, 'body');
yield ContentTask.spawn(browser, {}, () => content.document.getElementById(
await ContentTask.spawn(browser, {}, () => content.document.getElementById(
'the_displaynone').appendChild(content.document.getElementById(
'the_table')));
yield onReorder;
await onReorder;
ok(!isAccessible(findAccessibleChildByID(accDoc, 'the_table')),
'table in display none tree shouldn\'t be accessible');
@ -24,7 +24,7 @@ addAccessibleTask('doc_treeupdate_removal.xhtml', function*(browser, accDoc) {
'row shouldn\'t be accessible');
// Remove the_row element (since it did not have accessible, no event needed).
yield ContentTask.spawn(browser, {}, () =>
await ContentTask.spawn(browser, {}, () =>
content.document.body.removeChild(
content.document.getElementById('the_row')));

View File

@ -13,7 +13,7 @@ addAccessibleTask(`
<td>cell1</td>
<td>cell2</td>
</tr>
</table>`, function*(browser, accDoc) {
</table>`, async function(browser, accDoc) {
let table = findAccessibleChildByID(accDoc, 'table');
let tree = {
@ -27,7 +27,7 @@ addAccessibleTask(`
testAccessibleTree(table, tree);
let onReorder = waitForEvent(EVENT_REORDER, 'table');
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
// append a caption, it should appear as a first element in the
// accessible tree.
let doc = content.document;
@ -35,7 +35,7 @@ addAccessibleTask(`
caption.textContent = 'table caption';
doc.getElementById('table').appendChild(caption);
});
yield onReorder;
await onReorder;
tree = {
TABLE: [

View File

@ -7,7 +7,7 @@
/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
function* removeTextData(browser, accessible, id, role) {
async function removeTextData(browser, accessible, id, role) {
let tree = {
role: role,
children: [ { role: ROLE_TEXT_LEAF, name: "text" } ]
@ -15,10 +15,10 @@ function* removeTextData(browser, accessible, id, role) {
testAccessibleTree(accessible, tree);
let onReorder = waitForEvent(EVENT_REORDER, id);
yield ContentTask.spawn(browser, id, contentId => {
await ContentTask.spawn(browser, id, contentId => {
content.document.getElementById(contentId).firstChild.textContent = '';
});
yield onReorder;
await onReorder;
tree = { role: role, children: [] };
testAccessibleTree(accessible, tree);
@ -26,9 +26,9 @@ function* removeTextData(browser, accessible, id, role) {
addAccessibleTask(`
<p id="p">text</p>
<pre id="pre">text</pre>`, function*(browser, accDoc) {
<pre id="pre">text</pre>`, async function(browser, accDoc) {
let p = findAccessibleChildByID(accDoc, 'p');
let pre = findAccessibleChildByID(accDoc, 'pre');
yield removeTextData(browser, p, 'p', ROLE_PARAGRAPH);
yield removeTextData(browser, pre, 'pre', ROLE_TEXT_CONTAINER);
await removeTextData(browser, p, 'p', ROLE_PARAGRAPH);
await removeTextData(browser, pre, 'pre', ROLE_TEXT_CONTAINER);
});

View File

@ -7,18 +7,18 @@
/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
function* testTreeOnHide(browser, accDoc, containerID, id, before, after) {
async function testTreeOnHide(browser, accDoc, containerID, id, before, after) {
let acc = findAccessibleChildByID(accDoc, containerID);
testAccessibleTree(acc, before);
let onReorder = waitForEvent(EVENT_REORDER, containerID);
yield invokeSetStyle(browser, id, 'visibility', 'hidden');
yield onReorder;
await invokeSetStyle(browser, id, 'visibility', 'hidden');
await onReorder;
testAccessibleTree(acc, after);
}
function* test3(browser, accessible) {
async function test3(browser, accessible) {
let tree = {
SECTION: [ // container
{ SECTION: [ // parent
@ -35,13 +35,13 @@ function* test3(browser, accessible) {
testAccessibleTree(accessible, tree);
let onReorder = waitForEvent(EVENT_REORDER, 't3_container');
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let doc = content.document;
doc.getElementById('t3_container').style.color = 'red';
doc.getElementById('t3_parent').style.visibility = 'hidden';
doc.getElementById('t3_parent2').style.visibility = 'hidden';
});
yield onReorder;
await onReorder;
tree = {
SECTION: [ // container
@ -55,7 +55,7 @@ function* test3(browser, accessible) {
testAccessibleTree(accessible, tree);
}
function* test4(browser, accessible) {
async function test4(browser, accessible) {
let tree = {
SECTION: [
{ TABLE: [
@ -67,12 +67,12 @@ function* test4(browser, accessible) {
testAccessibleTree(accessible, tree);
let onReorder = waitForEvent(EVENT_REORDER, 't4_parent');
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let doc = content.document;
doc.getElementById('t4_container').style.color = 'red';
doc.getElementById('t4_child').style.visibility = 'visible';
});
yield onReorder;
await onReorder;
tree = {
SECTION: [{
@ -90,11 +90,11 @@ function* test4(browser, accessible) {
testAccessibleTree(accessible, tree);
}
addAccessibleTask('doc_treeupdate_visibility.html', function*(browser, accDoc) {
addAccessibleTask('doc_treeupdate_visibility.html', async function(browser, accDoc) {
let t3Container = findAccessibleChildByID(accDoc, 't3_container');
let t4Container = findAccessibleChildByID(accDoc, 't4_container');
yield testTreeOnHide(browser, accDoc, 't1_container', 't1_parent', {
await testTreeOnHide(browser, accDoc, 't1_container', 't1_parent', {
SECTION: [{
SECTION: [{
SECTION: [ { TEXT_LEAF: [] } ]
@ -106,7 +106,7 @@ addAccessibleTask('doc_treeupdate_visibility.html', function*(browser, accDoc) {
} ]
});
yield testTreeOnHide(browser, accDoc, 't2_container', 't2_grandparent', {
await testTreeOnHide(browser, accDoc, 't2_container', 't2_grandparent', {
SECTION: [{ // container
SECTION: [{ // grand parent
SECTION: [{
@ -132,10 +132,10 @@ addAccessibleTask('doc_treeupdate_visibility.html', function*(browser, accDoc) {
}]
});
yield test3(browser, t3Container);
yield test4(browser, t4Container);
await test3(browser, t3Container);
await test4(browser, t4Container);
yield testTreeOnHide(browser, accDoc, 't5_container', 't5_subcontainer', {
await testTreeOnHide(browser, accDoc, 't5_container', 't5_subcontainer', {
SECTION: [{ // container
SECTION: [{ // subcontainer
TABLE: [{
@ -157,7 +157,7 @@ addAccessibleTask('doc_treeupdate_visibility.html', function*(browser, accDoc) {
}]
});
yield testTreeOnHide(browser, accDoc, 't6_container', 't6_subcontainer', {
await testTreeOnHide(browser, accDoc, 't6_container', 't6_subcontainer', {
SECTION: [{ // container
SECTION: [{ // subcontainer
TABLE: [{

View File

@ -7,7 +7,7 @@
/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
addAccessibleTask('doc_treeupdate_whitespace.html', function*(browser, accDoc) {
addAccessibleTask('doc_treeupdate_whitespace.html', async function(browser, accDoc) {
let container1 = findAccessibleChildByID(accDoc, 'container1');
let container2Parent = findAccessibleChildByID(accDoc, 'container2-parent');
@ -24,12 +24,12 @@ addAccessibleTask('doc_treeupdate_whitespace.html', function*(browser, accDoc) {
let onReorder = waitForEvent(EVENT_REORDER, 'container1');
// Remove img1 from container1
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let doc = content.document;
doc.getElementById('container1').removeChild(
doc.getElementById('img1'));
});
yield onReorder;
await onReorder;
tree = {
SECTION: [
@ -50,14 +50,14 @@ addAccessibleTask('doc_treeupdate_whitespace.html', function*(browser, accDoc) {
onReorder = waitForEvent(EVENT_REORDER, 'container2-parent');
// Append an img with valid src to container2
yield ContentTask.spawn(browser, {}, () => {
await ContentTask.spawn(browser, {}, () => {
let doc = content.document;
let img = doc.createElement('img');
img.setAttribute('src',
'http://example.com/a11y/accessible/tests/mochitest/moz.png');
doc.getElementById('container2').appendChild(img);
});
yield onReorder;
await onReorder;
tree = {
SECTION: [

View File

@ -15,14 +15,14 @@ Services.scriptloader.loadSubScript(
/**
* A wrapper around browser test add_task that triggers an accessible test task
* as a new browser test task with given document, data URL or markup snippet.
* @param {String} doc URL (relative to current directory) or
* data URL or markup snippet that is used
* to test content with
* @param {Function|Function*} task a generator or a function with tests to
* run
* @param {String} doc URL (relative to current directory) or
* data URL or markup snippet that is used
* to test content with
* @param {Function|AsyncFunction} task a generator or a function with tests to
* run
*/
function addAccessibleTask(doc, task) {
add_task(function*() {
add_task(async function() {
let url;
if (doc.includes('doc_')) {
url = `${CURRENT_CONTENT_DIR}e10s/${doc}`;
@ -49,10 +49,10 @@ function addAccessibleTask(doc, task) {
let onDocLoad = waitForEvent(EVENT_DOCUMENT_LOAD_COMPLETE, 'body');
yield BrowserTestUtils.withNewTab({
await BrowserTestUtils.withNewTab({
gBrowser,
url: url
}, function*(browser) {
}, async function(browser) {
registerCleanupFunction(() => {
if (browser) {
let tab = gBrowser.getTabForBrowser(browser);
@ -62,7 +62,7 @@ function addAccessibleTask(doc, task) {
}
});
yield SimpleTest.promiseFocus(browser);
await SimpleTest.promiseFocus(browser);
loadFrameScripts(browser,
'let { document, window, navigator } = content;',
@ -72,8 +72,8 @@ function addAccessibleTask(doc, task) {
`e10s enabled: ${Services.appinfo.browserTabsRemoteAutostart}`);
Logger.log(`Actually remote browser: ${browser.isRemoteBrowser}`);
let event = yield onDocLoad;
yield task(browser, event.accessible);
let event = await onDocLoad;
await task(browser, event.accessible);
});
});
}