| { |
| metadata: { |
| namespace: "HTML", |
| namespacePrefix: "xhtml", |
| namespaceURI: "http://www.w3.org/1999/xhtml", |
| attrsNullNamespace: true, |
| export: "CORE_EXPORT", |
| }, |
| attributes: [ |
| {name: "aria-activedescendant", type: "IDREF"}, |
| {name: "aria-atomic", default: "false", type: "boolean"}, |
| { |
| name: "aria-autocomplete", |
| default: "none", |
| enum: ["inline", "list", "both", "none"], |
| type: "token" |
| }, |
| {name: "aria-busy", default: "false", type: "boolean"}, |
| { |
| name: "aria-checked", |
| default: "undefined", |
| enum: ["true", "false", "mixed", "undefined"], |
| type: "token" |
| }, |
| {name: "aria-colcount", type: "integer"}, |
| {name: "aria-colindex", type: "integer"}, |
| {name: "aria-colspan", type: "integer"}, |
| {name: "aria-controls", type: "IDREF_list"}, |
| { |
| name: "aria-current", |
| default: "false", |
| enum: ["page", "step", "location", "date", "time", "true", "false"], |
| type: "token" |
| }, |
| {name: "aria-describedby", type: "IDREF_list"}, |
| {name: "aria-description", type: "string"}, |
| {name: "aria-details", type: "IDREF"}, |
| {name: "aria-disabled", default: "false", type: "boolean"}, |
| { |
| name: "aria-dropeffect", |
| default: "none", |
| enum: ["copy", "move", "link", "execute", "popup", "none"], |
| type: "token_list" |
| }, |
| {name: "aria-errormessage", type: "IDREF"}, |
| { |
| name: "aria-expanded", |
| default: "undefined", |
| enum: ["true", "false", "undefined"], |
| type: "token" |
| }, |
| {name: "aria-flowto", type: "IDREF_list"}, |
| { |
| name: "aria-grabbed", |
| default: "undefined", |
| enum: ["true", "false", "undefined"], |
| type: "token" |
| }, |
| { |
| name: "aria-haspopup", |
| default: "false", |
| enum: ["false", "true", "menu", "listbox", "tree", "grid", "dialog"], |
| type: "token" |
| }, |
| // aria-help is not specced but we have historically supported it. |
| {name: "aria-help", type: "string"}, |
| { |
| name: "aria-hidden", |
| default: "undefined", |
| enum: ["true", "false", "undefined"], |
| type: "token" |
| }, |
| { |
| name: "aria-invalid", |
| default: "false", |
| enum: ["grammar", "false", "spelling", "true"], |
| type: "token" |
| }, |
| {name: "aria-keyshortcuts", type: "string"}, |
| {name: "aria-label", type: "string"}, |
| {name: "aria-labelledby", type: "IDREF_list"}, |
| {name: "aria-labeledby", type: "IDREF_list"}, // alias for labelledby |
| {name: "aria-level", type: "integer"}, |
| { |
| name: "aria-live", |
| default: "off", |
| enum: ["off", "polite", "assertive"], |
| type: "token" |
| }, |
| {name: "aria-modal", default: "false", type: "boolean"}, |
| {name: "aria-multiline", default: "false", type: "boolean"}, |
| {name: "aria-multiselectable", default: "false", type: "boolean"}, |
| { |
| name: "aria-orientation", |
| default: "undefined", |
| enum: ["horizontal", "undefined", "vertical"], |
| type: "token" |
| }, |
| {name: "aria-owns", type: "IDREF_list"}, |
| {name: "aria-placeholder", type: "string"}, |
| {name: "aria-posinset", type: "integer"}, |
| { |
| name: "aria-pressed", |
| default: "undefined", |
| enum: ["true", "false", "mixed", "undefined"], |
| type: "token" |
| }, |
| {name: "aria-readonly", default: "false", type: "boolean"}, |
| { |
| name: "aria-relevant", |
| default: "additions text", |
| enum: ["additions", "removals", "text", "all"], |
| type: "token_list" |
| }, |
| {name: "aria-required", default: "false", type: "boolean"}, |
| {name: "aria-roledescription", type: "string"}, |
| {name: "aria-rowcount", type: "integer"}, |
| {name: "aria-rowindex", type: "integer"}, |
| {name: "aria-rowspan", type: "integer"}, |
| { |
| name: "aria-selected", |
| default: "undefined", |
| enum: ["true", "false", "undefined"], |
| type: "token" |
| }, |
| {name: "aria-setsize", type: "integer"}, |
| { |
| name: "aria-sort", |
| default: "none", |
| enum: ["ascending", "descending", "none", "other"], |
| type: "token" |
| }, |
| {name: "aria-valuemax", type: "decimal"}, |
| {name: "aria-valuemin", type: "decimal"}, |
| {name: "aria-valuenow", type: "decimal"}, |
| {name: "aria-valuetext", type: "string"}, |
| ], |
| roles: [ |
| { |
| name: "alert", |
| nameFrom: ["author"], |
| superclasses: ["section"], |
| "implicitValues": { |
| "aria-live": "assertive", |
| "aria-atomic": "true" |
| } |
| }, |
| { |
| name: "alertdialog", |
| nameFrom: ["author"], |
| superclasses: ["alert", "dialog"], |
| nameRequired: true |
| }, |
| { |
| name: "application", |
| nameFrom: ["author"], |
| superclasses: ["structure"], |
| nameRequired: true |
| }, |
| { |
| name: "article", |
| nameFrom: ["author"], |
| superclasses: ["document"], |
| supportedAttributes: ["aria-posinset", "aria-setsize"] |
| }, |
| {name: "banner", nameFrom: ["author"], superclasses: ["landmark"]}, |
| { |
| name: "button", |
| nameFrom: ["contents", "author"], |
| superclasses: ["command"], |
| supportedAttributes: ["aria-expanded", "aria-pressed"], |
| nameRequired: true, |
| childrenPresentational: true |
| }, |
| { |
| name: "cell", |
| namefrom: ["contents", "author"], |
| scope: "row", |
| superclasses: ["section"], |
| supportedAttributes: [ |
| "aria-colindex", "aria-colspan", "aria-rowindex", "aria-rowspan" |
| ] |
| }, |
| { |
| name: "checkbox", |
| nameFrom: ["contents", "author"], |
| requiredAttributes: ["aria-checked"], |
| superclasses: ["input"], |
| supportedAttributes: ["aria-readonly"], |
| nameRequired: true, |
| implicitValues: {"aria-checked": false} |
| }, |
| { |
| name: "columnheader", |
| nameFrom: ["contents", "author"], |
| scope: ["row"], |
| superclasses: ["gridcell", "sectionhead", "widget"], |
| supportedAttributes: ["aria-sort"], |
| nameRequired: true |
| }, |
| { |
| name: "combobox", |
| // TODO(aboxhall): Follow up with Nektarios and Aaron regarding role |
| // on textbox |
| mustContain: ["textbox"], |
| nameFrom: ["author"], |
| requiredAttributes: ["aria-controls", "aria-expanded"], |
| superclasses: ["select"], |
| supportedAttributes: |
| ["aria-autocomplete", "aria-readonly", "aria-required"], |
| nameRequired: true, |
| implicitValues: { |
| "aria-expanded": "false", |
| "aria-haspopup": "listbox" |
| } |
| }, |
| { |
| name: "command", |
| abstract: true, |
| nameFrom: ["author"], |
| superclasses: ["widget"] |
| }, |
| {name: "complementary", nameFrom: ["author"], superclasses: ["landmark"]}, |
| { |
| name: "composite", |
| abstract: true, |
| nameFrom: ["author"], |
| superclasses: ["widget"], |
| supportedAttributes: ["aria-activedescendant"], |
| }, |
| {name: "contentinfo", nameFrom: ["author"], superclasses: ["landmark"]}, |
| {name: "definition", nameFrom: ["author"], superclasses: ["section"]}, |
| { |
| name: "dialog", |
| nameFrom: ["author"], |
| superclasses: ["window"], |
| nameRequired: true |
| }, |
| {name: "directory", nameFrom: ["author"], superclasses: ["list"]}, |
| { |
| name: "document", |
| nameFrom: ["author"], |
| superclasses: ["structure"], |
| supportedAttributes: ["aria-expanded"], |
| nameRequired: false |
| }, |
| { |
| name: "feed", |
| nameFrom: ["author"], |
| superclasses: ["list"], |
| mustContain: ["article"], |
| nameRequired: false |
| }, |
| { |
| name: "figure", |
| namefrom: ["author"], |
| superclasses: ["section"], |
| nameRequired: false |
| }, |
| {name: "form", nameFrom: ["author"], superclasses: ["landmark"]}, |
| { |
| name: "grid", |
| nameFrom: ["author"], |
| superclasses: ["composite", "table"], |
| // TODO(aboxhall): Figure out how to express "rowgroup --> row" here. |
| mustContain: ["row"], |
| supportedAttributes: |
| ["aria-level", "aria-multiselectable", "aria-readonly"], |
| nameRequired: true |
| }, |
| { |
| name: "gridcell", |
| nameFrom: ["contents", "author"], |
| scope: ["row"], |
| superclasses: ["cell", "widget"], |
| supportedAttributes: |
| ["aria-readonly", "aria-required", "aria-selected"], |
| nameRequired: true |
| }, |
| { |
| name: "group", |
| nameFrom: ["author"], |
| superclasses: ["section"], |
| supportedAttributes: ["aria-activedescendant"] |
| }, |
| { |
| name: "heading", |
| namefrom: ["contents", "author"], |
| superclasses: ["sectionhead"], |
| supportedAttributes: ["aria-level"], |
| nameRequired: true, |
| implicitValues: {"aria-level": "2"} |
| }, |
| { |
| name: "img", |
| nameFrom: ["author"], |
| superclasses: ["section"], |
| nameRequired: true, |
| childrenPresentational: true |
| }, |
| { |
| name: "input", |
| abstract: true, |
| nameFrom: ["author"], |
| superclasses: ["widget"] |
| }, |
| { |
| name: "landmark", |
| abstract: true, |
| nameFrom: ["author"], |
| superclasses: ["section"], |
| nameRequired: false |
| }, |
| { |
| name: "link", |
| nameFrom: ["contents", "author"], |
| superclasses: ["command"], |
| supportedAttributes: ["aria-expanded"], |
| nameRequired: true |
| }, |
| { |
| name: "list", |
| // TODO(aboxhall): Figure out how to express "group --> listitem" |
| mustContain: ["listitem"], |
| nameFrom: ["author"], |
| superclasses: ["section"], |
| implicitValues: {"aria-orientation": "vertical"} |
| }, |
| { |
| name: "listbox", |
| nameFrom: ["author"], |
| superclasses: ["select"], |
| mustContain: ["option"], |
| supportedAttributes: |
| ["aria-multiselectable", "aria-readonly", "aria-required"], |
| nameRequired: true, |
| implicitValues: {"aria-orientation": "vertical"} |
| }, |
| { |
| name: "listitem", |
| nameFrom: ["author"], |
| superclasses: ["section"], |
| scope: ["group", "list"], |
| supportedAttributes: ["aria-level", "aria-posinset", "aria-setsize"] |
| }, |
| { |
| name: "log", |
| nameFrom: ["author"], |
| superclasses: ["section"], |
| nameRequired: true, |
| implicitValues: {"aria-live": "polite"} |
| }, |
| {name: "main", nameFrom: ["author"], superclasses: ["landmark"]}, |
| { |
| name: "marquee", |
| nameFrom: ["author"], |
| superclasses: ["section"], |
| nameRequired: true |
| }, |
| { |
| name: "math", |
| nameFrom: ["author"], |
| superclasses: ["section"], |
| nameRequired: true, |
| // TODO(aboxhall/aleventhal): this is what the spec says, but seems |
| // wrong. |
| childrenPresentational: true |
| }, |
| { |
| name: "menu", |
| mustContain: [ |
| "group", "menuitemradio", "menuitem", "menuitemcheckbox", |
| "menuitemradio" |
| ], |
| nameFrom: ["author"], |
| superclasses: ["select"], |
| implicitValues: {"aria-orientation": "vertical"} |
| }, |
| { |
| name: "menubar", |
| nameFrom: ["author"], |
| superclasses: ["menu"], |
| // TODO(aboxhall): figure out how to express "group --> {menuitem, |
| // menuitemradio, menuitemcheckbox}" |
| mustContain: ["menuitem", "menuitemradio", "menuitemcheckbox"], |
| implicitValues: {"aria-orientation": "horizontal"} |
| }, |
| { |
| name: "menuitem", |
| nameFrom: ["contents", "author"], |
| scope: ["group", "menu", "menubar"], |
| superclasses: ["command"], |
| nameRequired: true |
| }, |
| { |
| name: "menuitemcheckbox", |
| nameFrom: ["contents", "author"], |
| scope: ["menu", "menubar"], |
| superclasses: ["checkbox", "menuitem"], |
| nameRequired: true, |
| childrenPresentational: true, |
| implicitValues: {"aria-checked": false} |
| }, |
| { |
| name: "menuitemradio", |
| nameFrom: ["contents", "author"], |
| scope: ["menu", "menubar", "group"], |
| superclasses: ["menuitemcheckbox", "radio"], |
| nameRequired: true, |
| childrenPresentational: true, |
| implicitValues: {"aria-checked": false} |
| }, |
| {name: "navigation", nameFrom: ["author"], superclasses: ["landmark"]}, |
| {name: "none", superclasses: ["structure"]}, |
| {name: "note", nameFrom: ["author"], superclasses: ["section"]}, |
| { |
| name: "option", |
| nameFrom: ["contents", "author"], |
| scope: ["listbox"], |
| superclasses: ["input"], |
| requiredAttributes: ["aria-selected"], |
| supportedAttributes: |
| ["aria-checked", "aria-posinset", "aria-setsize"], |
| nameRequired: true, |
| childrenPresentational: true, |
| implicitValues: {"aria-selected": "false"} |
| }, |
| {name: "presentation", superclasses: ["structure"]}, |
| { |
| name: "progressbar", |
| nameFrom: ["author"], |
| superclasses: ["range"], |
| nameRequired: true, |
| childrenPresentational: true |
| }, |
| { |
| name: "radio", |
| nameFrom: ["contents", "author"], |
| superclasses: ["input"], |
| requiredAttributes: ["aria-checked"], |
| supportedAttributes: ["aria-posinset", "aria-setsize"], |
| nameRequired: true, |
| childrenPresentational: true, |
| implicitValues: {"aria-checked": "false"} |
| }, |
| { |
| name: "radiogroup", |
| nameFrom: ["author"], |
| superclasses: ["select"], |
| mustContain: ["radio"], |
| supportedAttributes: ["aria-readonly", "aria-required"], |
| nameRequired: true |
| }, |
| { |
| name: "range", |
| abstract: true, |
| nameFrom: ["author"], |
| superclasses: ["widget"], |
| supportedAttributes: [ |
| "aria-valuemax", "aria-valuemin", "aria-valuenow", "aria-valuetext" |
| ] |
| }, |
| { |
| name: "region", |
| nameFrom: ["author"], |
| superclasses: ["landmark"], |
| nameRequired: true |
| }, |
| { |
| name: "roletype", |
| abstract: true, |
| supportedAttributes: [ |
| "aria-atomic", "aria-busy", "aria-controls", |
| "aria-current", "aria-describedby", "aria-details", |
| "aria-disabled", "aria-dropeffect", "aria-errormessage", |
| "aria-flowto", "aria-grabbed", "aria-haspopup", |
| "aria-hidden", "aria-invalid", "aria-keyshortcuts", |
| "aria-label", "aria-labelledby", "aria-live", |
| "aria-owns", "aria-relevant", "aria-roledescription" |
| ] |
| }, |
| { |
| name: "row", |
| nameFrom: ["contents", "author"], |
| superclasses: ["group", "widget"], |
| mustContain: ["cell", "columnheader", "gridcell", "rowheader"], |
| scope: ["grid", "rowgroup", "table", "treegrid"], |
| // TODO(aboxhall/aleventhal): This is not in the spec yet, but |
| // setsize and posinset are included here for treegrid |
| // purposes. Issue already filed on spec. Remove this comment |
| // when spec updated. |
| supportedAttributes: [ |
| "aria-colindex", "aria-level", "aria-rowindex", "aria-selected", |
| "aria-setsize", "aria-posinset" |
| ] |
| }, |
| { |
| name: "rowgroup", |
| nameFrom: ["contents", "author"], |
| superclasses: ["structure"], |
| mustContain: ["row"], |
| scope: ["grid", "table", "treegrid"], |
| }, |
| { |
| name: "rowheader", |
| nameFrom: ["contents", "author"], |
| scope: ["row"], |
| superclasses: ["cell", "gridcell", "sectionhead"], |
| supportedAttributes: ["aria-sort"], |
| nameRequired: true |
| }, |
| { |
| name: "scrollbar", |
| nameFrom: ["author"], |
| requiredAttributes: [ |
| "aria-controls", "aria-orientation", "aria-valuemax", |
| "aria-valuemin", "aria-valuenow" |
| ], |
| superclasses: ["range"], |
| nameRequired: false, |
| childrenPresentational: true, |
| implicitValues: { |
| "aria-orientation": "vertical", |
| "aria-valuemin": "0", "aria-valuemax": "100" |
| } |
| }, |
| {name: "search", nameFrom: ["author"], superclasses: ["landmark"]}, |
| { |
| name: "searchbox", |
| nameFrom: ["author"], |
| superclasses: ["textbox"], |
| nameRequired: true |
| }, |
| { |
| name: "section", |
| abstract: true, |
| superclasses: ["structure"], |
| supportedAttributes: ["aria-expanded"] |
| }, |
| { |
| name: "sectionhead", |
| abstract: true, |
| nameFrom: ["contents", "author"], |
| superclasses: ["structure"], |
| supportedAttributes: ["aria-expanded"] |
| }, |
| { |
| name: "select", |
| abstract: true, |
| nameFrom: ["author"], |
| superclasses: ["composite", "group"] |
| }, |
| { |
| name: "separator", |
| nameFrom: ["author"], |
| // TODO(aboxhall): superclass depends on focusability, but |
| // doesn"t affect required/supported attributes |
| superclasses: ["structure"], |
| // TODO(aboxhall): required attributes depend on focusability |
| supportedAttributes: [ |
| "aria-orientation", "aria-valuemin", "aria-valuemax", |
| "aria-valuenow", "aria-valuetext" |
| ] |
| }, |
| { |
| name: "slider", |
| nameFrom: ["author"], |
| requiredAttributes: |
| ["aria-valuemax", "aria-valuemin", "aria-valuenow"], |
| superclasses: ["input", "range"], |
| supportedAttributes: ["aria-orientation"], |
| nameRequired: true, |
| childrenPresentational: true, |
| // TODO(aboxhall): aria-valuenow default is halfway between |
| // aria-valuemin and aria-valuemax |
| implicitValues: { |
| "aria-orientation": "horizontal", |
| "aria-valuemin": "0", "aria-valuemax": "100" |
| } |
| }, |
| { |
| name: "spinbutton", |
| nameFrom: ["author"], |
| requiredAttributes: |
| ["aria-valuemax", "aria-valuemin", "aria-valuenow"], |
| superclasses: ["composite", "input", "range"], |
| supportedAttributes: ["aria-required", "aria-readonly"], |
| nameRequired: true, |
| implicitValues: {"aria-valuenow": "0" } |
| }, |
| { |
| name: "status", |
| nameFrom: ["author"], |
| superclasses: ["section"], |
| implicitValues: {"aria-live": "polite", "aria-atomic": "true" } |
| }, |
| {name: "structure", abstract: true, superclasses: ["roletype"]}, |
| { |
| name: "switch", nameFrom: ["contents", "author"], |
| superclasses: ["checkbox"], requiredAttributes: ["aria-checked"], |
| nameRequired: true, childrenPresentational: true, |
| implicitValues: {"aria-checked": "false"} |
| }, |
| { |
| name: "tab", |
| nameFrom: ["contents", "author"], |
| scope: ["tablist"], |
| superclasses: ["sectionhead", "widget"], |
| supportedAttributes: ["aria-selected"], |
| childrenPresentational: true, |
| implicitValues: {"aria-selected": "false"} |
| }, |
| { |
| name: "table", |
| nameFrom: ["author"], |
| superclasses: ["section"], |
| // TODO(aboxhall): Figure out how to express "rowgroup --> row" |
| mustContain: ["row"], |
| supportedAttributes: ["aria-colcount", "aria-rowcount"], |
| nameRequired: true |
| }, |
| { |
| name: "tablist", |
| nameFrom: ["author"], |
| superclasses: ["composite"], |
| mustContain: ["tab"], |
| supportedAttributes: |
| ["aria-level", "aria-multiselectable", "aria-orientation"], |
| implicitValues: {"aria-orientation": "horizontal"} |
| }, |
| { |
| name: "tabpanel", |
| nameFrom: ["author"], |
| superclasses: ["section"], |
| nameRequired: true |
| }, |
| {name: "term", nameFrom: ["author"], superclasses: ["section"]}, |
| { |
| name: "textbox", |
| nameFrom: ["author"], |
| superclasses: ["input"], |
| supportedAttributes: [ |
| "aria-activedescendant", "aria-autocomplete", "aria-multiline", |
| "aria-placeholder", "aria-readonly", "aria-required" |
| ], |
| nameRequired: true |
| }, |
| {name: "timer", nameFrom: ["author"], superclasses: ["status"]}, |
| { |
| name: "toolbar", |
| nameFrom: ["author"], |
| superclasses: ["group"], |
| supportedAttributes: ["aria-orientation"], |
| implicitValues: {"aria-orientation": "horizontal" |
| } |
| }, |
| { |
| name: "tooltip", |
| nameFrom: ["contents", "author"], |
| superclasses: ["section"], |
| nameRequired: true |
| }, |
| { |
| name: "tree", |
| nameFrom: ["author"], |
| mustContain: ["group", "treeitem"], |
| superclasses: ["select"], |
| supportedAttributes: ["aria-multiselectable", "aria-required"], |
| nameRequired: true, |
| implicitValues: {"aria-orientation": "vertical" |
| } |
| }, |
| { |
| name: "treegrid", |
| // TODO(aboxhall): Figure out how to express "rowgroup --> row" |
| mustContain: ["row"], |
| nameFrom: ["author"], |
| superclasses: ["grid", "tree"], |
| nameRequired: true |
| }, |
| { |
| name: "treeitem", |
| nameFrom: ["contents", "author"], |
| scope: ["group", "tree"], |
| superclasses: ["listitem", "option"], |
| nameRequired: true |
| }, |
| {name: "widget", abstract: true, superclasses: ["roletype"]}, |
| { |
| name: "window", |
| abstract: true, |
| nameFrom: ["author"], |
| superclasses: ["roletype"], |
| supportedAttributes: ["aria-expanded", "aria-modal"] |
| } |
| ] |
| } |