mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-28 04:35:33 +00:00
94c96f680f
MozReview-Commit-ID: 5Y5sYgGI2L9 --- .eslintignore | 1 - accessible/.eslintrc | 15 + accessible/jsat/OutputGenerator.jsm | 7 +- accessible/moz.build | 2 + accessible/tests/browser/.eslintrc | 202 ++++++++++ accessible/tests/browser/browser.ini | 53 +++ accessible/tests/browser/browser_caching_name.js | 434 +++++++++++++++++++++ .../tests/browser/browser_events_caretmove.js | 21 + accessible/tests/browser/browser_events_hide.js | 32 ++ accessible/tests/browser/browser_events_show.js | 17 + .../tests/browser/browser_events_statechange.js | 60 +++ .../tests/browser/browser_events_textchange.js | 72 ++++ .../tests/browser/browser_treeupdate_ariadialog.js | 42 ++ .../tests/browser/browser_treeupdate_ariaowns.js | 317 +++++++++++++++ .../tests/browser/browser_treeupdate_canvas.js | 25 ++ .../browser/browser_treeupdate_cssoverflow.js | 64 +++ accessible/tests/browser/browser_treeupdate_doc.js | 303 ++++++++++++++ .../tests/browser/browser_treeupdate_gencontent.js | 78 ++++ .../tests/browser/browser_treeupdate_hidden.js | 30 ++ .../tests/browser/browser_treeupdate_imagemap.js | 176 +++++++++ .../tests/browser/browser_treeupdate_list.js | 43 ++ .../browser/browser_treeupdate_list_editabledoc.js | 39 ++ .../tests/browser/browser_treeupdate_listener.js | 43 ++ .../tests/browser/browser_treeupdate_optgroup.js | 91 +++++ .../tests/browser/browser_treeupdate_removal.js | 39 ++ .../tests/browser/browser_treeupdate_table.js | 51 +++ .../tests/browser/browser_treeupdate_textleaf.js | 34 ++ .../tests/browser/browser_treeupdate_visibility.js | 196 ++++++++++ .../tests/browser/browser_treeupdate_whitespace.js | 71 ++++ .../tests/browser/doc_treeupdate_ariadialog.html | 23 ++ .../tests/browser/doc_treeupdate_ariaowns.html | 44 +++ .../tests/browser/doc_treeupdate_imagemap.html | 21 + .../tests/browser/doc_treeupdate_removal.xhtml | 11 + .../tests/browser/doc_treeupdate_visibility.html | 78 ++++ .../tests/browser/doc_treeupdate_whitespace.html | 10 + accessible/tests/browser/events.js | 100 +++++ accessible/tests/browser/head.js | 297 ++++++++++++++ accessible/tests/mochitest/common.js | 41 +- 38 files changed, 3176 insertions(+), 7 deletions(-) create mode 100644 accessible/.eslintrc create mode 100644 accessible/tests/browser/.eslintrc create mode 100644 accessible/tests/browser/browser.ini create mode 100644 accessible/tests/browser/browser_caching_name.js create mode 100644 accessible/tests/browser/browser_events_caretmove.js create mode 100644 accessible/tests/browser/browser_events_hide.js create mode 100644 accessible/tests/browser/browser_events_show.js create mode 100644 accessible/tests/browser/browser_events_statechange.js create mode 100644 accessible/tests/browser/browser_events_textchange.js create mode 100644 accessible/tests/browser/browser_treeupdate_ariadialog.js create mode 100644 accessible/tests/browser/browser_treeupdate_ariaowns.js create mode 100644 accessible/tests/browser/browser_treeupdate_canvas.js create mode 100644 accessible/tests/browser/browser_treeupdate_cssoverflow.js create mode 100644 accessible/tests/browser/browser_treeupdate_doc.js create mode 100644 accessible/tests/browser/browser_treeupdate_gencontent.js create mode 100644 accessible/tests/browser/browser_treeupdate_hidden.js create mode 100644 accessible/tests/browser/browser_treeupdate_imagemap.js create mode 100644 accessible/tests/browser/browser_treeupdate_list.js create mode 100644 accessible/tests/browser/browser_treeupdate_list_editabledoc.js create mode 100644 accessible/tests/browser/browser_treeupdate_listener.js create mode 100644 accessible/tests/browser/browser_treeupdate_optgroup.js create mode 100644 accessible/tests/browser/browser_treeupdate_removal.js create mode 100644 accessible/tests/browser/browser_treeupdate_table.js create mode 100644 accessible/tests/browser/browser_treeupdate_textleaf.js create mode 100644 accessible/tests/browser/browser_treeupdate_visibility.js create mode 100644 accessible/tests/browser/browser_treeupdate_whitespace.js create mode 100644 accessible/tests/browser/doc_treeupdate_ariadialog.html create mode 100644 accessible/tests/browser/doc_treeupdate_ariaowns.html create mode 100644 accessible/tests/browser/doc_treeupdate_imagemap.html create mode 100644 accessible/tests/browser/doc_treeupdate_removal.xhtml create mode 100644 accessible/tests/browser/doc_treeupdate_visibility.html create mode 100644 accessible/tests/browser/doc_treeupdate_whitespace.html create mode 100644 accessible/tests/browser/events.js create mode 100644 accessible/tests/browser/head.js --HG-- extra : rebase_source : c742ebc96467872847e0a82c6ff87b964fafb5b2
101 lines
3.9 KiB
JavaScript
101 lines
3.9 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
'use strict';
|
|
|
|
/* global nsIAccessibleEvent, nsIAccessibleDocument,
|
|
nsIAccessibleStateChangeEvent, nsIAccessibleTextChangeEvent */
|
|
|
|
/* exported EVENT_REORDER, EVENT_SHOW, EVENT_TEXT_INSERTED, EVENT_TEXT_REMOVED,
|
|
EVENT_DOCUMENT_LOAD_COMPLETE, EVENT_HIDE, EVENT_TEXT_CARET_MOVED,
|
|
EVENT_STATE_CHANGE, waitForEvent, waitForMultipleEvents */
|
|
|
|
const EVENT_DOCUMENT_LOAD_COMPLETE = nsIAccessibleEvent.EVENT_DOCUMENT_LOAD_COMPLETE;
|
|
const EVENT_HIDE = nsIAccessibleEvent.EVENT_HIDE;
|
|
const EVENT_REORDER = nsIAccessibleEvent.EVENT_REORDER;
|
|
const EVENT_SHOW = nsIAccessibleEvent.EVENT_SHOW;
|
|
const EVENT_STATE_CHANGE = nsIAccessibleEvent.EVENT_STATE_CHANGE;
|
|
const EVENT_TEXT_CARET_MOVED = nsIAccessibleEvent.EVENT_TEXT_CARET_MOVED;
|
|
const EVENT_TEXT_INSERTED = nsIAccessibleEvent.EVENT_TEXT_INSERTED;
|
|
const EVENT_TEXT_REMOVED = nsIAccessibleEvent.EVENT_TEXT_REMOVED;
|
|
|
|
/**
|
|
* Describe an event in string format.
|
|
* @param {nsIAccessibleEvent} event event to strigify
|
|
*/
|
|
function eventToString(event) {
|
|
let type = eventTypeToString(event.eventType);
|
|
let info = `Event type: ${type}`;
|
|
|
|
if (event instanceof nsIAccessibleStateChangeEvent) {
|
|
let stateStr = statesToString(event.isExtraState ? 0 : event.state,
|
|
event.isExtraState ? event.state : 0);
|
|
info += `, state: ${stateStr}, is enabled: ${event.isEnabled}`;
|
|
} else if (event instanceof nsIAccessibleTextChangeEvent) {
|
|
let tcType = event.isInserted ? 'inserted' : 'removed';
|
|
info += `, start: ${event.start}, length: ${event.length}, ${tcType} text: ${event.modifiedText}`;
|
|
}
|
|
|
|
info += `. Target: ${prettyName(event.accessible)}`;
|
|
return info;
|
|
}
|
|
|
|
/**
|
|
* A helper function that waits for an accessible event of certain type that
|
|
* belongs to a certain DOMNode (defined by its id).
|
|
* @param {String} id expected content element id for the event
|
|
* @param {Number} eventType expected accessible event type
|
|
* @return {Promise} promise that resolves to an event
|
|
*/
|
|
function waitForEvent(eventType, id) {
|
|
return new Promise(resolve => {
|
|
let eventObserver = {
|
|
observe(subject, topic, data) {
|
|
if (topic !== 'accessible-event') {
|
|
return;
|
|
}
|
|
|
|
let event = subject.QueryInterface(nsIAccessibleEvent);
|
|
Logger.log(eventToString(event));
|
|
|
|
let domID = getAccessibleDOMNodeID(event.accessible);
|
|
// If event's accessible does not match expected event type or DOMNode
|
|
// id, skip thie event.
|
|
if (domID === id && event.eventType === eventType) {
|
|
Logger.log(`Correct event DOMNode id: ${id}`);
|
|
Logger.log(`Correct event type: ${eventTypeToString(eventType)}`);
|
|
ok(event.accessibleDocument instanceof nsIAccessibleDocument,
|
|
'Accessible document present.');
|
|
|
|
Services.obs.removeObserver(this, 'accessible-event');
|
|
resolve(event);
|
|
}
|
|
}
|
|
};
|
|
Services.obs.addObserver(eventObserver, 'accessible-event', false);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* A helper function that waits for a sequence of accessible events in
|
|
* specified order.
|
|
* @param {Array} events a list of events to wait (same format as
|
|
* waitForEvent arguments)
|
|
*/
|
|
function waitForMultipleEvents(events) {
|
|
// Next expected event index.
|
|
let currentIdx = 0;
|
|
|
|
return Promise.all(events.map(({ eventType, id }, idx) =>
|
|
// In addition to waiting for an event, attach an order checker for the
|
|
// event.
|
|
waitForEvent(eventType, id).then(resolvedEvent => {
|
|
// Verify that event happens in order and increment expected index.
|
|
is(idx, currentIdx++,
|
|
`Unexpected event order: ${eventToString(resolvedEvent)}`);
|
|
return resolvedEvent;
|
|
})
|
|
));
|
|
}
|