<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>25614</bug_id>
          
          <creation_ts>2014-05-08 21:35:58 +0000</creation_ts>
          <short_desc>@required and @disabled need to be moved to the Strong native semantics table</short_desc>
          <delta_ts>2015-06-05 14:46:32 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>HTML WG</product>
          <component>HTML5 spec</component>
          <version>unspecified</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>MOVED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>a11y</keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Craig">jcraig</reporter>
          <assigned_to name="steve faulkner">faulkner.steve</assigned_to>
          <cc>jcraig</cc>
    
    <cc>lwatson</cc>
    
    <cc>mike</cc>
    
    <cc>public-html-admin</cc>
    
    <cc>public-html-wg-issue-tracking</cc>
          
          <qa_contact name="HTML WG Bugzilla archive list">public-html-bugzilla</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>105487</commentid>
    <comment_count>0</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-05-08 21:35:58 +0000</bug_when>
    <thetext>Follow-on to:
https://www.w3.org/Bugs/Public/show_bug.cgi?id=23377#c6

@required and @disabled need to be listed in the Strong native semantic table as they are the exact same semantic as @aria-required and @aria-disabled. If an author does not want the default style of html:*[required], he or she should override it with a CSS style block. If an author does not want the default handling of a form that contains elements with @required specified, he or she should fix it with a custom submit handler. 

