<?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>23377</bug_id>
          
          <creation_ts>2013-09-27 07:37:05 +0000</creation_ts>
          <short_desc>ARIA: Strong Native Semantics table should define implicit non-required state on form elements (Currently defines required state, but not the implicit inverse)</short_desc>
          <delta_ts>2014-05-08 21:40:08 +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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>CR</keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>23376</dependson>
          <blocked>23378</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="steve faulkner">faulkner.steve</reporter>
          <assigned_to name="steve faulkner">faulkner.steve</assigned_to>
          <cc>jcraig</cc>
    
    <cc>mike</cc>
    
    <cc>public-html-a11y</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>93933</commentid>
    <comment_count>0</comment_count>
    <who name="steve faulkner">faulkner.steve</who>
    <bug_when>2013-09-27 07:37:05 +0000</bug_when>
    <thetext>+++ This bug was initially created as a clone of Bug #23376 +++

@required is a Boolean attribute in HTML.
@aria-required is a &quot;true/false&quot; (boolean) attribute in ARIA.

The spec currently defines in the Strong Native Semantics table that:

input element that is required = The aria-required state set to &quot;true&quot;…
select element with a required attribute = The aria-required state set to &quot;true&quot;…
textarea element with a required attribute = The aria-required state set to &quot;true&quot;…

but since the HTML host language attribute is Boolean, the same elements *without* the required attribute defined are implicitly *not* required. Therefore, the strong native semantics table should also include:

input element that is not required = The aria-required state set to &quot;false&quot;…
select element without a required attribute = The aria-required state set to &quot;false&quot;…
textarea element without a required attribute = The aria-required state set to &quot;false&quot;…

Otherwise, the spec is implying that &quot;HTML true is in conflict with ARIA false&quot; but &quot;HTML false is not in conflict with ARIA true&quot;, and defining one-way conflict resolution does not make sense for a Boolean state like this.


Likewise:
Element that is disabled = The aria-disabled state set to &quot;true&quot;

So the table should also include:
Element that is not disabled = The aria-disabled state set to &quot;false&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93937</commentid>
    <comment_count>1</comment_count>
    <who name="github bugzilla bot">sideshowbarker+gitzilla</who>
    <bug_when>2013-09-27 08:55:54 +0000</bug_when>
    <thetext>Commit pushed to master at https://github.com/w3c/html

https://github.com/w3c/html/commit/ab7e3f79a055b6490f52b316283efec9f2d90440
explicitly allow aria-required

