mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-18 14:56:07 +00:00
Bug 1129955 - added support for accessible name changes in AccessFu. r=eeejay
--- accessible/jsat/EventManager.jsm | 8 ++++++++ accessible/jsat/Presentation.jsm | 21 ++++++++++++++++++++ .../mochitest/jsat/doc_content_integration.html | 5 +++++ accessible/tests/mochitest/jsat/jsatcommon.js | 9 +++++++++ .../mochitest/jsat/test_content_integration.html | 23 +++++++++++++++++++--- 5 files changed, 63 insertions(+), 3 deletions(-)
This commit is contained in:
parent
1f68deb5e7
commit
c9eb8bea8b
@ -186,6 +186,14 @@ this.EventManager.prototype = {
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Events.NAME_CHANGE:
|
||||
{
|
||||
let acc = aEvent.accessible;
|
||||
if (acc === this.contentControl.vc.position) {
|
||||
this.present(Presentation.nameChanged(acc));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Events.SCROLLING_START:
|
||||
{
|
||||
this.contentControl.autoMove(aEvent.accessible);
|
||||
|
@ -74,6 +74,12 @@ Presenter.prototype = {
|
||||
*/
|
||||
selectionChanged: function selectionChanged(aObject) {}, // jshint ignore:line
|
||||
|
||||
/**
|
||||
* Name has changed.
|
||||
* @param {nsIAccessible} aAccessible the object whose value has changed.
|
||||
*/
|
||||
nameChanged: function nameChanged(aAccessible) {}, // jshint ignore: line
|
||||
|
||||
/**
|
||||
* Value has changed.
|
||||
* @param {nsIAccessible} aAccessible the object whose value has changed.
|
||||
@ -514,6 +520,17 @@ B2GPresenter.prototype.pivotChanged =
|
||||
};
|
||||
};
|
||||
|
||||
B2GPresenter.prototype.nameChanged =
|
||||
function B2GPresenter_nameChanged(aAccessible) {
|
||||
return {
|
||||
type: this.type,
|
||||
details: {
|
||||
eventType: 'name-change',
|
||||
data: aAccessible.name
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
B2GPresenter.prototype.valueChanged =
|
||||
function B2GPresenter_valueChanged(aAccessible) {
|
||||
|
||||
@ -689,6 +706,10 @@ this.Presentation = { // jshint ignore:line
|
||||
aIsFromUserInput) for each (p in this.presenters)]; // jshint ignore:line
|
||||
},
|
||||
|
||||
nameChanged: function nameChanged(aAccessible) {
|
||||
return [ p.nameChanged(aAccessible) for (p of this.presenters) ]; // jshint ignore:line
|
||||
},
|
||||
|
||||
valueChanged: function valueChanged(aAccessible) {
|
||||
return [ p.valueChanged(aAccessible) for (p of this.presenters) ]; // jshint ignore:line
|
||||
},
|
||||
|
@ -40,6 +40,10 @@
|
||||
document.getElementById('iframe').setAttribute('aria-hidden', true);
|
||||
}
|
||||
|
||||
function renameFruit() {
|
||||
document.getElementById('fruit').setAttribute('aria-label', 'banana');
|
||||
}
|
||||
|
||||
</script>
|
||||
<style>
|
||||
#windows {
|
||||
@ -84,5 +88,6 @@
|
||||
<div id="appframe"></div>
|
||||
</div>
|
||||
<button id="home">Home</button>
|
||||
<button id="fruit" aria-label="apple"></button>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -617,6 +617,15 @@ function ExpectedCheckAction(aChecked, aOptions) {
|
||||
|
||||
ExpectedCheckAction.prototype = Object.create(ExpectedPresent.prototype);
|
||||
|
||||
function ExpectedNameChange(aName, aOptions) {
|
||||
ExpectedPresent.call(this, {
|
||||
eventType: 'name-change',
|
||||
data: aName
|
||||
}, null, aOptions);
|
||||
}
|
||||
|
||||
ExpectedNameChange.prototype = Object.create(ExpectedPresent.prototype);
|
||||
|
||||
function ExpectedValueChange(aValue, aOptions) {
|
||||
ExpectedPresent.call(this, {
|
||||
eventType: 'value-change',
|
||||
|
@ -56,8 +56,12 @@
|
||||
[ContentMessages.moveOrAdjustUp(), new ExpectedValueChange('6')],
|
||||
[ContentMessages.simpleMoveNext,
|
||||
new ExpectedCursorChange(['Home', {'string': 'pushbutton'}])],
|
||||
[ContentMessages.simpleMoveNext,
|
||||
new ExpectedCursorChange(['apple', {'string': 'pushbutton'}])],
|
||||
|
||||
// Simple traversal backward
|
||||
[ContentMessages.simpleMovePrevious,
|
||||
new ExpectedCursorChange(['Home', {'string': 'pushbutton'}])],
|
||||
[ContentMessages.simpleMovePrevious,
|
||||
new ExpectedCursorChange(['much range', '6', {'string': 'slider'}, 'such app'])],
|
||||
[ContentMessages.moveOrAdjustDown(), new ExpectedValueChange('5')],
|
||||
@ -88,7 +92,7 @@
|
||||
// Move from an inner frame to the last element in the parent doc
|
||||
[ContentMessages.simpleMoveLast,
|
||||
new ExpectedCursorChange(
|
||||
['Home', {'string': 'pushbutton'}], { b2g_todo: true })],
|
||||
['apple', {'string': 'pushbutton'}], { b2g_todo: true })],
|
||||
|
||||
[ContentMessages.clearCursor, 'AccessFu:CursorCleared'],
|
||||
|
||||
@ -136,6 +140,17 @@
|
||||
// Reset cursors
|
||||
[ContentMessages.clearCursor, 'AccessFu:CursorCleared'],
|
||||
|
||||
// Current virtual cursor's position's name changes
|
||||
[ContentMessages.simpleMoveNext,
|
||||
new ExpectedCursorChange(['Phone status bar', 'Traversal Rule test document'])],
|
||||
[ContentMessages.focusSelector('button#fruit', false),
|
||||
new ExpectedCursorChange(['apple', {'string': 'pushbutton'}])],
|
||||
[doc.defaultView.renameFruit, new ExpectedNameChange('banana')],
|
||||
|
||||
// Blur button and reset cursor
|
||||
[ContentMessages.focusSelector('button#fruit', true), null],
|
||||
[ContentMessages.clearCursor, 'AccessFu:CursorCleared'],
|
||||
|
||||
// Move cursor with focus in outside document
|
||||
[ContentMessages.simpleMoveNext,
|
||||
new ExpectedCursorChange(['Phone status bar', 'Traversal Rule test document'])],
|
||||
@ -207,14 +222,14 @@
|
||||
|
||||
// Open dialog in outer doc, while cursor is also in outer doc
|
||||
[ContentMessages.simpleMoveLast,
|
||||
new ExpectedCursorChange(['Home', {'string': 'pushbutton'}])],
|
||||
new ExpectedCursorChange(['banana', {'string': 'pushbutton'}])],
|
||||
[doc.defaultView.showAlert,
|
||||
new ExpectedCursorChange(['This is an alert!',
|
||||
{'string': 'headingLevel', 'args': [1]},
|
||||
{'string': 'dialog'}])],
|
||||
|
||||
[doc.defaultView.hideAlert,
|
||||
new ExpectedCursorChange(['Home', {'string': 'pushbutton'}])],
|
||||
new ExpectedCursorChange(['banana', {'string': 'pushbutton'}])],
|
||||
|
||||
[ContentMessages.clearCursor, 'AccessFu:CursorCleared'],
|
||||
|
||||
@ -253,6 +268,8 @@
|
||||
doc.querySelector('button#home').focus();
|
||||
}, new ExpectedCursorChange(['Home', {'string': 'pushbutton'},
|
||||
'Traversal Rule test document'])],
|
||||
[ContentMessages.simpleMoveNext,
|
||||
new ExpectedCursorChange(['banana', {'string': 'pushbutton'}])]
|
||||
[ContentMessages.simpleMoveNext, new ExpectedNoMove()]
|
||||
]);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user