- From: Lachlan Hunt <lachlan.hunt@lachy.id.au>
- Date: Mon, 22 Oct 2012 13:25:38 +0200
- To: public-indie-ui <public-indie-ui@w3.org>
Hi,
In the User Context module, the IDL is being defined incorrectly.
The Accessibility interface is defined as:
interface Accessibility {
readonly attribute InterfaceObject accessibility;
};
The accompanying editorial note questions whether this is correct or
not, and if I understand the intention, it's not correct.
There is no defined interface called "InterfaceObject", and so no
attribute can return an object of that type. The intention, however,
seems to be as a way of defining the accessibility attribute that is to
appear on window.navigator.accessibility.
This should be defined by defining a partial interface for Navigator,
with a property defined to return an instance of the Accessibility
interface.
partial interface Navigator {
readonly attribute Accessibility accessibility;
}
Similarly, for the ScreenReader and Magnifier, these should be defined
with properties on the Accessibility Object. Additionally, these
ScreenReader and Magnifier interfaces do not need to be split up further
into interfaces for ScreenReaderID, ScreenReaderStatus, etc. Instead,
the propeties and methods defined within these should simply be defined
as part of their respective parent interfaces.
This is the complete IDL that is needed for the spec, as it stands now,
based on the intended structure from the examples provided:
partial interface Navigator {
readonly attribute Accessibility accessibility;
}
interface Accessibility {
readonly attribute ScreenReader screenreader
readonly attribute Magnifier magnifier
// Notifications
const unsigned short screenChanged = 1;
const unsigned short elementChanged = 2;
void postNotification(required String notification, optional
HTMLElement element);
};
interface ScreenReader {
// ID
readonly attribute DOMString name;
readonly attribute DOMString version;
// Status
readonly attribute boolean active;
};
interface Magnifier {
// ID
readonly attribute DOMString name;
readonly attribute DOMString version;
// Status
readonly attribute boolean active;
// Notifications {
void focusPosition(
in DOMElement element,
in optional array cursorRect,
in optional array selectionPolygon
);
};
Note: The Speech interface is not yet defined in the spec, but was
referred to with this statement:
Accessibility implements Speech;
The intention of this API is not clear from the current draft, and so
has not been included in the IDL above. But presumably, it will be
defined similarly to the ScreenReader and Magnifier interfaces.
As I have defined the IDL above, that will correctly expose the
properties for the interfaces as follows, which is how the examples
illustrate their use in the spec.
window.navigator.accessibility.screenreader
window.navigator.accessibility.magnifier
--
Lachlan Hunt - Opera Software
http://lachy.id.au/
http://www.opera.com/
Received on Monday, 22 October 2012 11:26:03 UTC