define an input or textarea without a required attribute is allowed to
have a aria-required attribute=&quot;true|false&quot;
see bug 23377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93938</commentid>
    <comment_count>2</comment_count>
    <who name="steve faulkner">faulkner.steve</who>
    <bug_when>2013-09-27 09:07:03 +0000</bug_when>
    <thetext>(In reply to steve faulkner from comment #0)
&gt; +++ This bug was initially created as a clone of Bug #23376 +++
&gt; 
&gt; @required is a Boolean attribute in HTML.
&gt; @aria-required is a &quot;true/false&quot; (boolean) attribute in ARIA.
&gt; 
&gt; The spec currently defines in the Strong Native Semantics table that:
&gt; 
&gt; input element that is required = The aria-required state set to &quot;true&quot;…
&gt; select element with a required attribute = The aria-required state set to
&gt; &quot;true&quot;…
&gt; textarea element with a required attribute = The aria-required state set to
&gt; &quot;true&quot;…
&gt; 
&gt; but since the HTML host language attribute is Boolean, the same elements
&gt; *without* the required attribute defined are implicitly *not* required.
&gt; Therefore, the strong native semantics table should also include:
&gt; 
&gt; input element that is not required = The aria-required state set to &quot;false&quot;…
&gt; select element without a required attribute = The aria-required state set to
&gt; &quot;false&quot;…
&gt; textarea element without a required attribute = The aria-required state set
&gt; to &quot;false&quot;…
&gt; 
&gt; Otherwise, the spec is implying that &quot;HTML true is in conflict with ARIA
&gt; false&quot; but &quot;HTML false is not in conflict with ARIA true&quot;, and defining
&gt; one-way conflict resolution does not make sense for a Boolean state like
&gt; this.
&gt; 
&gt; 
&gt; Likewise:
&gt; Element that is disabled = The aria-disabled state set to &quot;true&quot;
&gt; 
&gt; So the table should also include:
&gt; Element that is not disabled = The aria-disabled state set to &quot;false&quot;

Hi james, 

I think there are legitimate use cases for allowing aria-required on elements without the required attribute.

It is common practice to have a a control that is marked as required in text for example using an asterisk:

&lt;label&gt;name * &lt;input&gt;&lt;/label&gt;

It is not a requirement in HTML5 that this pattern must use the required attribute to mark the control as required, and there are reasons why an author may not want to use the required attribute such as they do not want the associated UI and behaviour that is implemented by some user agents for the required attribute. Thus in the example above providing the author with the means to convey the required state to acc APIs via aria-required will improve the accessibility of the pattern.

I have defined the use of aria-required on controls without the required attribute as allowed in the spec (see commit below)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93940</commentid>
    <comment_count>3</comment_count>
    <who name="github bugzilla bot">sideshowbarker+gitzilla</who>
    <bug_when>2013-09-27 09:31:20 +0000</bug_when>
    <thetext>Commit pushed to master at https://github.com/w3c/html

https://github.com/w3c/html/commit/7164e921de9185e122778a3cd22cb7e81fc171b5
added select as allowed to have aria-required

missed it before
see bug 23377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93955</commentid>
    <comment_count>4</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-09-27 17:26:02 +0000</bug_when>
    <thetext>(In reply to steve faulkner from comment #2)

&gt; I think there are legitimate use cases for allowing aria-required on
&gt; elements without the required attribute.
&gt; 
&gt; It is common practice to have a a control that is marked as required in text
&gt; for example using an asterisk:
&gt; 
&gt; &lt;label&gt;name * &lt;input&gt;&lt;/label&gt;
&gt; 
&gt; It is not a requirement in HTML5 that this pattern must use the required
&gt; attribute to mark the control as required, and there are reasons why an
&gt; author may not want to use the required attribute such as they do not want
&gt; the associated UI and behaviour that is implemented by some user agents for
&gt; the required attribute. Thus in the example above providing the author with
&gt; the means to convey the required state to acc APIs via aria-required will
&gt; improve the accessibility of the pattern.

I could accept the behavior you want, but as it&apos;s written in the spec, it conflicts with itself because @required is a Boolean attribute. You need to make either one of these changes:

1. Either define the &quot;false&quot; state of @required in the Strong Native Semantics table, where you currently have only the &quot;true&quot; state. (This would effectively mean @aria-required had no effect on form elements that accept @required.)

2. Move all the mentioned of @required and @aria-required from the Strong Native Semantics table to the implicit ARIA semantics. (This would allow the behavior you appear to desire and have outlined above.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93958</commentid>
    <comment_count>5</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-09-27 17:34:56 +0000</bug_when>
    <thetext>*** Bug 23376 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93996</commentid>
    <comment_count>6</comment_count>
    <who name="steve faulkner">faulkner.steve</who>
    <bug_when>2013-09-28 08:19:41 +0000</bug_when>
    <thetext>(In reply to James Craig from comment #4)
&gt; (In reply to steve faulkner from comment #2)
&gt; 
&gt; &gt; I think there are legitimate use cases for allowing aria-required on
&gt; &gt; elements without the required attribute.
&gt; &gt; 
&gt; &gt; It is common practice to have a a control that is marked as required in text
&gt; &gt; for example using an asterisk:
&gt; &gt; 
&gt; &gt; &lt;label&gt;name * &lt;input&gt;&lt;/label&gt;
&gt; &gt; 
&gt; &gt; It is not a requirement in HTML5 that this pattern must use the required
&gt; &gt; attribute to mark the control as required, and there are reasons why an
&gt; &gt; author may not want to use the required attribute such as they do not want
&gt; &gt; the associated UI and behaviour that is implemented by some user agents for
&gt; &gt; the required attribute. Thus in the example above providing the author with
&gt; &gt; the means to convey the required state to acc APIs via aria-required will
&gt; &gt; improve the accessibility of the pattern.
&gt; 
&gt; I could accept the behavior you want, but as it&apos;s written in the spec, it
&gt; conflicts with itself because @required is a Boolean attribute. You need to
&gt; make either one of these changes:
&gt; 
&gt; 1. Either define the &quot;false&quot; state of @required in the Strong Native
&gt; Semantics table, where you currently have only the &quot;true&quot; state. (This would
&gt; effectively mean @aria-required had no effect on form elements that accept
&gt; @required.)
&gt; 
&gt; 2. Move all the mentioned of @required and @aria-required from the Strong
&gt; Native Semantics table to the implicit ARIA semantics. (This would allow the
&gt; behavior you appear to desire and have outlined above.)

Hi james,

&gt; I could accept the behavior you want

Do you consider the use case i outlined is reasonable? 

I will follow you advice and move into implicit only table, but will keep restraint that when required is present aria-required, if specified, must be set to true. Sound OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94000</commentid>
    <comment_count>7</comment_count>
    <who name="github bugzilla bot">sideshowbarker+gitzilla</who>
    <bug_when>2013-09-28 18:48:40 +0000</bug_when>
    <thetext>Commit pushed to master at https://github.com/w3c/html

https://github.com/w3c/html/commit/4b4837be983f1c9ac3f0942b88401d2908665e1d
moved required from strong to implicit table

see bug 23377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94064</commentid>
    <comment_count>8</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-10-01 08:34:49 +0000</bug_when>
    <thetext>I&apos;m fine with that edit. Thanks Steve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94065</commentid>
    <comment_count>9</comment_count>
    <who name="steve faulkner">faulkner.steve</who>
    <bug_when>2013-10-01 08:41:05 +0000</bug_when>
    <thetext>(In reply to James Craig from comment #8)
&gt; I&apos;m fine with that edit. Thanks Steve.

EDITOR&apos;S RESPONSE: This is an Editor&apos;s Response to your comment. If you are
satisfied with this response, please change the state of this bug to CLOSED. If
you have additional information and would like the Editor to reconsider, please
reopen this bug. If you would like to escalate the issue to the full HTML
Working Group, please add the TrackerRequest keyword to this bug, and suggest
title and text for the Tracker Issue; or you may create a Tracker Issue
yourself, if you are able to do so. For more details, see this document:

   http://dev.w3.org/html5/decision-policy/decision-policy.html

Status: Accepted
Change Description: see comment 7
Rationale: agreed with commenter that the rules should be in the implicit semantics table</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98598</commentid>
    <comment_count>10</comment_count>
    <who name="github bugzilla bot">sideshowbarker+gitzilla</who>
    <bug_when>2014-01-16 15:11:02 +0000</bug_when>
    <thetext>Commits pushed to CR at https://github.com/w3c/html

https://github.com/w3c/html/commit/ab7e3f79a055b6490f52b316283efec9f2d90440
explicitly allow aria-required

https://github.com/w3c/html/commit/7164e921de9185e122778a3cd22cb7e81fc171b5
added select as allowed to have aria-required

https://github.com/w3c/html/commit/4b4837be983f1c9ac3f0942b88401d2908665e1d
moved required from strong to implicit table</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105465</commentid>
    <comment_count>11</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-05-08 17:55:40 +0000</bug_when>
    <thetext>*** Bug 23376 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105489</commentid>
    <comment_count>12</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-05-08 21:38:31 +0000</bug_when>
    <thetext>Continued in bug 25614.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>