From 991f0335fe8e99f568ce74de8c8539e401a0938d Mon Sep 17 00:00:00 2001 From: James Craig Date: Sun, 1 Apr 2018 23:01:41 -0700 Subject: [PATCH 1/8] IDL attribute reflection branch --- index.html | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) diff --git a/index.html b/index.html index dfe88cc82..b720581a6 100644 --- a/index.html +++ b/index.html @@ -10969,6 +10969,184 @@

State and Property Attribute Processing

Sometimes states and properties are present in the DOM but have a zero-length string ("") as their value. This is equivalent to their absence. User agents SHOULD treat state and property attributes with a value of "" the same as they treat an absent attribute. For supported states and properties, this corresponds to the default value, but if it is a required attribute, it signals an author error, and the implicit value for the role is used.

+
+

IDL Interface

+

Conforming user agents MUST implement the following IDL interfaces.

+

The tabIndex IDL interface is defined in another specification. TODO: Link that here.

+
+

Interface Mixin AccessibilityRole

+
+			interface mixin AccessibilityRole {
+				attribute DOMTokenList? role;
+			};
+			Element includes AccessibilityRole;
+		
+

User agents MUST reflect the role content attribute as the role IDL attribute.

+
+ +
+

Interface Mixin AriaAttributes

+
+			interface mixin AriaAttributes {
+				attribute DOMString? ariaActiveDescendant;
+				attribute DOMString? ariaAtomic;
+				attribute DOMString? ariaAutoComplete;
+				attribute DOMString? ariaBusy;
+				attribute DOMString? ariaChecked;
+				attribute long? ariaColCount;
+				attribute long? ariaColIndex;
+				attribute long? ariaColSpan;
+				attribute DOMTokenList? ariaControls;
+				attribute DOMString? ariaCurrent;
+				attribute DOMTokenList? ariaDescribedBy;
+				attribute DOMString? ariaDetails;
+				attribute DOMString? ariaDisabled;
+				attribute DOMString? ariaErrorMessage;
+				attribute DOMString? ariaExpanded;
+				attribute DOMTokenList? ariaFlowTo;
+				attribute DOMString? ariaHasPopup;
+				attribute DOMString? ariaHidden;
+				attribute DOMString? ariaInvalid;
+				attribute DOMString? ariaKeyShortcuts;
+				attribute DOMString? ariaLabel;
+				attribute DOMTokenList? ariaLabelledBy;
+				attribute long? ariaLevel;
+				attribute DOMString? ariaLive;
+				attribute DOMString? ariaModal;
+				attribute DOMString? ariaMultiLine;
+				attribute DOMString? ariaMultiSelectable;
+				attribute DOMString? ariaOrientation;
+				attribute DOMTokenList? ariaOwns;
+				attribute DOMString ariaPlaceholder;
+				attribute long? ariaPosInSet;
+				attribute DOMString? ariaPressed;
+				attribute DOMString? ariaReadOnly;
+				attribute DOMTokenList? ariaRelevant;
+				attribute DOMString? ariaRequired;
+				attribute DOMString? ariaRoleDescription;
+				attribute long? ariaRowCount;
+				attribute long? ariaRowIndex;
+				attribute long? ariaRowSpan;
+				attribute DOMString? ariaSelected;
+				attribute long? ariaSetSize;
+				attribute DOMTokenList? ariaSort;
+				attribute double? ariaValueMax;
+				attribute double? ariaValueMin;
+				attribute double? ariaValueNow;
+				attribute DOMString? ariaValueText;
+			};
+			Element includes AriaAttributes;
+		
+ +
+

ARIA Attribute Reflection

+

User agents MUST reflect the following content attributes to each of the corresponding IDL attributes.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDL AttributeReflected ARIA Content Attribute
ariaActiveDescendantaria-activedescendant
ariaAtomicaria-atomic
ariaAutoCompletearia-autocomplete
ariaBusyaria-busy
ariaCheckedaria-checked
ariaColCountaria-colcount
ariaColIndexaria-colindex
ariaColSpanaria-colspan
ariaControlsaria-controls
ariaCurrentaria-current
ariaDescribedByaria-describedby
ariaDetailsaria-details
ariaDisabledaria-disabled
ariaErrorMessagearia-errormessage
ariaExpandedaria-expanded
ariaFlowToaria-flowto
ariaHasPopuparia-haspopup
ariaHiddenaria-hidden
ariaInvalidaria-invalid
ariaKeyShortcutsaria-keyshortcuts
ariaLabelaria-label
ariaLabelledByaria-labelledby
ariaLevelaria-level
ariaLivearia-live
ariaModalaria-modal
ariaMultiLinearia-multiline
ariaMultiSelectablearia-selectable
ariaOrientationaria-orientation
ariaOwnsaria-owns
ariaPlaceholderaria-placeholder
ariaPosInSetaria-posinset
ariaPressedaria-pressed
ariaReadOnlyaria-readonly
ariaRelevantaria-relevant
ariaRequiredaria-required
ariaRoleDescriptionaria-roledescription
ariaRowCountaria-rowcount
ariaRowIndexaria-rowindex
ariaRowSpanaria-rowspan
ariaSelectedaria-selected
ariaSetSizearia-setsize
ariaSortaria-sort
ariaValueMaxaria-valuemax
ariaValueMinaria-valuemin
ariaValueNowaria-valuenow
ariaValueTextaria-valuetext
+