As it is, we&apos;ve got conflicting boolean values that still need to be resolved by browsers heuristics. That&apos;s an anti-pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105488</commentid>
    <comment_count>1</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-05-08 21:37:24 +0000</bug_when>
    <thetext>(In reply to James Craig from comment #0)
&gt; If an author does not want the default style of
&gt; html:*[required], he or she should override it with a CSS style block. If an
&gt; author does not want the default handling of a form that contains elements
&gt; with @required specified, he or she should fix it with a custom submit
&gt; handler. 

Otherwise, if you don&apos;t want to do either of these things, don&apos;t use a native form field. Use &lt;div contenteditable role=&quot;textbox&quot; aria-required=&quot;true&quot;&gt; or something else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105644</commentid>
    <comment_count>2</comment_count>
    <who name="steve faulkner">faulkner.steve</who>
    <bug_when>2014-05-11 19:42:43 +0000</bug_when>
    <thetext>(In reply to James Craig from comment #0)
&gt; Follow-on to:
&gt; https://www.w3.org/Bugs/Public/show_bug.cgi?id=23377#c6
&gt; 
&gt; @required and @disabled need to be listed in the Strong native semantic
&gt; table as they are the exact same semantic as @aria-required and
&gt; @aria-disabled. If an author does not want the default style of
&gt; html:*[required], he or she should override it with a CSS style block. If an
&gt; author does not want the default handling of a form that contains elements
&gt; with @required specified, he or she should fix it with a custom submit
&gt; handler. 
&gt; 
&gt; As it is, we&apos;ve got conflicting boolean values that still need to be
&gt; resolved by browsers heuristics. That&apos;s an anti-pattern.

@disabled is in the strong semantics table. 

@aria-required is not as its false/absent state can be overridden by authors

I think this is sensible because there is a common pattern of declaring the required state of a control via the use of text/image/symbol 

name * &lt;input&gt;

name (required) &lt;input&gt;

name &lt;img alt=&quot;required&quot;&gt; &lt;input&gt;

Other considerations:

aria-required does not equal HTML5 required:

Setting required on a control sets the state of the control to required and invalid the equivalent of:

&lt;input aria-required=true aria-invalid=true&gt; 

Setting required invokes UI behaviour:
auto validation
auto display  of error message(s) 

The above can be suppressed via the use of the formnovalidate attribute [3]

Why would we want to force developers to add required to explicitly indicate to AT users that a particular control is required?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105704</commentid>
    <comment_count>3</comment_count>
    <who name="steve faulkner">faulkner.steve</who>
    <bug_when>2014-05-12 10:12:16 +0000</bug_when>
    <thetext>I can see an argument for moving

&apos;input, select or textarea element with a required attribute 
The aria-required state set to &quot;true&quot; 
If specified, the aria-required state must be set to &quot;true&quot;&apos; 

to the strong table as it can&apos;t be overridden 

leaving 

&apos;input, select or textarea element without a required attribute 	aria-required set to &quot;false&quot; 	If specified, the aria-required state set to &quot;true&quot; or &quot;false&quot;&apos; 

http://www.w3.org/html/wg/drafts/html/master/dom.html#sec-implicit-aria-semantics

in the implicit table as it can be overridden.

thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105804</commentid>
    <comment_count>4</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-05-13 02:12:40 +0000</bug_when>
    <thetext>(In reply to steve faulkner from comment #3)
&gt; I can see an argument for moving
&gt; 
&gt; &apos;input, select or textarea element with a required attribute 
&gt; The aria-required state set to &quot;true&quot; 
&gt; If specified, the aria-required state must be set to &quot;true&quot;&apos; 
&gt; 
&gt; to the strong table as it can&apos;t be overridden 
&gt; 
&gt; leaving 
&gt; 
&gt; &apos;input, select or textarea element without a required attribute 
&gt; aria-required set to &quot;false&quot; 	If specified, the aria-required state set to
&gt; &quot;true&quot; or &quot;false&quot;&apos; 

If you leave the second piece in, we get conflicts where HTML5 @required is false (implicit via missing boolean attribute), but @aria-required is true: &lt;input aria-required=&quot;true&quot;&gt; I understand the argument that this may be an HTML4 retrofit, and the author clearly intended it to be required, so I agree that the ARIA attr should win here. However, I think there should be an validation error if aria-required=&quot;true&quot; is defined and the required attribute is missing. Would you be amenable to that change?

Also...

Since the @disabled boolean attribute has been available longer, do you have any objection to including these two in the Strong table?

&apos;&apos;&apos;
input, select, or textarea element with a disabled attribute.
The aria-disabled state set to &quot;true&quot;.
If specified, the aria-disabled state must be set to &quot;true&quot;&apos;

input, select, or textarea element without a disabled attribute.
The aria-disabled state set to &quot;false&quot;.
If specified, the aria-disabled state must be set to &quot;false&quot;
&apos;&apos;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105819</commentid>
    <comment_count>5</comment_count>
    <who name="steve faulkner">faulkner.steve</who>
    <bug_when>2014-05-13 08:34:53 +0000</bug_when>
    <thetext>&gt;If you leave the second piece in, we get conflicts where HTML5 @required is &gt;false (implicit via missing boolean attribute)

the ARIA mapping tables is full of conflicts - authors can override many native accessibility semantics</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105820</commentid>
    <comment_count>6</comment_count>
    <who name="steve faulkner">faulkner.steve</who>
    <bug_when>2014-05-13 08:36:51 +0000</bug_when>
    <thetext>(In reply to James Craig from comment #4)

&gt; Also...
&gt; 
&gt; Since the @disabled boolean attribute has been available longer, do you have
&gt; any objection to including these two in the Strong table?
&gt; 
&gt; &apos;&apos;&apos;
&gt; input, select, or textarea element with a disabled attribute.
&gt; The aria-disabled state set to &quot;true&quot;.
&gt; If specified, the aria-disabled state must be set to &quot;true&quot;&apos;
&gt; 
&gt; input, select, or textarea element without a disabled attribute.
&gt; The aria-disabled state set to &quot;false&quot;.
&gt; If specified, the aria-disabled state must be set to &quot;false&quot;
&gt; &apos;&apos;&apos;

can do if you think it makes what is already there clearer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105864</commentid>
    <comment_count>7</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-05-13 16:20:57 +0000</bug_when>
    <thetext>(In reply to steve faulkner from comment #5)
&gt; &gt;If you leave the second piece in, we get conflicts where HTML5 @required is &gt;false (implicit via missing boolean attribute)
&gt; 
&gt; the ARIA mapping tables is full of conflicts - authors can override many
&gt; native accessibility semantics

But attributes with identical semantics (disabled, required, etc.) are the one place ARIA defers to the host language. I understand the conflict here. I just think we should discourage it with a validation error. Something like this:

&quot;&quot;&quot;
Error: aria-required=&quot;true&quot; is used on a form element that does not include the required attribute. Note: The input, select, and textarea elements support the boolean &apos;required&apos; attribute in HTML5. If the element is required, use required=&quot;&quot; in addition to aria-required=&quot;true&quot;.
&quot;&quot;&quot;

Mike Smith, since you work on the validator, what do you think of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105865</commentid>
    <comment_count>8</comment_count>
    <who name="steve faulkner">faulkner.steve</who>
    <bug_when>2014-05-13 16:30:36 +0000</bug_when>
    <thetext>(In reply to James Craig from comment #7)
&gt; (In reply to steve faulkner from comment #5)
&gt; &gt; &gt;If you leave the second piece in, we get conflicts where HTML5 @required is &gt;false (implicit via missing boolean attribute)
&gt; &gt; 
&gt; &gt; the ARIA mapping tables is full of conflicts - authors can override many
&gt; &gt; native accessibility semantics
&gt; 
&gt; But attributes with identical semantics (disabled, required, etc.) are the
&gt; one place ARIA defers to the host language. I understand the conflict here.


As I pointed out the semantics are not identical in Comment 2

&gt;aria-required does not equal HTML5 required:

&gt;Setting required on a control sets the state of the control to required and &gt;invalid the equivalent of:

&gt; &lt;input aria-required=true aria-invalid=true&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105866</commentid>
    <comment_count>9</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-05-13 16:34:04 +0000</bug_when>
    <thetext>(In reply to steve faulkner from comment #6)
&gt; (In reply to James Craig from comment #4)
&gt; 
&gt; &gt; Also...
&gt; &gt; 
&gt; &gt; Since the @disabled boolean attribute has been available longer, do you have
&gt; &gt; any objection to including these two in the Strong table?
&gt; &gt; 
&gt; &gt; &apos;&apos;&apos;
&gt; &gt; input, select, or textarea element with a disabled attribute.
&gt; &gt; The aria-disabled state set to &quot;true&quot;.
&gt; &gt; If specified, the aria-disabled state must be set to &quot;true&quot;&apos;
&gt; &gt; 
&gt; &gt; input, select, or textarea element without a disabled attribute.
&gt; &gt; The aria-disabled state set to &quot;false&quot;.
&gt; &gt; If specified, the aria-disabled state must be set to &quot;false&quot;
&gt; &gt; &apos;&apos;&apos;
&gt; 
&gt; can do if you think it makes what is already there clearer


Are you talking about this one row or is there something more I missed?

&gt; Element that is disabled. The aria-disabled state set to &quot;true&quot;.

Yes, I think it&apos;s more clear because it would allow validation errors on examples like this: &lt;input aria-disabled=&quot;true&quot;&gt; (missing @disabled). Seems like you could also use this format if you preferred.

&quot;&quot;&quot;
Element that is disabled. The aria-disabled state set to &quot;true&quot;. If specified, the aria-disabled state must be set to &quot;true&quot;.

Element that is not disabled. The aria-disabled state set to &quot;false&quot;. If specified, the aria-disabled state must be set to &quot;false&quot;.
&quot;&quot;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105867</commentid>
    <comment_count>10</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-05-13 16:38:58 +0000</bug_when>
    <thetext>(In reply to steve faulkner from comment #2)

&gt; Why would we want to force developers to add required to explicitly indicate
&gt; to AT users that a particular control is required?

To mitigate the error cases where the author has remembered to update one attribute but forgotten the other. I developers forget to update their @aria-required, @aria-invalid, and even @aria-checked states frequently. We can&apos;t stop them from doing this, but we can encourage them to keep the native and ARIA values in sync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120737</commentid>
    <comment_count>11</comment_count>
    <who name="steve faulkner">faulkner.steve</who>
    <bug_when>2015-06-05 14:46:32 +0000</bug_when>
    <thetext>mappings moved to html acc API spec. http://www.w3.org/TR/html-aam-1.0/</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>