Note: Attributes aria-dropeffect and aria-grabbed were deprecated in ARIA 1.1 and do not have reflected IDL attributes.

+
+

Disambiguation Pattern

+

Though specification authors may make exceptions to this pattern, the following rules were used to disambiguate names and case of the IDL properties listed above.

+
    +
  • Any attribute name referencing concepts that are combinations of two or more words (such as "described by") becomes a camel-cased IDL property capitalizing each word boundary. For example, aria-describedby becomes ariaDescribedBy with both the D and B capitalized.
  • +
  • Likewise, any attribute name referencing concepts that can be hyphenated (such as "multi-selectable") becomes a camel-cased IDL property capitalizing each hyphenation boundary. For example, the only valid spelling for "multi-selectable" is hyphenated, so aria-multiselectable becomes ariaMultiSelectable with both the M and S capitalized.
  • +
  • When trusted dictionary sources list both hyphenated or non-hyphenated spellings (e.g. "multi-line" and "multiline" are both valid spellings) use the hyphenated version and apply the hyphenation rule above. For example, aria-multiline becomes ariaMultiLine with both the M and L capitalized.
  • +
  • If all trusted dictionary sources list a single spelling of a compound word with no spaces or hyphens, only the first letter of the term is capitalized. For example, neither “place-holder” nor “place holder” are considered valid spellings of the term “placeholder,” so aria-placeholder becomes ariaPlaceholder with only the P capitalized.
  • +
  • There are currently no acronym-based ARIA attributes, but if future attributes include acronym usage, attempt to match existing DOM conventions (e.g. ID becomes Id).
  • +
+

Disambiguation Notes for Specific Attribute Names

+
    +
  • ariaPosInSet: The aria-posinset attribute refers to an item's position in a set (two words: "in set") rather than the "inset" of an item from the beginning of the collection. Therefore the IDL property name is ariaPosInSet with the P, I, and second S capitalized, not ariaPosInset.
  • +
+

Editor's Note: Should we make an exception on the spelling of "placeholder" and capitalize the H anyway? Some developers will expect this to be ariaPlaceHolder despite the fact that it's not a hyphenated word.

+
+
+
+ +
+

Example IDL Property Usage

+

The primary purpose of ARIA IDL property reflection is to ease JavaScript-based manipulation of values. The following examples demonstrate its usage.

+ +
+ +

Schemata

WAI-ARIA roles, states, and properties are available in a number of machine-readable formats to support validation of content using WAI-ARIA attributes. WAI-ARIA is not finalized, however, so these files are subject to change without notice. Todo: Remove disclaimers about not final at rec.

@@ -11129,6 +11307,7 @@

Substantive changes since the last public working draft

  • 06-Dec-2017: Make aria-expanded a supported state of menuitem. This change also makes it a supported property of menuitemcheckbox and menuitemradio via inheritance.
  • 06-Dec-2017: When aria-errormessage is not pertinent, authors MUST either ensure the content is not rendered or remove the aria-errormessage attribute or its value. User agents MUST NOT expose aria-errormessage for an object with an aria-invalid value of false.
  • +
  • 01-Apr-2018: Added ARIA IDL Section (JavaScript interfaces).
  • From 704f6e7e7aafb6cd93ca58c7ccc10b54892644cc Mon Sep 17 00:00:00 2001 From: James Craig Date: Mon, 2 Apr 2018 09:39:32 -0700 Subject: [PATCH 2/8] typo: selectable -> multiselectable --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index b720581a6..a4e83dc13 100644 --- a/index.html +++ b/index.html @@ -11069,7 +11069,7 @@

    ARIA Attribute Reflection

    ariaLivearia-live ariaModalaria-modal ariaMultiLinearia-multiline - ariaMultiSelectablearia-selectable + ariaMultiSelectablearia-multiselectable ariaOrientationaria-orientation ariaOwnsaria-owns ariaPlaceholderaria-placeholder From ab110e71dee0290fe9c297327a5336ed24923386 Mon Sep 17 00:00:00 2001 From: James Craig Date: Mon, 2 Apr 2018 10:01:37 -0700 Subject: [PATCH 3/8] updating refleection link from whatwg to w3c --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index a4e83dc13..d7eeca490 100644 --- a/index.html +++ b/index.html @@ -10981,7 +10981,7 @@

    Interface Mixin AccessibilityRole

    }; Element includes AccessibilityRole; -

    User agents MUST reflect the role content attribute as the role IDL attribute.

    +

    User agents MUST reflect the role content attribute as the role IDL attribute.

    @@ -11040,7 +11040,7 @@

    Interface Mixin AriaAttributes

    ARIA Attribute Reflection

    -

    User agents MUST reflect the following content attributes to each of the corresponding IDL attributes.

    +

    User agents MUST reflect the following content attributes to each of the corresponding IDL attributes.

    From 8d6d944c191866df512ce1ab468470f580045738 Mon Sep 17 00:00:00 2001 From: James Craig Date: Tue, 1 May 2018 16:23:59 -0700 Subject: [PATCH 4/8] IDL updates: [Reflect], longs/doubles can't be optional (now DONStrings), and DOMTokenLists can't be both reaonly and reflected (token list reflection will be handled differently). --- index.html | 239 ++++++++++++++++++++++++++--------------------------- 1 file changed, 119 insertions(+), 120 deletions(-) diff --git a/index.html b/index.html index d7eeca490..0da0e2662 100644 --- a/index.html +++ b/index.html @@ -10972,12 +10972,11 @@

    State and Property Attribute Processing

    IDL Interface

    Conforming user agents MUST implement the following IDL interfaces.

    -

    The tabIndex IDL interface is defined in another specification. TODO: Link that here.

    Interface Mixin AccessibilityRole

     			interface mixin AccessibilityRole {
    -				attribute DOMTokenList? role;
    +				[Reflect] attribute DOMTokenList? role;
     			};
     			Element includes AccessibilityRole;
     		
    @@ -10988,131 +10987,131 @@

    Interface Mixin AccessibilityRole

    Interface Mixin AriaAttributes

     			interface mixin AriaAttributes {
    -				attribute DOMString? ariaActiveDescendant;
    -				attribute DOMString? ariaAtomic;
    -				attribute DOMString? ariaAutoComplete;
    -				attribute DOMString? ariaBusy;
    -				attribute DOMString? ariaChecked;
    -				attribute long? ariaColCount;
    -				attribute long? ariaColIndex;
    -				attribute long? ariaColSpan;
    -				attribute DOMTokenList? ariaControls;
    -				attribute DOMString? ariaCurrent;
    -				attribute DOMTokenList? ariaDescribedBy;
    -				attribute DOMString? ariaDetails;
    -				attribute DOMString? ariaDisabled;
    -				attribute DOMString? ariaErrorMessage;
    -				attribute DOMString? ariaExpanded;
    -				attribute DOMTokenList? ariaFlowTo;
    -				attribute DOMString? ariaHasPopup;
    -				attribute DOMString? ariaHidden;
    -				attribute DOMString? ariaInvalid;
    -				attribute DOMString? ariaKeyShortcuts;
    -				attribute DOMString? ariaLabel;
    -				attribute DOMTokenList? ariaLabelledBy;
    -				attribute long? ariaLevel;
    -				attribute DOMString? ariaLive;
    -				attribute DOMString? ariaModal;
    -				attribute DOMString? ariaMultiLine;
    -				attribute DOMString? ariaMultiSelectable;
    -				attribute DOMString? ariaOrientation;
    -				attribute DOMTokenList? ariaOwns;
    -				attribute DOMString ariaPlaceholder;
    -				attribute long? ariaPosInSet;
    -				attribute DOMString? ariaPressed;
    -				attribute DOMString? ariaReadOnly;
    -				attribute DOMTokenList? ariaRelevant;
    -				attribute DOMString? ariaRequired;
    -				attribute DOMString? ariaRoleDescription;
    -				attribute long? ariaRowCount;
    -				attribute long? ariaRowIndex;
    -				attribute long? ariaRowSpan;
    -				attribute DOMString? ariaSelected;
    -				attribute long? ariaSetSize;
    -				attribute DOMTokenList? ariaSort;
    -				attribute double? ariaValueMax;
    -				attribute double? ariaValueMin;
    -				attribute double? ariaValueNow;
    -				attribute DOMString? ariaValueText;
    +				[Reflect=aria_activedescendant]          attribute DOMString?    ariaActiveDescendant;
    +				[Reflect=aria_atomic]                    attribute DOMString?    ariaAtomic;
    +				[Reflect=aria_autocomplete]              attribute DOMString?    ariaAutoComplete;
    +				[Reflect=aria_busy]                      attribute DOMString?    ariaBusy;
    +				[Reflect=aria_checked]                   attribute DOMString?    ariaChecked;
    +				[Reflect=aria_colcount]                  attribute DOMString?    ariaColCount;
    +				[Reflect=aria_colindex]                  attribute DOMString?    ariaColIndex;
    +				[Reflect=aria_colspan]                   attribute DOMString?    ariaColSpan;
    +				                                readonly attribute DOMTokenList? ariaControls;
    +				[Reflect=aria_current]                   attribute DOMString?    ariaCurrent;
    +				                                readonly attribute DOMTokenList? ariaDescribedBy;
    +				[Reflect=aria_detail]                    attribute DOMString?    ariaDetails;
    +				[Reflect=aria_disabled]                  attribute DOMString?    ariaDisabled;
    +				[Reflect=aria_errormessage]              attribute DOMString?    ariaErrorMessage;
    +				[Reflect=aria_expanded]                  attribute DOMString?    ariaExpanded;
    +				                                readonly attribute DOMTokenList? ariaFlowTo;
    +				[Reflect=aria_haspopup]                  attribute DOMString?    ariaHasPopup;
    +				[Reflect=aria_hidden]                    attribute DOMString?    ariaHidden;
    +				[Reflect=aria_invalid]                   attribute DOMString?    ariaInvalid;
    +				[Reflect=aria_shortcuts]                 attribute DOMString?    ariaKeyShortcuts;
    +				[Reflect=aria_label]                     attribute DOMString?    ariaLabel;
    +				                                readonly attribute DOMTokenList? ariaLabelledBy;
    +				[Reflect=aria_level]                     attribute DOMString?    ariaLevel;
    +				[Reflect=aria_live]                      attribute DOMString?    ariaLive;
    +				[Reflect=aria_modal]                     attribute DOMString?    ariaModal;
    +				[Reflect=aria_multiline]                 attribute DOMString?    ariaMultiLine;
    +				[Reflect=aria_multiselectable]           attribute DOMString?    ariaMultiSelectable;
    +				[Reflect=aria_orientation]               attribute DOMString?    ariaOrientation;
    +				                                readonly attribute DOMTokenList? ariaOwns;
    +				[Reflect=aria_placeholder]               attribute DOMString     ariaPlaceholder;
    +				[Reflect=aria_posinset]                  attribute DOMString?    ariaPosInSet;
    +				[Reflect=aria_pressed]                   attribute DOMString?    ariaPressed;
    +				[Reflect=aria_readonly]                  attribute DOMString?    ariaReadOnly;
    +				                                readonly attribute DOMTokenList? ariaRelevant;
    +				[Reflect=aria_required]                  attribute DOMString?    ariaRequired;
    +				[Reflect=aria_roledescription]           attribute DOMString?    ariaRoleDescription;
    +				[Reflect=aria_rowcount]                  attribute DOMString?    ariaRowCount;
    +				[Reflect=aria_rowindex]                  attribute DOMString?    ariaRowIndex;
    +				[Reflect=aria_rowspan]                   attribute DOMString?    ariaRowSpan;
    +				[Reflect=aria_selected]                  attribute DOMString?    ariaSelected;
    +				[Reflect=aria_setsize]                   attribute DOMString?    ariaSetSize;
    +				                                readonly attribute DOMTokenList? ariaSort;
    +				[Reflect=aria_valuemax]                  attribute DOMString?    ariaValueMax;
    +				[Reflect=aria_valuemin]                  attribute DOMString?    ariaValueMin;
    +				[Reflect=aria_valuenow]                  attribute DOMString?    ariaValueNow;
    +				[Reflect=aria_valuetext]                 attribute DOMString?    ariaValueText;
     			};
     			Element includes AriaAttributes;
     		
    +
    -
    -

    ARIA Attribute Reflection

    -

    User agents MUST reflect the following content attributes to each of the corresponding IDL attributes.

    -
    IDL AttributeReflected ARIA Content Attribute
    ariaActiveDescendantaria-activedescendant
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDL AttributeReflected ARIA Content Attribute
    ariaActiveDescendantaria-activedescendant
    ariaAtomicaria-atomic
    ariaAutoCompletearia-autocomplete
    ariaBusyaria-busy
    ariaCheckedaria-checked
    ariaColCountaria-colcount
    ariaColIndexaria-colindex
    ariaColSpanaria-colspan
    ariaControlsaria-controls
    ariaCurrentaria-current
    ariaDescribedByaria-describedby
    ariaDetailsaria-details
    ariaDisabledaria-disabled
    ariaErrorMessagearia-errormessage
    ariaExpandedaria-expanded
    ariaFlowToaria-flowto
    ariaHasPopuparia-haspopup
    ariaHiddenaria-hidden
    ariaInvalidaria-invalid
    ariaKeyShortcutsaria-keyshortcuts
    ariaLabelaria-label
    ariaLabelledByaria-labelledby
    ariaLevelaria-level
    ariaLivearia-live
    ariaModalaria-modal
    ariaMultiLinearia-multiline
    ariaMultiSelectablearia-multiselectable
    ariaOrientationaria-orientation
    ariaOwnsaria-owns
    ariaPlaceholderaria-placeholder
    ariaPosInSetaria-posinset
    ariaPressedaria-pressed
    ariaReadOnlyaria-readonly
    ariaRelevantaria-relevant
    ariaRequiredaria-required
    ariaRoleDescriptionaria-roledescription
    ariaRowCountaria-rowcount
    ariaRowIndexaria-rowindex
    ariaRowSpanaria-rowspan
    ariaSelectedaria-selected
    ariaSetSizearia-setsize
    ariaSortaria-sort
    ariaValueMaxaria-valuemax
    ariaValueMinaria-valuemin
    ariaValueNowaria-valuenow
    ariaValueTextaria-valuetext
    -

    Note: Attributes aria-dropeffect and aria-grabbed were deprecated in ARIA 1.1 and do not have reflected IDL attributes.

    -
    -

    Disambiguation Pattern

    -

    Though specification authors may make exceptions to this pattern, the following rules were used to disambiguate names and case of the IDL properties listed above.

    -
      -
    • Any attribute name referencing concepts that are combinations of two or more words (such as "described by") becomes a camel-cased IDL property capitalizing each word boundary. For example, aria-describedby becomes ariaDescribedBy with both the D and B capitalized.
    • -
    • Likewise, any attribute name referencing concepts that can be hyphenated (such as "multi-selectable") becomes a camel-cased IDL property capitalizing each hyphenation boundary. For example, the only valid spelling for "multi-selectable" is hyphenated, so aria-multiselectable becomes ariaMultiSelectable with both the M and S capitalized.
    • -
    • When trusted dictionary sources list both hyphenated or non-hyphenated spellings (e.g. "multi-line" and "multiline" are both valid spellings) use the hyphenated version and apply the hyphenation rule above. For example, aria-multiline becomes ariaMultiLine with both the M and L capitalized.
    • -
    • If all trusted dictionary sources list a single spelling of a compound word with no spaces or hyphens, only the first letter of the term is capitalized. For example, neither “place-holder” nor “place holder” are considered valid spellings of the term “placeholder,” so aria-placeholder becomes ariaPlaceholder with only the P capitalized.
    • -
    • There are currently no acronym-based ARIA attributes, but if future attributes include acronym usage, attempt to match existing DOM conventions (e.g. ID becomes Id).
    • -
    -

    Disambiguation Notes for Specific Attribute Names

    -
      -
    • ariaPosInSet: The aria-posinset attribute refers to an item's position in a set (two words: "in set") rather than the "inset" of an item from the beginning of the collection. Therefore the IDL property name is ariaPosInSet with the P, I, and second S capitalized, not ariaPosInset.
    • -
    -

    Editor's Note: Should we make an exception on the spelling of "placeholder" and capitalize the H anyway? Some developers will expect this to be ariaPlaceHolder despite the fact that it's not a hyphenated word.

    -
    -
    +
    +

    ARIA Attribute Reflection

    +

    User agents MUST reflect the following content attributes to each of the corresponding IDL attributes.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDL AttributeReflected ARIA Content Attribute
    ariaActiveDescendantaria-activedescendant
    ariaAtomicaria-atomic
    ariaAutoCompletearia-autocomplete
    ariaBusyaria-busy
    ariaCheckedaria-checked
    ariaColCountaria-colcount
    ariaColIndexaria-colindex
    ariaColSpanaria-colspan
    ariaControlsaria-controls
    ariaCurrentaria-current
    ariaDescribedByaria-describedby
    ariaDetailsaria-details
    ariaDisabledaria-disabled
    ariaErrorMessagearia-errormessage
    ariaExpandedaria-expanded
    ariaFlowToaria-flowto
    ariaHasPopuparia-haspopup
    ariaHiddenaria-hidden
    ariaInvalidaria-invalid
    ariaKeyShortcutsaria-keyshortcuts
    ariaLabelaria-label
    ariaLabelledByaria-labelledby
    ariaLevelaria-level
    ariaLivearia-live
    ariaModalaria-modal
    ariaMultiLinearia-multiline
    ariaMultiSelectablearia-multiselectable
    ariaOrientationaria-orientation
    ariaOwnsaria-owns
    ariaPlaceholderaria-placeholder
    ariaPosInSetaria-posinset
    ariaPressedaria-pressed
    ariaReadOnlyaria-readonly
    ariaRelevantaria-relevant
    ariaRequiredaria-required
    ariaRoleDescriptionaria-roledescription
    ariaRowCountaria-rowcount
    ariaRowIndexaria-rowindex
    ariaRowSpanaria-rowspan
    ariaSelectedaria-selected
    ariaSetSizearia-setsize
    ariaSortaria-sort
    ariaValueMaxaria-valuemax
    ariaValueMinaria-valuemin
    ariaValueNowaria-valuenow
    ariaValueTextaria-valuetext
    +

    Note: Attributes aria-dropeffect and aria-grabbed were deprecated in ARIA 1.1 and do not have reflected IDL attributes.

    +
    +

    Disambiguation Pattern

    +

    Though specification authors may make exceptions to this pattern, the following rules were used to disambiguate names and case of the IDL attributes listed above.

    +
      +
    • Any attribute name referencing concepts that are combinations of two or more words (such as "described by") becomes a camel-cased IDL attribute capitalizing each word boundary. For example, aria-describedby becomes ariaDescribedBy with both the D and B capitalized.
    • +
    • Likewise, any attribute name referencing concepts that can be hyphenated (such as "multi-selectable") becomes a camel-cased IDL attribute capitalizing each hyphenation boundary. For example, the only valid spelling for "multi-selectable" is hyphenated, so aria-multiselectable becomes ariaMultiSelectable with both the M and S capitalized.
    • +
    • When trusted dictionary sources list both hyphenated or non-hyphenated spellings (e.g. "multi-line" and "multiline" are both valid spellings) use the hyphenated version and apply the hyphenation rule above. For example, aria-multiline becomes ariaMultiLine with both the M and L capitalized.
    • +
    • If all trusted dictionary sources list a single spelling of a compound word with no spaces or hyphens, only the first letter of the term is capitalized. For example, neither “place-holder” nor “place holder” are considered valid spellings of the term “placeholder,” so aria-placeholder becomes ariaPlaceholder with only the P capitalized.
    • +
    • There are currently no acronym-based ARIA attributes, but if future attributes include acronym usage, attempt to match existing DOM conventions (e.g. ID becomes Id).
    • +
    +

    Disambiguation Notes for Specific Attribute Names

    +
      +
    • ariaPosInSet: The aria-posinset attribute refers to an item's position in a set (two words: "in set") rather than the "inset" of an item from the beginning of the collection. Therefore the IDL attribute name is ariaPosInSet with the P, I, and second S capitalized, not ariaPosInset.
    • +
    +

    Editor's Note: Should we make an exception on the spelling of "placeholder" and capitalize the H anyway? Some developers will expect this to be ariaPlaceHolder despite the fact that it's not a hyphenated word.

    +
    -

    Example IDL Property Usage

    -

    The primary purpose of ARIA IDL property reflection is to ease JavaScript-based manipulation of values. The following examples demonstrate its usage.

    +

    Example IDL Attribute Usage

    +

    The primary purpose of ARIA IDL attribute reflection is to ease JavaScript-based manipulation of values. The following examples demonstrate its usage.

    @@ -11090,7 +11091,6 @@

    ARIA Attribute Reflection

    ariaValueNowaria-valuenow ariaValueTextaria-valuetext -

    Note: Attributes aria-dropeffect and aria-grabbed were deprecated in ARIA 1.1 and do not have reflected IDL attributes.

    Disambiguation Pattern

    Though specification authors may make exceptions to this pattern, the following rules were used to disambiguate names and case of the IDL attributes listed above.

    From 5fee38815098aa5ef1568cdd39ad82b29d9b9c51 Mon Sep 17 00:00:00 2001 From: James Craig Date: Wed, 2 May 2018 19:01:53 -0700 Subject: [PATCH 6/8] removing non-standard [Reflect] syntax and fixing ReSpec IDL containment errors --- index.html | 207 ++++++++++++++++++++++++++--------------------------- 1 file changed, 103 insertions(+), 104 deletions(-) diff --git a/index.html b/index.html index 95375b77e..5998ffdf7 100644 --- a/index.html +++ b/index.html @@ -10976,7 +10976,7 @@

    IDL Interface

    Interface Mixin AccessibilityRole

     			interface mixin AccessibilityRole {
    -				[Reflect] attribute DOMString? role;
    +				attribute DOMString? role;
     			};
     			Element includes AccessibilityRole;
     		
    @@ -10987,111 +10987,110 @@

    Interface Mixin AccessibilityRole

    Interface Mixin AriaAttributes

     			interface mixin AriaAttributes {
    -				[Reflect=aria_activedescendant] attribute DOMString? ariaActiveDescendant;
    -				[Reflect=aria_atomic]           attribute DOMString? ariaAtomic;
    -				[Reflect=aria_autocomplete]     attribute DOMString? ariaAutoComplete;
    -				[Reflect=aria_busy]             attribute DOMString? ariaBusy;
    -				[Reflect=aria_checked]          attribute DOMString? ariaChecked;
    -				[Reflect=aria_colcount]         attribute DOMString? ariaColCount;
    -				[Reflect=aria_colindex]         attribute DOMString? ariaColIndex;
    -				[Reflect=aria_colspan]          attribute DOMString? ariaColSpan;
    -				[Reflect=aria_controls]         attribute DOMString? ariaControls;
    -				[Reflect=aria_current]          attribute DOMString? ariaCurrent;
    -				[Reflect=aria_describedby]      attribute DOMString? ariaDescribedBy;
    -				[Reflect=aria_detail]           attribute DOMString? ariaDetails;
    -				[Reflect=aria_disabled]         attribute DOMString? ariaDisabled;
    -				[Reflect=aria_errormessage]     attribute DOMString? ariaErrorMessage;
    -				[Reflect=aria_expanded]         attribute DOMString? ariaExpanded;
    -				[Reflect=aria_flowto]           attribute DOMString? ariaFlowTo;
    -				[Reflect=aria_haspopup]         attribute DOMString? ariaHasPopup;
    -				[Reflect=aria_hidden]           attribute DOMString? ariaHidden;
    -				[Reflect=aria_invalid]          attribute DOMString? ariaInvalid;
    -				[Reflect=aria_shortcuts]        attribute DOMString? ariaKeyShortcuts;
    -				[Reflect=aria_label]            attribute DOMString? ariaLabel;
    -				[Reflect=aria_labelledby]       attribute DOMString? ariaLabelledBy;
    -				[Reflect=aria_level]            attribute DOMString? ariaLevel;
    -				[Reflect=aria_live]             attribute DOMString? ariaLive;
    -				[Reflect=aria_modal]            attribute DOMString? ariaModal;
    -				[Reflect=aria_multiline]        attribute DOMString? ariaMultiLine;
    -				[Reflect=aria_multiselectable]  attribute DOMString? ariaMultiSelectable;
    -				[Reflect=aria_orientation]      attribute DOMString? ariaOrientation;
    -				[Reflect=aria_owns]             attribute DOMString? ariaOwns;
    -				[Reflect=aria_placeholder]      attribute DOMString? ariaPlaceholder;
    -				[Reflect=aria_posinset]         attribute DOMString? ariaPosInSet;
    -				[Reflect=aria_pressed]          attribute DOMString? ariaPressed;
    -				[Reflect=aria_readonly]         attribute DOMString? ariaReadOnly;
    -				[Reflect=aria_relevant]         attribute DOMString? ariaRelevant;
    -				[Reflect=aria_required]         attribute DOMString? ariaRequired;
    -				[Reflect=aria_roledescription]  attribute DOMString? ariaRoleDescription;
    -				[Reflect=aria_rowcount]         attribute DOMString? ariaRowCount;
    -				[Reflect=aria_rowindex]         attribute DOMString? ariaRowIndex;
    -				[Reflect=aria_rowspan]          attribute DOMString? ariaRowSpan;
    -				[Reflect=aria_selected]         attribute DOMString? ariaSelected;
    -				[Reflect=aria_setsize]          attribute DOMString? ariaSetSize;
    -				[Reflect=aria_sort]             attribute DOMString? ariaSort;
    -				[Reflect=aria_valuemax]         attribute DOMString? ariaValueMax;
    -				[Reflect=aria_valuemin]         attribute DOMString? ariaValueMin;
    -				[Reflect=aria_valuenow]         attribute DOMString? ariaValueNow;
    -				[Reflect=aria_valuetext]        attribute DOMString? ariaValueText;
    +				attribute DOMString? ariaActiveDescendant;
    +				attribute DOMString? ariaAtomic;
    +				attribute DOMString? ariaAutoComplete;
    +				attribute DOMString? ariaBusy;
    +				attribute DOMString? ariaChecked;
    +				attribute DOMString? ariaColCount;
    +				attribute DOMString? ariaColIndex;
    +				attribute DOMString? ariaColSpan;
    +				attribute DOMString? ariaControls;
    +				attribute DOMString? ariaCurrent;
    +				attribute DOMString? ariaDescribedBy;
    +				attribute DOMString? ariaDetails;
    +				attribute DOMString? ariaDisabled;
    +				attribute DOMString? ariaErrorMessage;
    +				attribute DOMString? ariaExpanded;
    +				attribute DOMString? ariaFlowTo;
    +				attribute DOMString? ariaHasPopup;
    +				attribute DOMString? ariaHidden;
    +				attribute DOMString? ariaInvalid;
    +				attribute DOMString? ariaKeyShortcuts;
    +				attribute DOMString? ariaLabel;
    +				attribute DOMString? ariaLabelledBy;
    +				attribute DOMString? ariaLevel;
    +				attribute DOMString? ariaLive;
    +				attribute DOMString? ariaModal;
    +				attribute DOMString? ariaMultiLine;
    +				attribute DOMString? ariaMultiSelectable;
    +				attribute DOMString? ariaOrientation;
    +				attribute DOMString? ariaOwns;
    +				attribute DOMString? ariaPlaceholder;
    +				attribute DOMString? ariaPosInSet;
    +				attribute DOMString? ariaPressed;
    +				attribute DOMString? ariaReadOnly;
    +				attribute DOMString? ariaRelevant;
    +				attribute DOMString? ariaRequired;
    +				attribute DOMString? ariaRoleDescription;
    +				attribute DOMString? ariaRowCount;
    +				attribute DOMString? ariaRowIndex;
    +				attribute DOMString? ariaRowSpan;
    +				attribute DOMString? ariaSelected;
    +				attribute DOMString? ariaSetSize;
    +				attribute DOMString? ariaSort;
    +				attribute DOMString? ariaValueMax;
    +				attribute DOMString? ariaValueMin;
    +				attribute DOMString? ariaValueNow;
    +				attribute DOMString? ariaValueText;
     			};
     			Element includes AriaAttributes;
     		
    -

    Note: Attributes aria-dropeffect and aria-grabbed were deprecated in ARIA 1.1 and do not have corresponding IDL attributes.

    -
    - -
    -

    ARIA Attribute Reflection

    -

    User agents MUST reflect the following content attributes to each of the corresponding IDL attributes.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDL AttributeReflected ARIA Content Attribute
    ariaActiveDescendantaria-activedescendant
    ariaAtomicaria-atomic
    ariaAutoCompletearia-autocomplete
    ariaBusyaria-busy
    ariaCheckedaria-checked
    ariaColCountaria-colcount
    ariaColIndexaria-colindex
    ariaColSpanaria-colspan
    ariaControlsaria-controls
    ariaCurrentaria-current
    ariaDescribedByaria-describedby
    ariaDetailsaria-details
    ariaDisabledaria-disabled
    ariaErrorMessagearia-errormessage
    ariaExpandedaria-expanded
    ariaFlowToaria-flowto
    ariaHasPopuparia-haspopup
    ariaHiddenaria-hidden
    ariaInvalidaria-invalid
    ariaKeyShortcutsaria-keyshortcuts
    ariaLabelaria-label
    ariaLabelledByaria-labelledby
    ariaLevelaria-level
    ariaLivearia-live
    ariaModalaria-modal
    ariaMultiLinearia-multiline
    ariaMultiSelectablearia-multiselectable
    ariaOrientationaria-orientation
    ariaOwnsaria-owns
    ariaPlaceholderaria-placeholder
    ariaPosInSetaria-posinset
    ariaPressedaria-pressed
    ariaReadOnlyaria-readonly
    ariaRelevantaria-relevant
    ariaRequiredaria-required
    ariaRoleDescriptionaria-roledescription
    ariaRowCountaria-rowcount
    ariaRowIndexaria-rowindex
    ariaRowSpanaria-rowspan
    ariaSelectedaria-selected
    ariaSetSizearia-setsize
    ariaSortaria-sort
    ariaValueMaxaria-valuemax
    ariaValueMinaria-valuemin
    ariaValueNowaria-valuenow
    ariaValueTextaria-valuetext
    -
    +
    +

    ARIA Attribute Reflection

    +

    User agents MUST reflect the following content attributes to each of the corresponding IDL attributes.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDL AttributeReflected ARIA Content Attribute
    ariaActiveDescendantaria-activedescendant
    ariaAtomicaria-atomic
    ariaAutoCompletearia-autocomplete
    ariaBusyaria-busy
    ariaCheckedaria-checked
    ariaColCountaria-colcount
    ariaColIndexaria-colindex
    ariaColSpanaria-colspan
    ariaControlsaria-controls
    ariaCurrentaria-current
    ariaDescribedByaria-describedby
    ariaDetailsaria-details
    ariaDisabledaria-disabled
    ariaErrorMessagearia-errormessage
    ariaExpandedaria-expanded
    ariaFlowToaria-flowto
    ariaHasPopuparia-haspopup
    ariaHiddenaria-hidden
    ariaInvalidaria-invalid
    ariaKeyShortcutsaria-keyshortcuts
    ariaLabelaria-label
    ariaLabelledByaria-labelledby
    ariaLevelaria-level
    ariaLivearia-live
    ariaModalaria-modal
    ariaMultiLinearia-multiline
    ariaMultiSelectablearia-multiselectable
    ariaOrientationaria-orientation
    ariaOwnsaria-owns
    ariaPlaceholderaria-placeholder
    ariaPosInSetaria-posinset
    ariaPressedaria-pressed
    ariaReadOnlyaria-readonly
    ariaRelevantaria-relevant
    ariaRequiredaria-required
    ariaRoleDescriptionaria-roledescription
    ariaRowCountaria-rowcount
    ariaRowIndexaria-rowindex
    ariaRowSpanaria-rowspan
    ariaSelectedaria-selected
    ariaSetSizearia-setsize
    ariaSortaria-sort
    ariaValueMaxaria-valuemax
    ariaValueMinaria-valuemin
    ariaValueNowaria-valuenow
    ariaValueTextaria-valuetext
    +

    Note: Attributes aria-dropeffect and aria-grabbed were deprecated in ARIA 1.1 and do not have corresponding IDL attributes.

    +
    +

    Disambiguation Pattern

    Though specification authors may make exceptions to this pattern, the following rules were used to disambiguate names and case of the IDL attributes listed above.

      @@ -11106,7 +11105,7 @@

      Disambiguation Notes for Specific Attribute Names

    • ariaPosInSet: The aria-posinset attribute refers to an item's position in a set (two words: "in set") rather than the "inset" of an item from the beginning of the collection. Therefore the IDL attribute name is ariaPosInSet with the P, I, and second S capitalized, not ariaPosInset.

    Editor's Note: Should we make an exception on the spelling of "placeholder" and capitalize the H anyway? Some developers will expect this to be ariaPlaceHolder despite the fact that it's not a hyphenated word.

    -
    +
    From e7c70384014735eda302b5876e65150ee4d351cb Mon Sep 17 00:00:00 2001 From: James Craig Date: Thu, 3 May 2018 11:24:36 -0700 Subject: [PATCH 7/8] more explicit mention of 'non-normative' sections --- index.html | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index 5998ffdf7..babcde459 100644 --- a/index.html +++ b/index.html @@ -11088,9 +11088,9 @@

    ARIA Attribute Reflection

    ariaValueNowaria-valuenow ariaValueTextaria-valuetext -

    Note: Attributes aria-dropeffect and aria-grabbed were deprecated in ARIA 1.1 and do not have corresponding IDL attributes.

    +

    Note: Attributes aria-dropeffect and aria-grabbed were deprecated in ARIA 1.1 and do not have corresponding IDL attributes.

    -
    +

    Disambiguation Pattern

    Though specification authors may make exceptions to this pattern, the following rules were used to disambiguate names and case of the IDL attributes listed above.

      @@ -11100,7 +11100,8 @@

      Disambiguation Pattern

    • If all trusted dictionary sources list a single spelling of a compound word with no spaces or hyphens, only the first letter of the term is capitalized. For example, neither “place-holder” nor “place holder” are considered valid spellings of the term “placeholder,” so aria-placeholder becomes ariaPlaceholder with only the P capitalized.
    • There are currently no acronym-based ARIA attributes, but if future attributes include acronym usage, attempt to match existing DOM conventions (e.g. ID becomes Id).
    -

    Disambiguation Notes for Specific Attribute Names

    +
    +

    Notes and Exceptions for Specific Attribute Names

    • ariaPosInSet: The aria-posinset attribute refers to an item's position in a set (two words: "in set") rather than the "inset" of an item from the beginning of the collection. Therefore the IDL attribute name is ariaPosInSet with the P, I, and second S capitalized, not ariaPosInset.
    From 135bbbbb3ee645f694e3fc4978f492ee2df72ec3 Mon Sep 17 00:00:00 2001 From: James Craig Date: Thu, 3 May 2018 11:41:00 -0700 Subject: [PATCH 8/8] m. missed a section close, and minor prose updates. --- index.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index babcde459..a5fac918e 100644 --- a/index.html +++ b/index.html @@ -11100,8 +11100,10 @@

    Disambiguation Pattern

  • If all trusted dictionary sources list a single spelling of a compound word with no spaces or hyphens, only the first letter of the term is capitalized. For example, neither “place-holder” nor “place holder” are considered valid spellings of the term “placeholder,” so aria-placeholder becomes ariaPlaceholder with only the P capitalized.
  • There are currently no acronym-based ARIA attributes, but if future attributes include acronym usage, attempt to match existing DOM conventions (e.g. ID becomes Id).
  • +
    -

    Notes and Exceptions for Specific Attribute Names

    +

    IDL Attribute Name Notes or Exceptions

    +

    Any notes or exceptions for specific attribute names will be listed here.

    • ariaPosInSet: The aria-posinset attribute refers to an item's position in a set (two words: "in set") rather than the "inset" of an item from the beginning of the collection. Therefore the IDL attribute name is ariaPosInSet with the P, I, and second S capitalized, not ariaPosInset.