[html5] r8568 - [agiow] (1) requestAutocomplete() Fixing https://www.w3.org/Bugs/Public/show_bug [...]

whatwg at whatwg.org whatwg at whatwg.org
Wed Apr 9 14:54:21 PDT 2014


Author: ianh
Date: 2014-04-09 14:54:18 -0700 (Wed, 09 Apr 2014)
New Revision: 8568

Modified:
   complete.html
   index
   source
Log:
[agiow] (1) requestAutocomplete()
Fixing https://www.w3.org/Bugs/Public/show_bug.cgi?id=22701
Affected topics: DOM APIs, HTML

Modified: complete.html
===================================================================
--- complete.html	2014-04-07 21:52:09 UTC (rev 8567)
+++ complete.html	2014-04-09 21:54:18 UTC (rev 8568)
@@ -298,7 +298,7 @@
 
   <header class=head id=head><p><a href=http://www.whatwg.org/ class=logo><img width=101 src=/images/logo alt=WHATWG height=101></a></p>
    <hgroup><h1 class=allcaps>HTML</h1>
-    <h2 class="no-num no-toc">Living Standard — Last Updated 7 April 2014</h2>
+    <h2 class="no-num no-toc">Living Standard — Last Updated 9 April 2014</h2>
    </hgroup><dl><dt><strong>Web developer edition:</strong></dt>
     <dd><strong><a href=http://developers.whatwg.org/>http://developers.whatwg.org/</a></strong></dd>
     <dt>Multiple-page version:</dt>
@@ -790,10 +790,16 @@
        <li><a href=#limiting-user-input-length:-the-maxlength-attribute><span class=secno>4.10.19.3 </span>Limiting user input length: the <code title=attr-fe-maxlength>maxlength</code> attribute</a></li>
        <li><a href=#setting-minimum-input-length-requirements:-the-minlength-attribute><span class=secno>4.10.19.4 </span>Setting minimum input length requirements: the <code title=attr-fe-minlength>minlength</code> attribute</a></li>
        <li><a href=#enabling-and-disabling-form-controls:-the-disabled-attribute><span class=secno>4.10.19.5 </span>Enabling and disabling form controls: the <code title=attr-fe-disabled>disabled</code> attribute</a></li>
-       <li><a href=#form-submission-0><span class=secno>4.10.19.6 </span>Form submission</a></li>
-       <li><a href=#autofocusing-a-form-control:-the-autofocus-attribute><span class=secno>4.10.19.7 </span>Autofocusing a form control: the <code title=attr-fe-autofocus>autofocus</code> attribute</a></li>
-       <li><a href=#input-modalities:-the-inputmode-attribute><span class=secno>4.10.19.8 </span>Input modalities: the <code title=attr-fe-inputmode>inputmode</code> attribute</a></li>
-       <li><a href=#autofilling-form-controls:-the-autocomplete-attribute><span class=secno>4.10.19.9 </span>Autofilling form controls: the <code title=attr-fe-autocomplete>autocomplete</code> attribute</a></ol></li>
+       <li><a href=#form-submission-0><span class=secno>4.10.19.6 </span>Form submission</a>
+        <ol>
+         <li><a href=#autofocusing-a-form-control:-the-autofocus-attribute><span class=secno>4.10.19.6.1 </span>Autofocusing a form control: the <code title=attr-fe-autofocus>autofocus</code> attribute</a></ol></li>
+       <li><a href=#input-modalities:-the-inputmode-attribute><span class=secno>4.10.19.7 </span>Input modalities: the <code title=attr-fe-inputmode>inputmode</code> attribute</a></li>
+       <li><a href=#autofill><span class=secno>4.10.19.8 </span>Autofill</a>
+        <ol>
+         <li><a href=#autofilling-form-controls:-the-autocomplete-attribute><span class=secno>4.10.19.8.1 </span>Autofilling form controls: the <code title=attr-fe-autocomplete>autocomplete</code> attribute</a></li>
+         <li><a href=#processing-model-2><span class=secno>4.10.19.8.2 </span>Processing model</a></li>
+         <li><a href=#user-interface-for-bulk-autofill><span class=secno>4.10.19.8.3 </span>User interface for bulk autofill</a></li>
+         <li><a href=#the-autocompleteerrorevent-interface><span class=secno>4.10.19.8.4 </span>The <code>AutocompleteErrorEvent</code> interface</a></ol></ol></li>
      <li><a href=#textFieldSelection><span class=secno>4.10.20 </span>APIs for the text field selections</a></li>
      <li><a href=#constraints><span class=secno>4.10.21 </span>Constraints</a>
       <ol>
@@ -821,7 +827,7 @@
      <li><a href=#context-menus><span class=secno>4.11.5 </span>Context menus</a>
       <ol>
        <li><a href=#declaring-a-context-menu><span class=secno>4.11.5.1 </span>Declaring a context menu</a></li>
-       <li><a href=#processing-model-2><span class=secno>4.11.5.2 </span>Processing model</a></li>
+       <li><a href=#processing-model-3><span class=secno>4.11.5.2 </span>Processing model</a></li>
        <li><a href=#the-relatedevent-interfaces><span class=secno>4.11.5.3 </span>The <code>RelatedEvent</code> interfaces</a></ol></li>
      <li><a href=#commands><span class=secno>4.11.6 </span>Commands</a>
       <ol>
@@ -1014,7 +1020,7 @@
     <ol>
      <li><a href=#introduction-6><span class=secno>7.1.1 </span>Introduction</a></li>
      <li><a href=#enabling-and-disabling-scripting><span class=secno>7.1.2 </span>Enabling and disabling scripting</a></li>
-     <li><a href=#processing-model-3><span class=secno>7.1.3 </span>Processing model</a>
+     <li><a href=#processing-model-4><span class=secno>7.1.3 </span>Processing model</a>
       <ol>
        <li><a href=#definitions-0><span class=secno>7.1.3.1 </span>Definitions</a></li>
        <li><a href=#script-settings-for-browsing-contexts><span class=secno>7.1.3.2 </span>Script settings for browsing contexts</a></li>
@@ -1028,7 +1034,7 @@
      <li><a href=#event-loops><span class=secno>7.1.4 </span>Event loops</a>
       <ol>
        <li><a href=#definitions-1><span class=secno>7.1.4.1 </span>Definitions</a></li>
-       <li><a href=#processing-model-4><span class=secno>7.1.4.2 </span>Processing model</a></li>
+       <li><a href=#processing-model-5><span class=secno>7.1.4.2 </span>Processing model</a></li>
        <li><a href=#generic-task-sources><span class=secno>7.1.4.3 </span>Generic task sources</a></ol></li>
      <li><a href=#events><span class=secno>7.1.5 </span>Events</a>
       <ol>
@@ -1075,14 +1081,14 @@
      <li><a href=#introduction-7><span class=secno>8.4.1 </span>Introduction</a></li>
      <li><a href=#data-model><span class=secno>8.4.2 </span>Data model</a></li>
      <li><a href=#the-tabindex-attribute><span class=secno>8.4.3 </span>The <code title=attr-tabindex>tabindex</code> attribute</a></li>
-     <li><a href=#processing-model-5><span class=secno>8.4.4 </span>Processing model</a></li>
+     <li><a href=#processing-model-6><span class=secno>8.4.4 </span>Processing model</a></li>
      <li><a href=#sequential-focus-navigation><span class=secno>8.4.5 </span>Sequential focus navigation</a></li>
      <li><a href=#focus-management-apis><span class=secno>8.4.6 </span>Focus management APIs</a></ol></li>
    <li><a href=#assigning-keyboard-shortcuts><span class=secno>8.5 </span>Assigning keyboard shortcuts</a>
     <ol>
      <li><a href=#introduction-8><span class=secno>8.5.1 </span>Introduction</a></li>
      <li><a href=#the-accesskey-attribute><span class=secno>8.5.2 </span>The <code>accesskey</code> attribute</a></li>
-     <li><a href=#processing-model-6><span class=secno>8.5.3 </span>Processing model</a></ol></li>
+     <li><a href=#processing-model-7><span class=secno>8.5.3 </span>Processing model</a></ol></li>
    <li><a href=#editing-0><span class=secno>8.6 </span>Editing</a>
     <ol>
      <li><a href=#contenteditable><span class=secno>8.6.1 </span>Making document regions editable: The <code title=attr-contenteditable>contenteditable</code> content attribute</a></li>
@@ -1111,7 +1117,7 @@
     <ol>
      <li><a href=#server-sent-events-intro><span class=secno>9.2.1 </span>Introduction</a></li>
      <li><a href=#the-eventsource-interface><span class=secno>9.2.2 </span>The <code>EventSource</code> interface</a></li>
-     <li><a href=#processing-model-7><span class=secno>9.2.3 </span>Processing model</a></li>
+     <li><a href=#processing-model-8><span class=secno>9.2.3 </span>Processing model</a></li>
      <li><a href=#parsing-an-event-stream><span class=secno>9.2.4 </span>Parsing an event stream</a></li>
      <li><a href=#event-stream-interpretation><span class=secno>9.2.5 </span>Interpreting an event stream</a></li>
      <li><a href=#authoring-notes><span class=secno>9.2.6 </span>Authoring notes</a></li>
@@ -1177,7 +1183,7 @@
        <li><a href=#shared-workers-and-the-sharedworkerglobalscope-interface><span class=secno>10.2.1.3 </span>Shared workers and the <code>SharedWorkerGlobalScope</code> interface</a></ol></li>
      <li><a href=#worker-event-loop><span class=secno>10.2.2 </span>The event loop</a></li>
      <li><a href="#the-worker's-lifetime"><span class=secno>10.2.3 </span>The worker's lifetime</a></li>
-     <li><a href=#processing-model-8><span class=secno>10.2.4 </span>Processing model</a></li>
+     <li><a href=#processing-model-9><span class=secno>10.2.4 </span>Processing model</a></li>
      <li><a href=#runtime-script-errors-0><span class=secno>10.2.5 </span>Runtime script errors</a></li>
      <li><a href=#creating-workers><span class=secno>10.2.6 </span>Creating workers</a>
       <ol>
@@ -10391,6 +10397,8 @@
   <hr><p>The following <a href=#event-handler-content-attributes>event handler content attributes</a> may be specified on any <a href=#html-elements title="HTML elements">HTML element</a>:</p>
 
   <ul class=brief><li><code title=handler-onabort><a href=#handler-onabort>onabort</a></code></li>
+   <li><code title=handler-onautocomplete><a href=#handler-onautocomplete>onautocomplete</a></code></li>
+   <li><code title=handler-onautocompleteerror><a href=#handler-onautocompleteerror>onautocompleteerror</a></code></li>
    <li><code title=handler-onblur><a href=#handler-onblur>onblur</a></code>*</li>
    <li><code title=handler-oncancel><a href=#handler-oncancel>oncancel</a></code></li>
    <li><code title=handler-oncanplay><a href=#handler-oncanplay>oncanplay</a></code></li>
@@ -38113,6 +38121,8 @@
   void <a href=#dom-form-reset title=dom-form-reset>reset</a>();
   boolean <a href=#dom-form-checkvalidity title=dom-form-checkValidity>checkValidity</a>();
   boolean <a href=#dom-form-reportvalidity title=dom-form-reportValidity>reportValidity</a>();
+
+  void <a href=#dom-form-requestautocomplete title=dom-form-requestAutocomplete>requestAutocomplete</a>();
 };</pre>
    </dd>
   </dl><!--TOPIC:HTML--><p>The <code><a href=#the-form-element>form</a></code> element <a href=#represents>represents</a> a collection of <a href=#form-associated-element title="form-associated element">form-associated elements</a>, some of which can represent
@@ -38220,12 +38230,29 @@
 
    </dd>
 
+   <dt><var title="">form</var> . <code title=dom-form-requestAutocomplete><a href=#dom-form-requestautocomplete>requestAutocomplete</a></code>()</dt>
+
+   <dd>
+
+    <p>Triggers a user-agent-specific asynchronous user interface to help the user fill in any
+    fields that have an <a href=#autofill-field-name>autofill field name</a> other than "<code title=attr-fe-autocomplete-on><a href=#attr-fe-autocomplete-on>on</a></code>" or "<code title=attr-fe-autocomplete-off><a href=#attr-fe-autocomplete-off>off</a></code>".</p>
+
+    <p>The <code><a href=#the-form-element>form</a></code> element will subsequently receive an event, either <code title=event-autocomplete><a href=#event-autocomplete>autocomplete</a></code>, indicating that the fields have been prefilled,
+    or <code title=event-autocompleteerror><a href=#event-autocompleteerror>autocompleteerror</a></code> (using the
+    <code><a href=#autocompleteerrorevent>AutocompleteErrorEvent</a></code> interface), indicating that there was some problem (the
+    general class of problem is described by the <code title=dom-AutocompleteErrorEvent-reason><a href=#dom-autocompleteerrorevent-reason>reason</a></code> IDL attribute on the event).</p>
+
+   </dd>
+
   </dl><div class=impl>
 
   <p>The <dfn id=dom-form-autocomplete title=dom-form-autocomplete><code>autocomplete</code></dfn> IDL attribute must
   <a href=#reflect>reflect</a> the content attribute of the same name, <a href=#limited-to-only-known-values>limited to only known
   values</a>.</p>
 
+  <p>The <code title=dom-form-requestAutocomplete><a href=#dom-form-requestautocomplete>requestAutocomplete()</a></code> method is part of
+  the <a href=#attr-fe-autocomplete title=attr-fe-autocomplete>autofill mechanism</a>.</p>
+
   <p>The <dfn id=dom-form-name title=dom-form-name><code>name</code></dfn> IDL attribute must <a href=#reflect>reflect</a>
   the content attribute of the same name.</p>
 
@@ -47697,7 +47724,7 @@
   </div>
 
 
-  <h5 id=autofocusing-a-form-control:-the-autofocus-attribute><span class=secno>4.10.19.7 </span>Autofocusing a form control: the <code title=attr-fe-autofocus><a href=#attr-fe-autofocus>autofocus</a></code> attribute</h5>
+  <h6 id=autofocusing-a-form-control:-the-autofocus-attribute><span class=secno>4.10.19.6.1 </span>Autofocusing a form control: the <code title=attr-fe-autofocus><a href=#attr-fe-autofocus>autofocus</a></code> attribute</h6>
 
   <!-- v2: Apply this to contentEditable elements -->
 
@@ -47777,7 +47804,7 @@
   </div>
 
 
-  <h5 id=input-modalities:-the-inputmode-attribute><span class=secno>4.10.19.8 </span>Input modalities: the <code title=attr-fe-inputmode><a href=#attr-fe-inputmode>inputmode</a></code> attribute</h5>
+  <h5 id=input-modalities:-the-inputmode-attribute><span class=secno>4.10.19.7 </span>Input modalities: the <code title=attr-fe-inputmode><a href=#attr-fe-inputmode>inputmode</a></code> attribute</h5>
 
   <!-- v2: Apply this to contentEditable elements -->
 
@@ -47921,8 +47948,10 @@
   </div>
 
 
-  <h5 id=autofilling-form-controls:-the-autocomplete-attribute><span class=secno>4.10.19.9 </span>Autofilling form controls: the <code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code> attribute</h5>
+  <h5 id=autofill><span class=secno>4.10.19.8 </span>Autofill</h5>
 
+  <h6 id=autofilling-form-controls:-the-autocomplete-attribute><span class=secno>4.10.19.8.1 </span>Autofilling form controls: the <code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code> attribute</h6>
+
   <p>User agents sometimes have features for helping users fill forms in, for example prefilling the
   user's address based on earlier user input. The <dfn id=attr-fe-autocomplete title=attr-fe-autocomplete><code>autocomplete</code></dfn> content attribute can be used to hint
   to the user agent how to, or indeed whether to, provide such a feature.</p>
@@ -48428,8 +48457,11 @@
   value corresponding to the state of the element's <a href=#form-owner>form owner</a>'s <code title=attr-form-autocomplete><a href=#attr-form-autocomplete>autocomplete</a></code> attribute is used instead (either "<code title=attr-fe-autocomplete-on><a href=#attr-fe-autocomplete-on>on</a></code>" or "<code title=attr-fe-autocomplete-off><a href=#attr-fe-autocomplete-off>off</a></code>"). If there is no <a href=#form-owner>form owner</a>, then the
   value "<code title=attr-fe-autocomplete-on><a href=#attr-fe-autocomplete-on>on</a></code>" is used.</p>
 
+
   <div class=impl>
 
+  <h6 id=processing-model-2><span class=secno>4.10.19.8.2 </span>Processing model</h6>
+
   <p>Each <code><a href=#the-input-element>input</a></code>, <code><a href=#the-select-element>select</a></code>, and <code><a href=#the-textarea-element>textarea</a></code> element has an
   <dfn id=autofill-hint-set>autofill hint set</dfn>, an <dfn id=autofill-scope>autofill scope</dfn>, an <dfn id=autofill-field-name>autofill field name</dfn>, and
   an <dfn id=idl-exposed-autofill-value>IDL-exposed autofill value</dfn>.</p>
@@ -48829,7 +48861,8 @@
   however, for address-related form controls whose <a href=#autofill-hint-set>autofill hint set</a> does not contain
   either keyword.</p>
 
-  <p>When the user agent autofills form controls, elements with the same <a href=#form-owner>form owner</a> and
+<!--CLEANUP-->
+  <p>When the user agent <dfn id=concept-fe-autofill title=concept-fe-autofill>autofills form controls</dfn>, elements with the same <a href=#form-owner>form owner</a> and
   the same <a href=#autofill-scope>autofill scope</a> must use data relating to the same person, address, payment
   instrument, and contact details. <span id=autofill-country title="">When a user agent autofills
   "<code title=attr-fe-autocomplete-country><a href=#attr-fe-autocomplete-country>country</a></code>" and "<code title=attr-fe-autocomplete-country-name><a href=#attr-fe-autocomplete-country-name>country-name</a></code>" fields with the same <a href=#form-owner>form
@@ -48861,11 +48894,11 @@
 
   <p>A user agent prefilling a form control's <a href=#concept-fe-value title=concept-fe-value>value</a> must not
   cause that control to <a href=#suffering-from-a-type-mismatch title="suffering from a type mismatch">suffer from a type
-  mismatch</a>, <a href=#suffering-from-a-pattern-mismatch title="suffering from a pattern mismatch">suffer from a pattern
   mismatch</a>, <a href=#suffering-from-being-too-long title="suffering from being too long">suffer from being too long</a>,
   <a href=#suffering-from-being-too-short title="suffering from being too short">suffer from being too short</a>, <a href=#suffering-from-an-underflow title="suffering from an underflow">suffer from an underflow</a>, <a href=#suffering-from-an-overflow title="suffering from
   an overflow">suffer from an overflow</a>, or <a href=#suffering-from-a-step-mismatch title="suffering from a step
-  mismatch">suffer from a step mismatch</a>. Where possible given the control's constraints, user
+  mismatch">suffer from a step mismatch</a>. Except when <a href=#concept-fe-autofill title=concept-fe-autofill>autofilling</a> for <code title=dom-form-requestAutocomplete><a href=#dom-form-requestautocomplete>requestAutocomplete()</a></code>, a user agent prefilling a form
+  control's <a href=#concept-fe-value title=concept-fe-value>value</a> must not cause that control to <a href=#suffering-from-a-pattern-mismatch title="suffering from a pattern mismatch">suffer from a pattern mismatch</a> either. Where possible given the control's constraints, user
   agents must use the format given as canonical in the aforementioned table. Where it's not possible
   for the canonical format to be used, user agents should use heuristics to attempt to convert
   values so that they can be used.</p>
@@ -48945,7 +48978,228 @@
   </div>
 
 
+  <div class=impl>
 
+  <h6 id=user-interface-for-bulk-autofill><span class=secno>4.10.19.8.3 </span>User interface for bulk autofill</h6>
+
+  <p>When the <dfn id=dom-form-requestautocomplete title=dom-form-requestAutocomplete><code>requestAutocomplete()</code></dfn>
+  method on a <code><a href=#the-form-element>form</a></code> element is invoked, the user agent must run the following steps:</p>
+
+  <ol><li><p>Let <var title="">form</var> be the element on which the method was invoked.</li>
+
+   <li>
+
+    <p>If any of the following conditions are met, then <a href=#queue-a-task>queue a task</a> to <a href=#fail-the-autofill-request>fail the
+    autofill request</a> on <var title="">form</var> with the reason "<code title=dom-AutocompleteErrorReason-disabled><a href=#dom-autocompleteerrorreason-disabled>disabled</a></code>", and abort these steps:</p>
+
+    <ul><li><p>the algorithm is not <a href=#allowed-to-show-a-popup>allowed to show a popup</a></li>
+
+     <li><p><var title="">form</var> is not <a href=#in-a-document>in a <code>Document</code></a></li>
+
+     <li><p><var title="">form</var>'s <code><a href=#document>Document</a></code> is not <a href=#fully-active>fully
+     active</a></li>
+
+     <li><p><var title="">form</var>'s <code title=attr-form-autocomplete><a href=#attr-form-autocomplete>autocomplete</a></code>
+     attribute is in the <a href=#attr-form-autocomplete-off-state title=attr-form-autocomplete-off-state>off</a> state</li>
+
+     <li><p>the user has disabled this feature for this <var title="">form</var>'s
+     <code><a href=#document>Document</a></code>'s <a href=#origin>origin</a></li>
+
+     <li><p>the user agent does not support this <var title="">form</var>'s fields</li>
+
+     <li><p>the <var title="">form</var> was obtained via unencrypted channels and the user agent
+     does not support autofill in such situations</li>
+
+     <li><p>another instance of this algorithm is already being run for <var title="">form</var></li>
+
+    </ul><p class=note>User agents are encouraged to log the precise cause in a developer console, to
+    aid debugging.</p>
+
+   </li>
+
+   <li><p>Let <var title="">pending autofills</var> be an initially empty list of <a href=#category-submit title=category-submit>submittable elements</a>, each annotated with a string known as the
+   <i>original autocomplete value</i>.</li>
+
+   <li>
+
+    <p>For each element that matches the following criteria, add the element to <var title="">pending autofills</var>, with the <i>original autocomplete value</i> annotation being
+    the value of the element's <code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code>
+    attribute:</p>
+
+    <ul><li><p>the element's <a href=#form-owner>form owner</a> is <var title="">form</var></li>
+
+     <li><p>the element is <i title=concept-fe-mutable><a href=#concept-fe-mutable>mutable</a></i></li>
+
+     <li><p>the element is an <code><a href=#the-input-element>input</a></code> element to which the <code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code> attribute currently <a href=#concept-input-apply title=concept-input-apply>applies</a>, or, the element is a <code><a href=#the-textarea-element>textarea</a></code>
+     element, or, the element is a <code><a href=#the-select-element>select</a></code> element</li>
+
+     <li><p>the element's <a href=#autofill-field-name>autofill field name</a> is neither "<code title=attr-fe-autocomplete-off><a href=#attr-fe-autocomplete-off>off</a></code>" nor "<code title=attr-fe-autocomplete-on><a href=#attr-fe-autocomplete-on>on</a></code>"</li>
+
+    </ul></li>
+
+   <li><p>Return, but continue running these steps asynchronously.</li>
+
+   <li><p>Provide an interface for the user to efficiently fill in some or all of the fields listed
+   in <var title="">pending autofills</var>. Await the user's input.</li>
+
+   <li>
+
+    <p><a href=#queue-a-task>Queue a task</a> to run the following steps:</p>
+
+    <ol><li>
+
+      <p>If any of the following conditions are met, then <a href=#fail-the-autofill-request>fail the autofill request</a> on
+      <var title="">form</var> with the reason "<code title=dom-AutocompleteErrorReason-disabled><a href=#dom-autocompleteerrorreason-disabled>disabled</a></code>", and abort these steps:</p>
+
+      <ul><li><p><var title="">form</var> is no longer <a href=#in-a-document>in a <code>Document</code></a></li>
+
+       <li><p><var title="">form</var>'s <code><a href=#document>Document</a></code> is no longer <a href=#fully-active>fully
+       active</a></li>
+
+       <li><p><var title="">form</var>'s <code title=attr-form-autocomplete><a href=#attr-form-autocomplete>autocomplete</a></code>
+       attribute is now in the <a href=#attr-form-autocomplete-off-state title=attr-form-autocomplete-off-state>off</a>
+       state</li>
+
+      </ul><p class=note>Again, user agents are encouraged to log the precise cause in a developer
+      console, to aid debugging.</p>
+
+     </li>
+
+     <li><p>If the user canceled the operation, <a href=#fail-the-autofill-request>fail the autofill request</a> on <var title="">form</var> with the reason "<code title=dom-AutocompleteErrorReason-cancel><a href=#dom-autocompleteerrorreason-cancel>cancel</a></code>", and abort these steps.</li>
+
+     <li>
+
+      <p>For each element in <var title="">pending autofills</var>, run the following steps:</p>
+
+      <ol><li><p>Let <var title="">candidate</var> be the element in question.</li>
+
+       <li><p>Let <var title="">old autocomplete value</var> be the <i>original autocomplete
+       value</i> annotation associated with <var title="">candidate</var> in <var title="">pending
+       autofills</var>.</li>
+
+       <li>
+
+        <p>If all of the following conditions are met, then <a href=#concept-fe-autofill title=concept-fe-autofill>autofill</a> <var title="">candidate</var>:</p>
+
+        <ul><li><p><var title="">candidate</var>'s <a href=#form-owner>form owner</a> is <var title="">form</var></li>
+
+         <li><p><var title="">candidate</var> is still <i title=concept-fe-mutable><a href=#concept-fe-mutable>mutable</a></i></li>
+
+         <li><p><var title="">candidate</var> is an <code><a href=#the-input-element>input</a></code> element to which the <code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code> attribute still <a href=#concept-input-apply title=concept-input-apply>applies</a>, or, <var title="">candidate</var> is a
+         <code><a href=#the-textarea-element>textarea</a></code> element, or, <var title="">candidate</var> is a <code><a href=#the-select-element>select</a></code>
+         element</li>
+
+         <li><p><var title="">candidate</var>'s <a href=#autofill-field-name>autofill field name</a> is still equal to
+         <var title="">old autocomplete value</var></li>
+
+         <li><p>the user provided a value to autofill <var title="">candidate</var></li>
+
+        </ul></li>
+
+      </ol></li>
+
+     <li>
+
+      <p><a href=#statically-validate-the-constraints>Statically validate the constraints</a> of <var title="">form</var>. If the
+      result was negative, then <a href=#fail-the-autofill-request>fail the autofill request</a> on <var title="">form</var>
+      with the reason "<code title=dom-AutocompleteErrorReason-invalid><a href=#dom-autocompleteerrorreason-invalid>invalid</a></code>", and abort
+      these steps.</p>
+
+      <p class=note><a href=#statically-validate-the-constraints title="statically validate the constraints">Statically validating the
+      constraints</a> of a <code><a href=#the-form-element>form</a></code> involves firing <code title=event-invalid><a href=#event-invalid>invalid</a></code> events to each control that does not <a href=#concept-fv-valid title=concept-fv-valid>satisfy its contraints</a>.</p>
+
+     </li>
+
+     <li><p><a href=#fire-a-simple-event>Fire a simple event</a> named <code title=event-autocomplete><a href=#event-autocomplete>autocomplete</a></code> at <var title="">form</var>.</li>
+
+    </ol></li>
+
+  </ol><p>When the user agent is required to <dfn id=fail-the-autofill-request>fail the autofill request</dfn> on a <code><a href=#the-form-element>form</a></code>
+  element <var title="">target</var> with a reason <var title="">reason</var>, the user agent must
+  dispatch an event that uses the <code><a href=#autocompleteerrorevent>AutocompleteErrorEvent</a></code> interface, with the event type
+  <code title="">autocompleteerror</code>, which does not bubble, is not cancelable, has no default
+  action, has its <code title=dom-AutocompleteErrorEvent-reason><a href=#dom-autocompleteerrorevent-reason>reason</a></code> attribute set to
+  <var title="">reason</var>, and which is <a href=#concept-events-trusted title=concept-events-trusted>trusted</a>, at
+  <var title="">target</var>.</p>
+
+  <p>The <a href=#task-source>task source</a> for the <a href=#concept-task title=concept-task>tasks</a> mentioned in this
+  section is the <a href=#dom-manipulation-task-source>DOM manipulation task source</a>.</p>
+
+  </div>
+
+
+  <h6 id=the-autocompleteerrorevent-interface><span class=secno>4.10.19.8.4 </span>The <code><a href=#autocompleteerrorevent>AutocompleteErrorEvent</a></code> interface</h6>
+
+  <pre class=idl>enum <dfn id=autocompleteerrorreason>AutocompleteErrorReason</dfn> { "" /* <a href=#dom-autocompleteerrorreason-none title=dom-AutocompleteErrorReason-none>empty string</a> */, "<a href=#dom-autocompleteerrorreason-cancel title=dom-AutocompleteErrorReason-cancel>cancel</a>", "<a href=#dom-autocompleteerrorreason-disabled title=dom-AutocompleteErrorReason-disabled>disabled</a>", "<a href=#dom-autocompleteerrorreason-invalid title=dom-AutocompleteErrorReason-invalid>invalid</a>" };
+
+[Constructor(DOMString type, optional <a href=#autocompleteerroreventinit>AutocompleteErrorEventInit</a> eventInitDict)]
+interface <dfn id=autocompleteerrorevent>AutocompleteErrorEvent</dfn> : <a href=#event>Event</a> {
+  readonly attribute <a href=#autocompleteerrorreason>AutocompleteErrorReason</a> <a href=#dom-autocompleteerrorevent-reason title=dom-AutocompleteErrorEvent-reason>reason</a>;
+};
+
+dictionary <dfn id=autocompleteerroreventinit>AutocompleteErrorEventInit</dfn> : <a href=#eventinit>EventInit</a> {
+  <a href=#autocompleteerrorreason>AutocompleteErrorReason</a> reason;
+};</pre>
+
+  <dl class=domintro><dt><var title="">event</var> . <code title=dom-AutocompleteErrorEvent-reason><a href=#dom-autocompleteerrorevent-reason>reason</a></code></dt>
+
+   <dd>
+
+    <p>For the <code title=event-autocompleteerror><a href=#event-autocompleteerror>autocompleteerror</a></code> event, returns the
+    general reason for the failure of the <code title=dom-form-requestAutocomplete><a href=#dom-form-requestautocomplete>requestAutocomplete()</a></code> method, from the list
+    below.</p>
+
+   </dd>
+
+  </dl><p>The defined reason codes are:
+
+  <dl><dt>"<dfn id=dom-autocompleteerrorreason-none title=dom-AutocompleteErrorReason-none><code></code></dfn>" (the empty string)</dt>
+
+   <dd><p>Reason is unknown.</dd>
+
+   <dt>"<dfn id=dom-autocompleteerrorreason-cancel title=dom-AutocompleteErrorReason-cancel><code>cancel</code></dfn>"</dt>
+
+   <dd><p>The user canceled the autofill interface.</dd>
+
+   <dt>"<dfn id=dom-autocompleteerrorreason-disabled title=dom-AutocompleteErrorReason-disabled><code>disabled</code></dfn>"</dt>
+
+   <dd>
+
+    <p>The autofill interface is disabled for this form.</p>
+
+    <p>There are many reasons why this might be the case; the precise reason is not given, to
+    protect the user's privacy. Amongst these reasons are such factors as:</p>
+
+    <ul class=brief><li><p>The page being delivered over an unencrypted connection (susceptible to
+     man-in-the-middle attacks), when the user agent does not want to risk the user's information
+     being provided to an attacker.</li>
+
+     <li><p>The form having a combination of fields for which the user agent does not have a
+     dedicated autofill interface.</li>
+
+     <li><p>The form's <code title=attr-form-autocomplete><a href=#attr-form-autocomplete>autocomplete</a></code> attribute being in
+     the <a href=#attr-form-autocomplete-off-state title=attr-form-autocomplete-off-state>off</a> state.</li>
+
+     <li><p>The user having disabled the feature.</li>
+
+    </ul></dd>
+
+   <dt>"<dfn id=dom-autocompleteerrorreason-invalid title=dom-AutocompleteErrorReason-invalid><code>invalid</code></dfn>"</dt>
+
+   <dd><p>The fields have been prefilled, but at least one of the controls in the form does not
+   <a href=#concept-fv-valid title=concept-fv-valid>satisfy its constraints</a>.</dd>
+
+  </dl><div class=impl>
+
+  <p>The <dfn id=dom-autocompleteerrorevent-reason title=dom-AutocompleteErrorEvent-reason><code>reason</code></dfn> attribute must
+  return the value it was initialized to. When the object is created, this attribute must be
+  initialized to the <a href=#dom-autocompleteerrorreason-none title=dom-AutocompleteErrorReason-none>empty string</a>. It
+  represents the context information for the event.</p>
+
+  </div>
+
+
+
 <!--TOPIC:DOM APIs-->
   <h4 id=textFieldSelection><span class=secno>4.10.20 </span>APIs for the text field selections</h4>
 
@@ -51401,7 +51655,7 @@
 
   <div class=impl>
 
-  <h5 id=processing-model-2><span class=secno>4.11.5.2 </span>Processing model</h5>
+  <h5 id=processing-model-3><span class=secno>4.11.5.2 </span>Processing model</h5>
 
   <p>Each element has an <dfn id=assigned-context-menu>assigned context menu</dfn>, which can be null. If an element <var title="">A</var> has a <code title=attr-contextmenu><a href=#attr-contextmenu>contextmenu</a></code> attribute, and there is
   an element with the ID given by <var title="">A</var>'s <code title=attr-contextmenu><a href=#attr-contextmenu>contextmenu</a></code> attribute's value in <var title="">A</var>'s
@@ -71610,7 +71864,7 @@
   <div class=impl>
 
   <!-- SCRIPT EXEC (marks areas related to creation of scripts) -->
-  <h4 id=processing-model-3><span class=secno>7.1.3 </span>Processing model</h4>
+  <h4 id=processing-model-4><span class=secno>7.1.3 </span>Processing model</h4>
 
   <h5 id=definitions-0><span class=secno>7.1.3.1 </span>Definitions</h5>
 
@@ -72292,7 +72546,7 @@
   agent must release the <a href=#storage-mutex>storage mutex</a>.</p>
 
 
-  <h5 id=processing-model-4><span class=secno>7.1.4.2 </span>Processing model</h5>
+  <h5 id=processing-model-5><span class=secno>7.1.4.2 </span>Processing model</h5>
 
   <p>An <a href=#event-loop>event loop</a> must continually run through the following steps for as long as it
   exists:</p>
@@ -73000,6 +73254,8 @@
 
   <table><thead><tr><th><a href=#event-handlers title="event handlers">Event handler</a> <th><a href=#event-handler-event-type>Event handler event type</a>
    <tbody><tr><td><dfn id=handler-onabort title=handler-onabort><code>onabort</code></dfn> <td> <code title=event-abort><a href=#event-abort>abort</a></code>
+    <tr><td><dfn id=handler-onautocomplete title=handler-onautocomplete><code>onautocomplete</code></dfn> <td> <code title=event-autocomplete><a href=#event-autocomplete>autocomplete</a></code> <!-- new for requestAutocomplete() -->
+    <tr><td><dfn id=handler-onautocompleteerror title=handler-onautocompleteerror><code>onautocompleteerror</code></dfn> <td> <code title=event-autocompleteerror><a href=#event-autocompleteerror>autocompleteerror</a></code> <!-- new for requestAutocomplete() -->
     <tr><td><dfn id=handler-oncancel title=handler-oncancel><code>oncancel</code></dfn> <td> <code title=event-cancel><a href=#event-cancel>cancel</a></code>
     <tr><td><dfn id=handler-oncanplay title=handler-oncanplay><code>oncanplay</code></dfn> <td> <code title=event-media-canplay><a href=#event-media-canplay>canplay</a></code>
     <tr><td><dfn id=handler-oncanplaythrough title=handler-oncanplaythrough><code>oncanplaythrough</code></dfn> <td> <code title=event-media-canplaythrough><a href=#event-media-canplaythrough>canplaythrough</a></code>
@@ -73119,6 +73375,8 @@
   <pre class=idl>[NoInterfaceObject]
 interface <dfn id=globaleventhandlers>GlobalEventHandlers</dfn> {
            attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-onabort title=handler-onabort>onabort</a>;
+           attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-onautocomplete title=handler-onautocomplete>onautocomplete</a>;
+           attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-onautocompleteerror title=handler-onautocompleteerror>onautocompleteerror</a>;
            attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-onblur title=handler-onblur>onblur</a>;
            attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-oncancel title=handler-oncancel>oncancel</a>;
            attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-oncanplay title=handler-oncanplay>oncanplay</a>;
@@ -77045,7 +77303,7 @@
 
   <div class=impl>
 
-  <h4 id=processing-model-5><span class=secno>8.4.4 </span>Processing model</h4>
+  <h4 id=processing-model-6><span class=secno>8.4.4 </span>Processing model</h4>
 
   <p>The <dfn id=focusing-steps>focusing steps</dfn> for an object <var title="">new focus target</var> that is
   either a <i><a href=#focusable-area>focusable area</a></i>, or an element that is not a <i><a href=#focusable-area>focusable area</a></i>, or a
@@ -77877,7 +78135,7 @@
 
   <div class=impl>
 
-  <h4 id=processing-model-6><span class=secno>8.5.3 </span>Processing model</h4>
+  <h4 id=processing-model-7><span class=secno>8.5.3 </span>Processing model</h4>
 
   <p>An element's <dfn id=assigned-access-key>assigned access key</dfn> is a key combination derived from the element's
   <code title=attr-accesskey><a href=#the-accesskey-attribute>accesskey</a></code> content attribute. Initially, an element must not
@@ -80764,7 +81022,7 @@
   </ul><p>These values are not currently exposed on the interface.</p>
 
 
-  <h4 id=processing-model-7><span class=secno>9.2.3 </span>Processing model</h4>
+  <h4 id=processing-model-8><span class=secno>9.2.3 </span>Processing model</h4>
 
   <p>The resource indicated in the argument to the <code title=dom-EventSource><a href=#dom-eventsource>EventSource</a></code>
   constructor is <a href=#fetch title=fetch>fetched</a> when the constructor is run.</p>
@@ -84600,7 +84858,7 @@
   worker</a> but it is a <a href=#permissible-worker>permissible worker</a>.</p>
 
 
-  <h4 id=processing-model-8><span class=secno>10.2.4 </span>Processing model</h4>
+  <h4 id=processing-model-9><span class=secno>10.2.4 </span>Processing model</h4>
 
   <p>When a user agent is to <dfn id=run-a-worker>run a worker</dfn> for a script with <a href=#url>URL</a> <var title="">url</var> and a <a href=#script-settings-object>script settings object</a> <var title="">settings
   object</var>, it must run the following steps:</p>
@@ -102750,6 +103008,16 @@
      <td> <code title=event-abort><a href=#event-abort>abort</a></code> event handler
      <td> <a href=#event-handler-content-attributes title="event handler content attributes">Event handler content attribute</a>
 
+    <tr><th id=ix-handler-onautocomplete> <code title="">onautocomplete</code>
+     <td> <a href=#handler-onautocomplete title=handler-onautocomplete>HTML elements</a>
+     <td> <code title=event-autocomplete><a href=#event-autocomplete>autocomplete</a></code> event handler
+     <td> <a href=#event-handler-content-attributes title="event handler content attributes">Event handler content attribute</a>
+
+    <tr><th id=ix-handler-onautocompleteerror> <code title="">onautocompleteerror</code>
+     <td> <a href=#handler-onautocompleteerror title=handler-onautocompleteerror>HTML elements</a>
+     <td> <code title=event-autocompleteerror><a href=#event-autocompleteerror>autocompleteerror</a></code> event handler
+     <td> <a href=#event-handler-content-attributes title="event handler content attributes">Event handler content attribute</a>
+
     <tr><th id=ix-handler-window-onafterprint> <code title="">onafterprint</code>
      <td> <code title=handler-window-onafterprint><a href=#handler-window-onafterprint>body</a></code>
      <td> <code title=event-afterprint><a href=#event-afterprint>afterprint</a></code> event handler for <code><a href=#window>Window</a></code> object
@@ -103494,6 +103762,7 @@
    <li><code><a href=#applicationcache>ApplicationCache</a></code>
    <li><code><a href=#audiotrack>AudioTrack</a></code>
    <li><code><a href=#audiotracklist>AudioTrackList</a></code>
+   <li><code><a href=#autocompleteerrorevent>AutocompleteErrorEvent</a></code>
    <li><code><a href=#barprop>BarProp</a></code>
    <li><code><a href=#beforeunloadevent>BeforeUnloadEvent</a></code>
    <li><code><a href=#broadcastchannel>BroadcastChannel</a></code>
@@ -103670,6 +103939,16 @@
      <td> <code><a href=#window>Window</a></code>
      <td> Fired at the <code><a href=#window>Window</a></code> when the download was aborted by the user
 
+    <tr><!-- autocomplete --><td> <dfn id=event-autocomplete title=event-autocomplete><code>autocomplete</code></dfn>
+     <td> <code><a href=#event>Event</a></code>
+     <td> <code><a href=#the-form-element>form</a></code> elements
+     <td> Fired at a <code><a href=#the-form-element>form</a></code> element when it is <a href=#dom-form-requestautocomplete title=dom-form-requestAutocomplete>autofilled</a>
+
+    <tr><!-- autocompleteerror --><td> <dfn id=event-autocompleteerror title=event-autocompleteerror><code>autocompleteerror</code></dfn>
+     <td> <code><a href=#event>Event</a></code>
+     <td> <code><a href=#the-form-element>form</a></code> elements
+     <td> Fired at a <code><a href=#the-form-element>form</a></code> element when a <a href=#dom-form-requestautocomplete title=dom-form-requestAutocomplete>bulk autofill</a> fails
+
     <tr><!-- DOMContentLoaded --><td> <dfn id=event-domcontentloaded title=event-DOMContentLoaded><code>DOMContentLoaded</code></dfn>
      <td> <code><a href=#event>Event</a></code>
      <td> <code><a href=#document>Document</a></code>
@@ -104574,6 +104853,7 @@
   Erik Rose,
   Evan Martin,
   Evan Prodromou,
+  Evan Stade,
   Evert,
   fantasai,
   Felix Sasaki,

Modified: index
===================================================================
--- index	2014-04-07 21:52:09 UTC (rev 8567)
+++ index	2014-04-09 21:54:18 UTC (rev 8568)
@@ -298,7 +298,7 @@
 
   <header class=head id=head><p><a href=http://www.whatwg.org/ class=logo><img width=101 src=/images/logo alt=WHATWG height=101></a></p>
    <hgroup><h1 class=allcaps>HTML</h1>
-    <h2 class="no-num no-toc">Living Standard — Last Updated 7 April 2014</h2>
+    <h2 class="no-num no-toc">Living Standard — Last Updated 9 April 2014</h2>
    </hgroup><dl><dt><strong>Web developer edition:</strong></dt>
     <dd><strong><a href=http://developers.whatwg.org/>http://developers.whatwg.org/</a></strong></dd>
     <dt>Multiple-page version:</dt>
@@ -790,10 +790,16 @@
        <li><a href=#limiting-user-input-length:-the-maxlength-attribute><span class=secno>4.10.19.3 </span>Limiting user input length: the <code title=attr-fe-maxlength>maxlength</code> attribute</a></li>
        <li><a href=#setting-minimum-input-length-requirements:-the-minlength-attribute><span class=secno>4.10.19.4 </span>Setting minimum input length requirements: the <code title=attr-fe-minlength>minlength</code> attribute</a></li>
        <li><a href=#enabling-and-disabling-form-controls:-the-disabled-attribute><span class=secno>4.10.19.5 </span>Enabling and disabling form controls: the <code title=attr-fe-disabled>disabled</code> attribute</a></li>
-       <li><a href=#form-submission-0><span class=secno>4.10.19.6 </span>Form submission</a></li>
-       <li><a href=#autofocusing-a-form-control:-the-autofocus-attribute><span class=secno>4.10.19.7 </span>Autofocusing a form control: the <code title=attr-fe-autofocus>autofocus</code> attribute</a></li>
-       <li><a href=#input-modalities:-the-inputmode-attribute><span class=secno>4.10.19.8 </span>Input modalities: the <code title=attr-fe-inputmode>inputmode</code> attribute</a></li>
-       <li><a href=#autofilling-form-controls:-the-autocomplete-attribute><span class=secno>4.10.19.9 </span>Autofilling form controls: the <code title=attr-fe-autocomplete>autocomplete</code> attribute</a></ol></li>
+       <li><a href=#form-submission-0><span class=secno>4.10.19.6 </span>Form submission</a>
+        <ol>
+         <li><a href=#autofocusing-a-form-control:-the-autofocus-attribute><span class=secno>4.10.19.6.1 </span>Autofocusing a form control: the <code title=attr-fe-autofocus>autofocus</code> attribute</a></ol></li>
+       <li><a href=#input-modalities:-the-inputmode-attribute><span class=secno>4.10.19.7 </span>Input modalities: the <code title=attr-fe-inputmode>inputmode</code> attribute</a></li>
+       <li><a href=#autofill><span class=secno>4.10.19.8 </span>Autofill</a>
+        <ol>
+         <li><a href=#autofilling-form-controls:-the-autocomplete-attribute><span class=secno>4.10.19.8.1 </span>Autofilling form controls: the <code title=attr-fe-autocomplete>autocomplete</code> attribute</a></li>
+         <li><a href=#processing-model-2><span class=secno>4.10.19.8.2 </span>Processing model</a></li>
+         <li><a href=#user-interface-for-bulk-autofill><span class=secno>4.10.19.8.3 </span>User interface for bulk autofill</a></li>
+         <li><a href=#the-autocompleteerrorevent-interface><span class=secno>4.10.19.8.4 </span>The <code>AutocompleteErrorEvent</code> interface</a></ol></ol></li>
      <li><a href=#textFieldSelection><span class=secno>4.10.20 </span>APIs for the text field selections</a></li>
      <li><a href=#constraints><span class=secno>4.10.21 </span>Constraints</a>
       <ol>
@@ -821,7 +827,7 @@
      <li><a href=#context-menus><span class=secno>4.11.5 </span>Context menus</a>
       <ol>
        <li><a href=#declaring-a-context-menu><span class=secno>4.11.5.1 </span>Declaring a context menu</a></li>
-       <li><a href=#processing-model-2><span class=secno>4.11.5.2 </span>Processing model</a></li>
+       <li><a href=#processing-model-3><span class=secno>4.11.5.2 </span>Processing model</a></li>
        <li><a href=#the-relatedevent-interfaces><span class=secno>4.11.5.3 </span>The <code>RelatedEvent</code> interfaces</a></ol></li>
      <li><a href=#commands><span class=secno>4.11.6 </span>Commands</a>
       <ol>
@@ -1014,7 +1020,7 @@
     <ol>
      <li><a href=#introduction-6><span class=secno>7.1.1 </span>Introduction</a></li>
      <li><a href=#enabling-and-disabling-scripting><span class=secno>7.1.2 </span>Enabling and disabling scripting</a></li>
-     <li><a href=#processing-model-3><span class=secno>7.1.3 </span>Processing model</a>
+     <li><a href=#processing-model-4><span class=secno>7.1.3 </span>Processing model</a>
       <ol>
        <li><a href=#definitions-0><span class=secno>7.1.3.1 </span>Definitions</a></li>
        <li><a href=#script-settings-for-browsing-contexts><span class=secno>7.1.3.2 </span>Script settings for browsing contexts</a></li>
@@ -1028,7 +1034,7 @@
      <li><a href=#event-loops><span class=secno>7.1.4 </span>Event loops</a>
       <ol>
        <li><a href=#definitions-1><span class=secno>7.1.4.1 </span>Definitions</a></li>
-       <li><a href=#processing-model-4><span class=secno>7.1.4.2 </span>Processing model</a></li>
+       <li><a href=#processing-model-5><span class=secno>7.1.4.2 </span>Processing model</a></li>
        <li><a href=#generic-task-sources><span class=secno>7.1.4.3 </span>Generic task sources</a></ol></li>
      <li><a href=#events><span class=secno>7.1.5 </span>Events</a>
       <ol>
@@ -1075,14 +1081,14 @@
      <li><a href=#introduction-7><span class=secno>8.4.1 </span>Introduction</a></li>
      <li><a href=#data-model><span class=secno>8.4.2 </span>Data model</a></li>
      <li><a href=#the-tabindex-attribute><span class=secno>8.4.3 </span>The <code title=attr-tabindex>tabindex</code> attribute</a></li>
-     <li><a href=#processing-model-5><span class=secno>8.4.4 </span>Processing model</a></li>
+     <li><a href=#processing-model-6><span class=secno>8.4.4 </span>Processing model</a></li>
      <li><a href=#sequential-focus-navigation><span class=secno>8.4.5 </span>Sequential focus navigation</a></li>
      <li><a href=#focus-management-apis><span class=secno>8.4.6 </span>Focus management APIs</a></ol></li>
    <li><a href=#assigning-keyboard-shortcuts><span class=secno>8.5 </span>Assigning keyboard shortcuts</a>
     <ol>
      <li><a href=#introduction-8><span class=secno>8.5.1 </span>Introduction</a></li>
      <li><a href=#the-accesskey-attribute><span class=secno>8.5.2 </span>The <code>accesskey</code> attribute</a></li>
-     <li><a href=#processing-model-6><span class=secno>8.5.3 </span>Processing model</a></ol></li>
+     <li><a href=#processing-model-7><span class=secno>8.5.3 </span>Processing model</a></ol></li>
    <li><a href=#editing-0><span class=secno>8.6 </span>Editing</a>
     <ol>
      <li><a href=#contenteditable><span class=secno>8.6.1 </span>Making document regions editable: The <code title=attr-contenteditable>contenteditable</code> content attribute</a></li>
@@ -1111,7 +1117,7 @@
     <ol>
      <li><a href=#server-sent-events-intro><span class=secno>9.2.1 </span>Introduction</a></li>
      <li><a href=#the-eventsource-interface><span class=secno>9.2.2 </span>The <code>EventSource</code> interface</a></li>
-     <li><a href=#processing-model-7><span class=secno>9.2.3 </span>Processing model</a></li>
+     <li><a href=#processing-model-8><span class=secno>9.2.3 </span>Processing model</a></li>
      <li><a href=#parsing-an-event-stream><span class=secno>9.2.4 </span>Parsing an event stream</a></li>
      <li><a href=#event-stream-interpretation><span class=secno>9.2.5 </span>Interpreting an event stream</a></li>
      <li><a href=#authoring-notes><span class=secno>9.2.6 </span>Authoring notes</a></li>
@@ -1177,7 +1183,7 @@
        <li><a href=#shared-workers-and-the-sharedworkerglobalscope-interface><span class=secno>10.2.1.3 </span>Shared workers and the <code>SharedWorkerGlobalScope</code> interface</a></ol></li>
      <li><a href=#worker-event-loop><span class=secno>10.2.2 </span>The event loop</a></li>
      <li><a href="#the-worker's-lifetime"><span class=secno>10.2.3 </span>The worker's lifetime</a></li>
-     <li><a href=#processing-model-8><span class=secno>10.2.4 </span>Processing model</a></li>
+     <li><a href=#processing-model-9><span class=secno>10.2.4 </span>Processing model</a></li>
      <li><a href=#runtime-script-errors-0><span class=secno>10.2.5 </span>Runtime script errors</a></li>
      <li><a href=#creating-workers><span class=secno>10.2.6 </span>Creating workers</a>
       <ol>
@@ -10391,6 +10397,8 @@
   <hr><p>The following <a href=#event-handler-content-attributes>event handler content attributes</a> may be specified on any <a href=#html-elements title="HTML elements">HTML element</a>:</p>
 
   <ul class=brief><li><code title=handler-onabort><a href=#handler-onabort>onabort</a></code></li>
+   <li><code title=handler-onautocomplete><a href=#handler-onautocomplete>onautocomplete</a></code></li>
+   <li><code title=handler-onautocompleteerror><a href=#handler-onautocompleteerror>onautocompleteerror</a></code></li>
    <li><code title=handler-onblur><a href=#handler-onblur>onblur</a></code>*</li>
    <li><code title=handler-oncancel><a href=#handler-oncancel>oncancel</a></code></li>
    <li><code title=handler-oncanplay><a href=#handler-oncanplay>oncanplay</a></code></li>
@@ -38113,6 +38121,8 @@
   void <a href=#dom-form-reset title=dom-form-reset>reset</a>();
   boolean <a href=#dom-form-checkvalidity title=dom-form-checkValidity>checkValidity</a>();
   boolean <a href=#dom-form-reportvalidity title=dom-form-reportValidity>reportValidity</a>();
+
+  void <a href=#dom-form-requestautocomplete title=dom-form-requestAutocomplete>requestAutocomplete</a>();
 };</pre>
    </dd>
   </dl><!--TOPIC:HTML--><p>The <code><a href=#the-form-element>form</a></code> element <a href=#represents>represents</a> a collection of <a href=#form-associated-element title="form-associated element">form-associated elements</a>, some of which can represent
@@ -38220,12 +38230,29 @@
 
    </dd>
 
+   <dt><var title="">form</var> . <code title=dom-form-requestAutocomplete><a href=#dom-form-requestautocomplete>requestAutocomplete</a></code>()</dt>
+
+   <dd>
+
+    <p>Triggers a user-agent-specific asynchronous user interface to help the user fill in any
+    fields that have an <a href=#autofill-field-name>autofill field name</a> other than "<code title=attr-fe-autocomplete-on><a href=#attr-fe-autocomplete-on>on</a></code>" or "<code title=attr-fe-autocomplete-off><a href=#attr-fe-autocomplete-off>off</a></code>".</p>
+
+    <p>The <code><a href=#the-form-element>form</a></code> element will subsequently receive an event, either <code title=event-autocomplete><a href=#event-autocomplete>autocomplete</a></code>, indicating that the fields have been prefilled,
+    or <code title=event-autocompleteerror><a href=#event-autocompleteerror>autocompleteerror</a></code> (using the
+    <code><a href=#autocompleteerrorevent>AutocompleteErrorEvent</a></code> interface), indicating that there was some problem (the
+    general class of problem is described by the <code title=dom-AutocompleteErrorEvent-reason><a href=#dom-autocompleteerrorevent-reason>reason</a></code> IDL attribute on the event).</p>
+
+   </dd>
+
   </dl><div class=impl>
 
   <p>The <dfn id=dom-form-autocomplete title=dom-form-autocomplete><code>autocomplete</code></dfn> IDL attribute must
   <a href=#reflect>reflect</a> the content attribute of the same name, <a href=#limited-to-only-known-values>limited to only known
   values</a>.</p>
 
+  <p>The <code title=dom-form-requestAutocomplete><a href=#dom-form-requestautocomplete>requestAutocomplete()</a></code> method is part of
+  the <a href=#attr-fe-autocomplete title=attr-fe-autocomplete>autofill mechanism</a>.</p>
+
   <p>The <dfn id=dom-form-name title=dom-form-name><code>name</code></dfn> IDL attribute must <a href=#reflect>reflect</a>
   the content attribute of the same name.</p>
 
@@ -47697,7 +47724,7 @@
   </div>
 
 
-  <h5 id=autofocusing-a-form-control:-the-autofocus-attribute><span class=secno>4.10.19.7 </span>Autofocusing a form control: the <code title=attr-fe-autofocus><a href=#attr-fe-autofocus>autofocus</a></code> attribute</h5>
+  <h6 id=autofocusing-a-form-control:-the-autofocus-attribute><span class=secno>4.10.19.6.1 </span>Autofocusing a form control: the <code title=attr-fe-autofocus><a href=#attr-fe-autofocus>autofocus</a></code> attribute</h6>
 
   <!-- v2: Apply this to contentEditable elements -->
 
@@ -47777,7 +47804,7 @@
   </div>
 
 
-  <h5 id=input-modalities:-the-inputmode-attribute><span class=secno>4.10.19.8 </span>Input modalities: the <code title=attr-fe-inputmode><a href=#attr-fe-inputmode>inputmode</a></code> attribute</h5>
+  <h5 id=input-modalities:-the-inputmode-attribute><span class=secno>4.10.19.7 </span>Input modalities: the <code title=attr-fe-inputmode><a href=#attr-fe-inputmode>inputmode</a></code> attribute</h5>
 
   <!-- v2: Apply this to contentEditable elements -->
 
@@ -47921,8 +47948,10 @@
   </div>
 
 
-  <h5 id=autofilling-form-controls:-the-autocomplete-attribute><span class=secno>4.10.19.9 </span>Autofilling form controls: the <code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code> attribute</h5>
+  <h5 id=autofill><span class=secno>4.10.19.8 </span>Autofill</h5>
 
+  <h6 id=autofilling-form-controls:-the-autocomplete-attribute><span class=secno>4.10.19.8.1 </span>Autofilling form controls: the <code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code> attribute</h6>
+
   <p>User agents sometimes have features for helping users fill forms in, for example prefilling the
   user's address based on earlier user input. The <dfn id=attr-fe-autocomplete title=attr-fe-autocomplete><code>autocomplete</code></dfn> content attribute can be used to hint
   to the user agent how to, or indeed whether to, provide such a feature.</p>
@@ -48428,8 +48457,11 @@
   value corresponding to the state of the element's <a href=#form-owner>form owner</a>'s <code title=attr-form-autocomplete><a href=#attr-form-autocomplete>autocomplete</a></code> attribute is used instead (either "<code title=attr-fe-autocomplete-on><a href=#attr-fe-autocomplete-on>on</a></code>" or "<code title=attr-fe-autocomplete-off><a href=#attr-fe-autocomplete-off>off</a></code>"). If there is no <a href=#form-owner>form owner</a>, then the
   value "<code title=attr-fe-autocomplete-on><a href=#attr-fe-autocomplete-on>on</a></code>" is used.</p>
 
+
   <div class=impl>
 
+  <h6 id=processing-model-2><span class=secno>4.10.19.8.2 </span>Processing model</h6>
+
   <p>Each <code><a href=#the-input-element>input</a></code>, <code><a href=#the-select-element>select</a></code>, and <code><a href=#the-textarea-element>textarea</a></code> element has an
   <dfn id=autofill-hint-set>autofill hint set</dfn>, an <dfn id=autofill-scope>autofill scope</dfn>, an <dfn id=autofill-field-name>autofill field name</dfn>, and
   an <dfn id=idl-exposed-autofill-value>IDL-exposed autofill value</dfn>.</p>
@@ -48829,7 +48861,8 @@
   however, for address-related form controls whose <a href=#autofill-hint-set>autofill hint set</a> does not contain
   either keyword.</p>
 
-  <p>When the user agent autofills form controls, elements with the same <a href=#form-owner>form owner</a> and
+<!--CLEANUP-->
+  <p>When the user agent <dfn id=concept-fe-autofill title=concept-fe-autofill>autofills form controls</dfn>, elements with the same <a href=#form-owner>form owner</a> and
   the same <a href=#autofill-scope>autofill scope</a> must use data relating to the same person, address, payment
   instrument, and contact details. <span id=autofill-country title="">When a user agent autofills
   "<code title=attr-fe-autocomplete-country><a href=#attr-fe-autocomplete-country>country</a></code>" and "<code title=attr-fe-autocomplete-country-name><a href=#attr-fe-autocomplete-country-name>country-name</a></code>" fields with the same <a href=#form-owner>form
@@ -48861,11 +48894,11 @@
 
   <p>A user agent prefilling a form control's <a href=#concept-fe-value title=concept-fe-value>value</a> must not
   cause that control to <a href=#suffering-from-a-type-mismatch title="suffering from a type mismatch">suffer from a type
-  mismatch</a>, <a href=#suffering-from-a-pattern-mismatch title="suffering from a pattern mismatch">suffer from a pattern
   mismatch</a>, <a href=#suffering-from-being-too-long title="suffering from being too long">suffer from being too long</a>,
   <a href=#suffering-from-being-too-short title="suffering from being too short">suffer from being too short</a>, <a href=#suffering-from-an-underflow title="suffering from an underflow">suffer from an underflow</a>, <a href=#suffering-from-an-overflow title="suffering from
   an overflow">suffer from an overflow</a>, or <a href=#suffering-from-a-step-mismatch title="suffering from a step
-  mismatch">suffer from a step mismatch</a>. Where possible given the control's constraints, user
+  mismatch">suffer from a step mismatch</a>. Except when <a href=#concept-fe-autofill title=concept-fe-autofill>autofilling</a> for <code title=dom-form-requestAutocomplete><a href=#dom-form-requestautocomplete>requestAutocomplete()</a></code>, a user agent prefilling a form
+  control's <a href=#concept-fe-value title=concept-fe-value>value</a> must not cause that control to <a href=#suffering-from-a-pattern-mismatch title="suffering from a pattern mismatch">suffer from a pattern mismatch</a> either. Where possible given the control's constraints, user
   agents must use the format given as canonical in the aforementioned table. Where it's not possible
   for the canonical format to be used, user agents should use heuristics to attempt to convert
   values so that they can be used.</p>
@@ -48945,7 +48978,228 @@
   </div>
 
 
+  <div class=impl>
 
+  <h6 id=user-interface-for-bulk-autofill><span class=secno>4.10.19.8.3 </span>User interface for bulk autofill</h6>
+
+  <p>When the <dfn id=dom-form-requestautocomplete title=dom-form-requestAutocomplete><code>requestAutocomplete()</code></dfn>
+  method on a <code><a href=#the-form-element>form</a></code> element is invoked, the user agent must run the following steps:</p>
+
+  <ol><li><p>Let <var title="">form</var> be the element on which the method was invoked.</li>
+
+   <li>
+
+    <p>If any of the following conditions are met, then <a href=#queue-a-task>queue a task</a> to <a href=#fail-the-autofill-request>fail the
+    autofill request</a> on <var title="">form</var> with the reason "<code title=dom-AutocompleteErrorReason-disabled><a href=#dom-autocompleteerrorreason-disabled>disabled</a></code>", and abort these steps:</p>
+
+    <ul><li><p>the algorithm is not <a href=#allowed-to-show-a-popup>allowed to show a popup</a></li>
+
+     <li><p><var title="">form</var> is not <a href=#in-a-document>in a <code>Document</code></a></li>
+
+     <li><p><var title="">form</var>'s <code><a href=#document>Document</a></code> is not <a href=#fully-active>fully
+     active</a></li>
+
+     <li><p><var title="">form</var>'s <code title=attr-form-autocomplete><a href=#attr-form-autocomplete>autocomplete</a></code>
+     attribute is in the <a href=#attr-form-autocomplete-off-state title=attr-form-autocomplete-off-state>off</a> state</li>
+
+     <li><p>the user has disabled this feature for this <var title="">form</var>'s
+     <code><a href=#document>Document</a></code>'s <a href=#origin>origin</a></li>
+
+     <li><p>the user agent does not support this <var title="">form</var>'s fields</li>
+
+     <li><p>the <var title="">form</var> was obtained via unencrypted channels and the user agent
+     does not support autofill in such situations</li>
+
+     <li><p>another instance of this algorithm is already being run for <var title="">form</var></li>
+
+    </ul><p class=note>User agents are encouraged to log the precise cause in a developer console, to
+    aid debugging.</p>
+
+   </li>
+
+   <li><p>Let <var title="">pending autofills</var> be an initially empty list of <a href=#category-submit title=category-submit>submittable elements</a>, each annotated with a string known as the
+   <i>original autocomplete value</i>.</li>
+
+   <li>
+
+    <p>For each element that matches the following criteria, add the element to <var title="">pending autofills</var>, with the <i>original autocomplete value</i> annotation being
+    the value of the element's <code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code>
+    attribute:</p>
+
+    <ul><li><p>the element's <a href=#form-owner>form owner</a> is <var title="">form</var></li>
+
+     <li><p>the element is <i title=concept-fe-mutable><a href=#concept-fe-mutable>mutable</a></i></li>
+
+     <li><p>the element is an <code><a href=#the-input-element>input</a></code> element to which the <code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code> attribute currently <a href=#concept-input-apply title=concept-input-apply>applies</a>, or, the element is a <code><a href=#the-textarea-element>textarea</a></code>
+     element, or, the element is a <code><a href=#the-select-element>select</a></code> element</li>
+
+     <li><p>the element's <a href=#autofill-field-name>autofill field name</a> is neither "<code title=attr-fe-autocomplete-off><a href=#attr-fe-autocomplete-off>off</a></code>" nor "<code title=attr-fe-autocomplete-on><a href=#attr-fe-autocomplete-on>on</a></code>"</li>
+
+    </ul></li>
+
+   <li><p>Return, but continue running these steps asynchronously.</li>
+
+   <li><p>Provide an interface for the user to efficiently fill in some or all of the fields listed
+   in <var title="">pending autofills</var>. Await the user's input.</li>
+
+   <li>
+
+    <p><a href=#queue-a-task>Queue a task</a> to run the following steps:</p>
+
+    <ol><li>
+
+      <p>If any of the following conditions are met, then <a href=#fail-the-autofill-request>fail the autofill request</a> on
+      <var title="">form</var> with the reason "<code title=dom-AutocompleteErrorReason-disabled><a href=#dom-autocompleteerrorreason-disabled>disabled</a></code>", and abort these steps:</p>
+
+      <ul><li><p><var title="">form</var> is no longer <a href=#in-a-document>in a <code>Document</code></a></li>
+
+       <li><p><var title="">form</var>'s <code><a href=#document>Document</a></code> is no longer <a href=#fully-active>fully
+       active</a></li>
+
+       <li><p><var title="">form</var>'s <code title=attr-form-autocomplete><a href=#attr-form-autocomplete>autocomplete</a></code>
+       attribute is now in the <a href=#attr-form-autocomplete-off-state title=attr-form-autocomplete-off-state>off</a>
+       state</li>
+
+      </ul><p class=note>Again, user agents are encouraged to log the precise cause in a developer
+      console, to aid debugging.</p>
+
+     </li>
+
+     <li><p>If the user canceled the operation, <a href=#fail-the-autofill-request>fail the autofill request</a> on <var title="">form</var> with the reason "<code title=dom-AutocompleteErrorReason-cancel><a href=#dom-autocompleteerrorreason-cancel>cancel</a></code>", and abort these steps.</li>
+
+     <li>
+
+      <p>For each element in <var title="">pending autofills</var>, run the following steps:</p>
+
+      <ol><li><p>Let <var title="">candidate</var> be the element in question.</li>
+
+       <li><p>Let <var title="">old autocomplete value</var> be the <i>original autocomplete
+       value</i> annotation associated with <var title="">candidate</var> in <var title="">pending
+       autofills</var>.</li>
+
+       <li>
+
+        <p>If all of the following conditions are met, then <a href=#concept-fe-autofill title=concept-fe-autofill>autofill</a> <var title="">candidate</var>:</p>
+
+        <ul><li><p><var title="">candidate</var>'s <a href=#form-owner>form owner</a> is <var title="">form</var></li>
+
+         <li><p><var title="">candidate</var> is still <i title=concept-fe-mutable><a href=#concept-fe-mutable>mutable</a></i></li>
+
+         <li><p><var title="">candidate</var> is an <code><a href=#the-input-element>input</a></code> element to which the <code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code> attribute still <a href=#concept-input-apply title=concept-input-apply>applies</a>, or, <var title="">candidate</var> is a
+         <code><a href=#the-textarea-element>textarea</a></code> element, or, <var title="">candidate</var> is a <code><a href=#the-select-element>select</a></code>
+         element</li>
+
+         <li><p><var title="">candidate</var>'s <a href=#autofill-field-name>autofill field name</a> is still equal to
+         <var title="">old autocomplete value</var></li>
+
+         <li><p>the user provided a value to autofill <var title="">candidate</var></li>
+
+        </ul></li>
+
+      </ol></li>
+
+     <li>
+
+      <p><a href=#statically-validate-the-constraints>Statically validate the constraints</a> of <var title="">form</var>. If the
+      result was negative, then <a href=#fail-the-autofill-request>fail the autofill request</a> on <var title="">form</var>
+      with the reason "<code title=dom-AutocompleteErrorReason-invalid><a href=#dom-autocompleteerrorreason-invalid>invalid</a></code>", and abort
+      these steps.</p>
+
+      <p class=note><a href=#statically-validate-the-constraints title="statically validate the constraints">Statically validating the
+      constraints</a> of a <code><a href=#the-form-element>form</a></code> involves firing <code title=event-invalid><a href=#event-invalid>invalid</a></code> events to each control that does not <a href=#concept-fv-valid title=concept-fv-valid>satisfy its contraints</a>.</p>
+
+     </li>
+
+     <li><p><a href=#fire-a-simple-event>Fire a simple event</a> named <code title=event-autocomplete><a href=#event-autocomplete>autocomplete</a></code> at <var title="">form</var>.</li>
+
+    </ol></li>
+
+  </ol><p>When the user agent is required to <dfn id=fail-the-autofill-request>fail the autofill request</dfn> on a <code><a href=#the-form-element>form</a></code>
+  element <var title="">target</var> with a reason <var title="">reason</var>, the user agent must
+  dispatch an event that uses the <code><a href=#autocompleteerrorevent>AutocompleteErrorEvent</a></code> interface, with the event type
+  <code title="">autocompleteerror</code>, which does not bubble, is not cancelable, has no default
+  action, has its <code title=dom-AutocompleteErrorEvent-reason><a href=#dom-autocompleteerrorevent-reason>reason</a></code> attribute set to
+  <var title="">reason</var>, and which is <a href=#concept-events-trusted title=concept-events-trusted>trusted</a>, at
+  <var title="">target</var>.</p>
+
+  <p>The <a href=#task-source>task source</a> for the <a href=#concept-task title=concept-task>tasks</a> mentioned in this
+  section is the <a href=#dom-manipulation-task-source>DOM manipulation task source</a>.</p>
+
+  </div>
+
+
+  <h6 id=the-autocompleteerrorevent-interface><span class=secno>4.10.19.8.4 </span>The <code><a href=#autocompleteerrorevent>AutocompleteErrorEvent</a></code> interface</h6>
+
+  <pre class=idl>enum <dfn id=autocompleteerrorreason>AutocompleteErrorReason</dfn> { "" /* <a href=#dom-autocompleteerrorreason-none title=dom-AutocompleteErrorReason-none>empty string</a> */, "<a href=#dom-autocompleteerrorreason-cancel title=dom-AutocompleteErrorReason-cancel>cancel</a>", "<a href=#dom-autocompleteerrorreason-disabled title=dom-AutocompleteErrorReason-disabled>disabled</a>", "<a href=#dom-autocompleteerrorreason-invalid title=dom-AutocompleteErrorReason-invalid>invalid</a>" };
+
+[Constructor(DOMString type, optional <a href=#autocompleteerroreventinit>AutocompleteErrorEventInit</a> eventInitDict)]
+interface <dfn id=autocompleteerrorevent>AutocompleteErrorEvent</dfn> : <a href=#event>Event</a> {
+  readonly attribute <a href=#autocompleteerrorreason>AutocompleteErrorReason</a> <a href=#dom-autocompleteerrorevent-reason title=dom-AutocompleteErrorEvent-reason>reason</a>;
+};
+
+dictionary <dfn id=autocompleteerroreventinit>AutocompleteErrorEventInit</dfn> : <a href=#eventinit>EventInit</a> {
+  <a href=#autocompleteerrorreason>AutocompleteErrorReason</a> reason;
+};</pre>
+
+  <dl class=domintro><dt><var title="">event</var> . <code title=dom-AutocompleteErrorEvent-reason><a href=#dom-autocompleteerrorevent-reason>reason</a></code></dt>
+
+   <dd>
+
+    <p>For the <code title=event-autocompleteerror><a href=#event-autocompleteerror>autocompleteerror</a></code> event, returns the
+    general reason for the failure of the <code title=dom-form-requestAutocomplete><a href=#dom-form-requestautocomplete>requestAutocomplete()</a></code> method, from the list
+    below.</p>
+
+   </dd>
+
+  </dl><p>The defined reason codes are:
+
+  <dl><dt>"<dfn id=dom-autocompleteerrorreason-none title=dom-AutocompleteErrorReason-none><code></code></dfn>" (the empty string)</dt>
+
+   <dd><p>Reason is unknown.</dd>
+
+   <dt>"<dfn id=dom-autocompleteerrorreason-cancel title=dom-AutocompleteErrorReason-cancel><code>cancel</code></dfn>"</dt>
+
+   <dd><p>The user canceled the autofill interface.</dd>
+
+   <dt>"<dfn id=dom-autocompleteerrorreason-disabled title=dom-AutocompleteErrorReason-disabled><code>disabled</code></dfn>"</dt>
+
+   <dd>
+
+    <p>The autofill interface is disabled for this form.</p>
+
+    <p>There are many reasons why this might be the case; the precise reason is not given, to
+    protect the user's privacy. Amongst these reasons are such factors as:</p>
+
+    <ul class=brief><li><p>The page being delivered over an unencrypted connection (susceptible to
+     man-in-the-middle attacks), when the user agent does not want to risk the user's information
+     being provided to an attacker.</li>
+
+     <li><p>The form having a combination of fields for which the user agent does not have a
+     dedicated autofill interface.</li>
+
+     <li><p>The form's <code title=attr-form-autocomplete><a href=#attr-form-autocomplete>autocomplete</a></code> attribute being in
+     the <a href=#attr-form-autocomplete-off-state title=attr-form-autocomplete-off-state>off</a> state.</li>
+
+     <li><p>The user having disabled the feature.</li>
+
+    </ul></dd>
+
+   <dt>"<dfn id=dom-autocompleteerrorreason-invalid title=dom-AutocompleteErrorReason-invalid><code>invalid</code></dfn>"</dt>
+
+   <dd><p>The fields have been prefilled, but at least one of the controls in the form does not
+   <a href=#concept-fv-valid title=concept-fv-valid>satisfy its constraints</a>.</dd>
+
+  </dl><div class=impl>
+
+  <p>The <dfn id=dom-autocompleteerrorevent-reason title=dom-AutocompleteErrorEvent-reason><code>reason</code></dfn> attribute must
+  return the value it was initialized to. When the object is created, this attribute must be
+  initialized to the <a href=#dom-autocompleteerrorreason-none title=dom-AutocompleteErrorReason-none>empty string</a>. It
+  represents the context information for the event.</p>
+
+  </div>
+
+
+
 <!--TOPIC:DOM APIs-->
   <h4 id=textFieldSelection><span class=secno>4.10.20 </span>APIs for the text field selections</h4>
 
@@ -51401,7 +51655,7 @@
 
   <div class=impl>
 
-  <h5 id=processing-model-2><span class=secno>4.11.5.2 </span>Processing model</h5>
+  <h5 id=processing-model-3><span class=secno>4.11.5.2 </span>Processing model</h5>
 
   <p>Each element has an <dfn id=assigned-context-menu>assigned context menu</dfn>, which can be null. If an element <var title="">A</var> has a <code title=attr-contextmenu><a href=#attr-contextmenu>contextmenu</a></code> attribute, and there is
   an element with the ID given by <var title="">A</var>'s <code title=attr-contextmenu><a href=#attr-contextmenu>contextmenu</a></code> attribute's value in <var title="">A</var>'s
@@ -71610,7 +71864,7 @@
   <div class=impl>
 
   <!-- SCRIPT EXEC (marks areas related to creation of scripts) -->
-  <h4 id=processing-model-3><span class=secno>7.1.3 </span>Processing model</h4>
+  <h4 id=processing-model-4><span class=secno>7.1.3 </span>Processing model</h4>
 
   <h5 id=definitions-0><span class=secno>7.1.3.1 </span>Definitions</h5>
 
@@ -72292,7 +72546,7 @@
   agent must release the <a href=#storage-mutex>storage mutex</a>.</p>
 
 
-  <h5 id=processing-model-4><span class=secno>7.1.4.2 </span>Processing model</h5>
+  <h5 id=processing-model-5><span class=secno>7.1.4.2 </span>Processing model</h5>
 
   <p>An <a href=#event-loop>event loop</a> must continually run through the following steps for as long as it
   exists:</p>
@@ -73000,6 +73254,8 @@
 
   <table><thead><tr><th><a href=#event-handlers title="event handlers">Event handler</a> <th><a href=#event-handler-event-type>Event handler event type</a>
    <tbody><tr><td><dfn id=handler-onabort title=handler-onabort><code>onabort</code></dfn> <td> <code title=event-abort><a href=#event-abort>abort</a></code>
+    <tr><td><dfn id=handler-onautocomplete title=handler-onautocomplete><code>onautocomplete</code></dfn> <td> <code title=event-autocomplete><a href=#event-autocomplete>autocomplete</a></code> <!-- new for requestAutocomplete() -->
+    <tr><td><dfn id=handler-onautocompleteerror title=handler-onautocompleteerror><code>onautocompleteerror</code></dfn> <td> <code title=event-autocompleteerror><a href=#event-autocompleteerror>autocompleteerror</a></code> <!-- new for requestAutocomplete() -->
     <tr><td><dfn id=handler-oncancel title=handler-oncancel><code>oncancel</code></dfn> <td> <code title=event-cancel><a href=#event-cancel>cancel</a></code>
     <tr><td><dfn id=handler-oncanplay title=handler-oncanplay><code>oncanplay</code></dfn> <td> <code title=event-media-canplay><a href=#event-media-canplay>canplay</a></code>
     <tr><td><dfn id=handler-oncanplaythrough title=handler-oncanplaythrough><code>oncanplaythrough</code></dfn> <td> <code title=event-media-canplaythrough><a href=#event-media-canplaythrough>canplaythrough</a></code>
@@ -73119,6 +73375,8 @@
   <pre class=idl>[NoInterfaceObject]
 interface <dfn id=globaleventhandlers>GlobalEventHandlers</dfn> {
            attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-onabort title=handler-onabort>onabort</a>;
+           attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-onautocomplete title=handler-onautocomplete>onautocomplete</a>;
+           attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-onautocompleteerror title=handler-onautocompleteerror>onautocompleteerror</a>;
            attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-onblur title=handler-onblur>onblur</a>;
            attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-oncancel title=handler-oncancel>oncancel</a>;
            attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-oncanplay title=handler-oncanplay>oncanplay</a>;
@@ -77045,7 +77303,7 @@
 
   <div class=impl>
 
-  <h4 id=processing-model-5><span class=secno>8.4.4 </span>Processing model</h4>
+  <h4 id=processing-model-6><span class=secno>8.4.4 </span>Processing model</h4>
 
   <p>The <dfn id=focusing-steps>focusing steps</dfn> for an object <var title="">new focus target</var> that is
   either a <i><a href=#focusable-area>focusable area</a></i>, or an element that is not a <i><a href=#focusable-area>focusable area</a></i>, or a
@@ -77877,7 +78135,7 @@
 
   <div class=impl>
 
-  <h4 id=processing-model-6><span class=secno>8.5.3 </span>Processing model</h4>
+  <h4 id=processing-model-7><span class=secno>8.5.3 </span>Processing model</h4>
 
   <p>An element's <dfn id=assigned-access-key>assigned access key</dfn> is a key combination derived from the element's
   <code title=attr-accesskey><a href=#the-accesskey-attribute>accesskey</a></code> content attribute. Initially, an element must not
@@ -80764,7 +81022,7 @@
   </ul><p>These values are not currently exposed on the interface.</p>
 
 
-  <h4 id=processing-model-7><span class=secno>9.2.3 </span>Processing model</h4>
+  <h4 id=processing-model-8><span class=secno>9.2.3 </span>Processing model</h4>
 
   <p>The resource indicated in the argument to the <code title=dom-EventSource><a href=#dom-eventsource>EventSource</a></code>
   constructor is <a href=#fetch title=fetch>fetched</a> when the constructor is run.</p>
@@ -84600,7 +84858,7 @@
   worker</a> but it is a <a href=#permissible-worker>permissible worker</a>.</p>
 
 
-  <h4 id=processing-model-8><span class=secno>10.2.4 </span>Processing model</h4>
+  <h4 id=processing-model-9><span class=secno>10.2.4 </span>Processing model</h4>
 
   <p>When a user agent is to <dfn id=run-a-worker>run a worker</dfn> for a script with <a href=#url>URL</a> <var title="">url</var> and a <a href=#script-settings-object>script settings object</a> <var title="">settings
   object</var>, it must run the following steps:</p>
@@ -102750,6 +103008,16 @@
      <td> <code title=event-abort><a href=#event-abort>abort</a></code> event handler
      <td> <a href=#event-handler-content-attributes title="event handler content attributes">Event handler content attribute</a>
 
+    <tr><th id=ix-handler-onautocomplete> <code title="">onautocomplete</code>
+     <td> <a href=#handler-onautocomplete title=handler-onautocomplete>HTML elements</a>
+     <td> <code title=event-autocomplete><a href=#event-autocomplete>autocomplete</a></code> event handler
+     <td> <a href=#event-handler-content-attributes title="event handler content attributes">Event handler content attribute</a>
+
+    <tr><th id=ix-handler-onautocompleteerror> <code title="">onautocompleteerror</code>
+     <td> <a href=#handler-onautocompleteerror title=handler-onautocompleteerror>HTML elements</a>
+     <td> <code title=event-autocompleteerror><a href=#event-autocompleteerror>autocompleteerror</a></code> event handler
+     <td> <a href=#event-handler-content-attributes title="event handler content attributes">Event handler content attribute</a>
+
     <tr><th id=ix-handler-window-onafterprint> <code title="">onafterprint</code>
      <td> <code title=handler-window-onafterprint><a href=#handler-window-onafterprint>body</a></code>
      <td> <code title=event-afterprint><a href=#event-afterprint>afterprint</a></code> event handler for <code><a href=#window>Window</a></code> object
@@ -103494,6 +103762,7 @@
    <li><code><a href=#applicationcache>ApplicationCache</a></code>
    <li><code><a href=#audiotrack>AudioTrack</a></code>
    <li><code><a href=#audiotracklist>AudioTrackList</a></code>
+   <li><code><a href=#autocompleteerrorevent>AutocompleteErrorEvent</a></code>
    <li><code><a href=#barprop>BarProp</a></code>
    <li><code><a href=#beforeunloadevent>BeforeUnloadEvent</a></code>
    <li><code><a href=#broadcastchannel>BroadcastChannel</a></code>
@@ -103670,6 +103939,16 @@
      <td> <code><a href=#window>Window</a></code>
      <td> Fired at the <code><a href=#window>Window</a></code> when the download was aborted by the user
 
+    <tr><!-- autocomplete --><td> <dfn id=event-autocomplete title=event-autocomplete><code>autocomplete</code></dfn>
+     <td> <code><a href=#event>Event</a></code>
+     <td> <code><a href=#the-form-element>form</a></code> elements
+     <td> Fired at a <code><a href=#the-form-element>form</a></code> element when it is <a href=#dom-form-requestautocomplete title=dom-form-requestAutocomplete>autofilled</a>
+
+    <tr><!-- autocompleteerror --><td> <dfn id=event-autocompleteerror title=event-autocompleteerror><code>autocompleteerror</code></dfn>
+     <td> <code><a href=#event>Event</a></code>
+     <td> <code><a href=#the-form-element>form</a></code> elements
+     <td> Fired at a <code><a href=#the-form-element>form</a></code> element when a <a href=#dom-form-requestautocomplete title=dom-form-requestAutocomplete>bulk autofill</a> fails
+
     <tr><!-- DOMContentLoaded --><td> <dfn id=event-domcontentloaded title=event-DOMContentLoaded><code>DOMContentLoaded</code></dfn>
      <td> <code><a href=#event>Event</a></code>
      <td> <code><a href=#document>Document</a></code>
@@ -104574,6 +104853,7 @@
   Erik Rose,
   Evan Martin,
   Evan Prodromou,
+  Evan Stade,
   Evert,
   fantasai,
   Felix Sasaki,

Modified: source
===================================================================
--- source	2014-04-07 21:52:09 UTC (rev 8567)
+++ source	2014-04-09 21:54:18 UTC (rev 8568)
@@ -10246,6 +10246,8 @@
 
   <ul class="brief">
    <li><code data-x="handler-onabort">onabort</code></li>
+   <li><code data-x="handler-onautocomplete">onautocomplete</code></li>
+   <li><code data-x="handler-onautocompleteerror">onautocompleteerror</code></li>
    <li><code data-x="handler-onblur">onblur</code>*</li>
    <li><code data-x="handler-oncancel">oncancel</code></li>
    <li><code data-x="handler-oncanplay">oncanplay</code></li>
@@ -41550,6 +41552,8 @@
   void <span data-x="dom-form-reset">reset</span>();
   boolean <span data-x="dom-form-checkValidity">checkValidity</span>();
   boolean <span data-x="dom-form-reportValidity">reportValidity</span>();
+
+  void <span data-x="dom-form-requestAutocomplete">requestAutocomplete</span>();
 };</pre>
    </dd>
   </dl><!--TOPIC:HTML-->
@@ -41671,6 +41675,24 @@
 
    </dd>
 
+   <dt><var data-x="">form</var> . <code data-x="dom-form-requestAutocomplete">requestAutocomplete</code>()</dt>
+
+   <dd>
+
+    <p>Triggers a user-agent-specific asynchronous user interface to help the user fill in any
+    fields that have an <span>autofill field name</span> other than "<code
+    data-x="attr-fe-autocomplete-on">on</code>" or "<code
+    data-x="attr-fe-autocomplete-off">off</code>".</p>
+
+    <p>The <code>form</code> element will subsequently receive an event, either <code
+    data-x="event-autocomplete">autocomplete</code>, indicating that the fields have been prefilled,
+    or <code data-x="event-autocompleteerror">autocompleteerror</code> (using the
+    <code>AutocompleteErrorEvent</code> interface), indicating that there was some problem (the
+    general class of problem is described by the <code
+    data-x="dom-AutocompleteErrorEvent-reason">reason</code> IDL attribute on the event).</p>
+
+   </dd>
+
   </dl>
 
   <div class="impl">
@@ -41679,6 +41701,9 @@
   <span>reflect</span> the content attribute of the same name, <span>limited to only known
   values</span>.</p>
 
+  <p>The <code data-x="dom-form-requestAutocomplete">requestAutocomplete()</code> method is part of
+  the <span data-x="attr-fe-autocomplete">autofill mechanism</span>.</p>
+
   <p>The <dfn data-x="dom-form-name"><code>name</code></dfn> IDL attribute must <span>reflect</span>
   the content attribute of the same name.</p>
 
@@ -52401,7 +52426,7 @@
   </div>
 
 
-  <h5>Autofocusing a form control: the <code data-x="attr-fe-autofocus">autofocus</code> attribute</h5>
+  <h6>Autofocusing a form control: the <code data-x="attr-fe-autofocus">autofocus</code> attribute</h6>
 
   <!-- v2: Apply this to contentEditable elements -->
 
@@ -52663,8 +52688,10 @@
   </div>
 
 
-  <h5>Autofilling form controls: the <code data-x="attr-fe-autocomplete">autocomplete</code> attribute</h5>
+  <h5>Autofill</h5>
 
+  <h6>Autofilling form controls: the <code data-x="attr-fe-autocomplete">autocomplete</code> attribute</h6>
+
   <p>User agents sometimes have features for helping users fill forms in, for example prefilling the
   user's address based on earlier user input. The <dfn
   data-x="attr-fe-autocomplete"><code>autocomplete</code></dfn> content attribute can be used to hint
@@ -53263,8 +53290,11 @@
   data-x="attr-fe-autocomplete-off">off</code>"). If there is no <span>form owner</span>, then the
   value "<code data-x="attr-fe-autocomplete-on">on</code>" is used.</p>
 
+
   <div class="impl">
 
+  <h6>Processing model</h6>
+
   <p>Each <code>input</code>, <code>select</code>, and <code>textarea</code> element has an
   <dfn>autofill hint set</dfn>, an <dfn>autofill scope</dfn>, an <dfn>autofill field name</dfn>, and
   an <dfn>IDL-exposed autofill value</dfn>.</p>
@@ -53770,7 +53800,8 @@
   however, for address-related form controls whose <span>autofill hint set</span> does not contain
   either keyword.</p>
 
-  <p>When the user agent autofills form controls, elements with the same <span>form owner</span> and
+<!--CLEANUP-->
+  <p>When the user agent <dfn data-x="concept-fe-autofill">autofills form controls</dfn>, elements with the same <span>form owner</span> and
   the same <span>autofill scope</span> must use data relating to the same person, address, payment
   instrument, and contact details. <span id="autofill-country" data-x="">When a user agent autofills
   "<code data-x="attr-fe-autocomplete-country">country</code>" and "<code
@@ -53809,12 +53840,15 @@
 
   <p>A user agent prefilling a form control's <span data-x="concept-fe-value">value</span> must not
   cause that control to <span data-x="suffering from a type mismatch">suffer from a type
-  mismatch</span>, <span data-x="suffering from a pattern mismatch">suffer from a pattern
   mismatch</span>, <span data-x="suffering from being too long">suffer from being too long</span>,
   <span data-x="suffering from being too short">suffer from being too short</span>, <span
   data-x="suffering from an underflow">suffer from an underflow</span>, <span data-x="suffering from
   an overflow">suffer from an overflow</span>, or <span data-x="suffering from a step
-  mismatch">suffer from a step mismatch</span>. Where possible given the control's constraints, user
+  mismatch">suffer from a step mismatch</span>. Except when <span
+  data-x="concept-fe-autofill">autofilling</span> for <code
+  data-x="dom-form-requestAutocomplete">requestAutocomplete()</code>, a user agent prefilling a form
+  control's <span data-x="concept-fe-value">value</span> must not cause that control to <span
+  data-x="suffering from a pattern mismatch">suffer from a pattern mismatch</span> either. Where possible given the control's constraints, user
   agents must use the format given as canonical in the aforementioned table. Where it's not possible
   for the canonical format to be used, user agents should use heuristics to attempt to convert
   values so that they can be used.</p>
@@ -53904,7 +53938,286 @@
   </div>
 
 
+  <div class="impl">
 
+  <h6>User interface for bulk autofill</h6>
+
+  <p>When the <dfn data-x="dom-form-requestAutocomplete"><code>requestAutocomplete()</code></dfn>
+  method on a <code>form</code> element is invoked, the user agent must run the following steps:</p>
+
+  <ol>
+
+   <li><p>Let <var data-x="">form</var> be the element on which the method was invoked.</p></li>
+
+   <li>
+
+    <p>If any of the following conditions are met, then <span>queue a task</span> to <span>fail the
+    autofill request</span> on <var data-x="">form</var> with the reason "<code
+    data-x="dom-AutocompleteErrorReason-disabled">disabled</code>", and abort these steps:</p>
+
+    <ul>
+
+     <li><p>the algorithm is not <span>allowed to show a popup</span></p></li>
+
+     <li><p><var data-x="">form</var> is not <span>in a <code>Document</code></span></p></li>
+
+     <li><p><var data-x="">form</var>'s <code>Document</code> is not <span>fully
+     active</span></p></li>
+
+     <li><p><var data-x="">form</var>'s <code data-x="attr-form-autocomplete">autocomplete</code>
+     attribute is in the <span data-x="attr-form-autocomplete-off-state">off</span> state</p></li>
+
+     <li><p>the user has disabled this feature for this <var data-x="">form</var>'s
+     <code>Document</code>'s <span>origin</span></p></li>
+
+     <li><p>the user agent does not support this <var data-x="">form</var>'s fields</p></li>
+
+     <li><p>the <var data-x="">form</var> was obtained via unencrypted channels and the user agent
+     does not support autofill in such situations</p></li>
+
+     <li><p>another instance of this algorithm is already being run for <var
+     data-x="">form</var></p></li>
+
+    </ul>
+
+    <p class="note">User agents are encouraged to log the precise cause in a developer console, to
+    aid debugging.</p>
+
+   </li>
+
+   <li><p>Let <var data-x="">pending autofills</var> be an initially empty list of <span
+   data-x="category-submit">submittable elements</span>, each annotated with a string known as the
+   <i>original autocomplete value</i>.</p></li>
+
+   <li>
+
+    <p>For each element that matches the following criteria, add the element to <var
+    data-x="">pending autofills</var>, with the <i>original autocomplete value</i> annotation being
+    the value of the element's <code data-x="attr-fe-autocomplete">autocomplete</code>
+    attribute:</p>
+
+    <ul>
+
+     <li><p>the element's <span>form owner</span> is <var data-x="">form</var></p></li>
+
+     <li><p>the element is <i data-x="concept-fe-mutable">mutable</i></p></li>
+
+     <li><p>the element is an <code>input</code> element to which the <code
+     data-x="attr-fe-autocomplete">autocomplete</code> attribute currently <span
+     data-x="concept-input-apply">applies</span>, or, the element is a <code>textarea</code>
+     element, or, the element is a <code>select</code> element</p></li>
+
+     <li><p>the element's <span>autofill field name</span> is neither "<code
+     data-x="attr-fe-autocomplete-off">off</code>" nor "<code
+     data-x="attr-fe-autocomplete-on">on</code>"</p></li>
+
+    </ul>
+
+   </li>
+
+   <li><p>Return, but continue running these steps asynchronously.</p></li>
+
+   <li><p>Provide an interface for the user to efficiently fill in some or all of the fields listed
+   in <var data-x="">pending autofills</var>. Await the user's input.</p></li>
+
+   <li>
+
+    <p><span>Queue a task</span> to run the following steps:</p>
+
+    <ol>
+
+     <li>
+
+      <p>If any of the following conditions are met, then <span>fail the autofill request</span> on
+      <var data-x="">form</var> with the reason "<code
+      data-x="dom-AutocompleteErrorReason-disabled">disabled</code>", and abort these steps:</p>
+
+      <ul>
+
+       <li><p><var data-x="">form</var> is no longer <span>in a <code>Document</code></span></p></li>
+
+       <li><p><var data-x="">form</var>'s <code>Document</code> is no longer <span>fully
+       active</span></p></li>
+
+       <li><p><var data-x="">form</var>'s <code data-x="attr-form-autocomplete">autocomplete</code>
+       attribute is now in the <span data-x="attr-form-autocomplete-off-state">off</span>
+       state</p></li>
+
+      </ul>
+
+      <p class="note">Again, user agents are encouraged to log the precise cause in a developer
+      console, to aid debugging.</p>
+
+     </li>
+
+     <li><p>If the user canceled the operation, <span>fail the autofill request</span> on <var
+     data-x="">form</var> with the reason "<code
+     data-x="dom-AutocompleteErrorReason-cancel">cancel</code>", and abort these steps.</p></li>
+
+     <li>
+
+      <p>For each element in <var data-x="">pending autofills</var>, run the following steps:</p>
+
+      <ol>
+
+       <li><p>Let <var data-x="">candidate</var> be the element in question.</p></li>
+
+       <li><p>Let <var data-x="">old autocomplete value</var> be the <i>original autocomplete
+       value</i> annotation associated with <var data-x="">candidate</var> in <var data-x="">pending
+       autofills</var>.</p></li>
+
+       <li>
+
+        <p>If all of the following conditions are met, then <span
+        data-x="concept-fe-autofill">autofill</span> <var data-x="">candidate</var>:</p>
+
+        <ul>
+
+         <li><p><var data-x="">candidate</var>'s <span>form owner</span> is <var data-x="">form</var></p></li>
+
+         <li><p><var data-x="">candidate</var> is still <i data-x="concept-fe-mutable">mutable</i></p></li>
+
+         <li><p><var data-x="">candidate</var> is an <code>input</code> element to which the <code
+         data-x="attr-fe-autocomplete">autocomplete</code> attribute still <span
+         data-x="concept-input-apply">applies</span>, or, <var data-x="">candidate</var> is a
+         <code>textarea</code> element, or, <var data-x="">candidate</var> is a <code>select</code>
+         element</p></li>
+
+         <li><p><var data-x="">candidate</var>'s <span>autofill field name</span> is still equal to
+         <var data-x="">old autocomplete value</var></p></li>
+
+         <li><p>the user provided a value to autofill <var data-x="">candidate</var></p></li>
+
+        </ul>
+
+       </li>
+
+      </ol>
+
+     </li>
+
+     <li>
+
+      <p><span>Statically validate the constraints</span> of <var data-x="">form</var>. If the
+      result was negative, then <span>fail the autofill request</span> on <var data-x="">form</var>
+      with the reason "<code data-x="dom-AutocompleteErrorReason-invalid">invalid</code>", and abort
+      these steps.</p>
+
+      <p class="note"><span data-x="statically validate the constraints">Statically validating the
+      constraints</span> of a <code>form</code> involves firing <code
+      data-x="event-invalid">invalid</code> events to each control that does not <span
+      data-x="concept-fv-valid">satisfy its contraints</span>.</p>
+
+     </li>
+
+     <li><p><span>Fire a simple event</span> named <code
+     data-x="event-autocomplete">autocomplete</code> at <var data-x="">form</var>.</p></li>
+
+    </ol>
+
+   </li>
+
+  </ol>
+
+  <p>When the user agent is required to <dfn>fail the autofill request</dfn> on a <code>form</code>
+  element <var data-x="">target</var> with a reason <var data-x="">reason</var>, the user agent must
+  dispatch an event that uses the <code>AutocompleteErrorEvent</code> interface, with the event type
+  <code data-x="">autocompleteerror</code>, which does not bubble, is not cancelable, has no default
+  action, has its <code data-x="dom-AutocompleteErrorEvent-reason">reason</code> attribute set to
+  <var data-x="">reason</var>, and which is <span data-x="concept-events-trusted">trusted</span>, at
+  <var data-x="">target</var>.</p></li>
+
+  <p>The <span>task source</span> for the <span data-x="concept-task">tasks</span> mentioned in this
+  section is the <span>DOM manipulation task source</span>.</p>
+
+  </div>
+
+
+  <h6>The <code>AutocompleteErrorEvent</code> interface</h6>
+
+  <pre class="idl">enum <dfn>AutocompleteErrorReason</dfn> { "" /* <span data-x="dom-AutocompleteErrorReason-none">empty string</span> */, "<span data-x="dom-AutocompleteErrorReason-cancel">cancel</span>", "<span data-x="dom-AutocompleteErrorReason-disabled">disabled</span>", "<span data-x="dom-AutocompleteErrorReason-invalid">invalid</span>" };
+
+[Constructor(DOMString type, optional <span>AutocompleteErrorEventInit</span> eventInitDict)]
+interface <dfn>AutocompleteErrorEvent</dfn> : <span>Event</span> {
+  readonly attribute <span>AutocompleteErrorReason</span> <span data-x="dom-AutocompleteErrorEvent-reason">reason</span>;
+};
+
+dictionary <dfn>AutocompleteErrorEventInit</dfn> : <span>EventInit</span> {
+  <span>AutocompleteErrorReason</span> reason;
+};</pre>
+
+  <dl class="domintro">
+
+   <dt><var data-x="">event</var> . <code data-x="dom-AutocompleteErrorEvent-reason">reason</code></dt>
+
+   <dd>
+
+    <p>For the <code data-x="event-autocompleteerror">autocompleteerror</code> event, returns the
+    general reason for the failure of the <code
+    data-x="dom-form-requestAutocomplete">requestAutocomplete()</code> method, from the list
+    below.</p>
+
+   </dd>
+
+  </dl>
+
+  <p>The defined reason codes are:
+
+  <dl>
+
+   <dt>"<dfn data-x="dom-AutocompleteErrorReason-none"><code></code></dfn>" (the empty string)</dt>
+
+   <dd><p>Reason is unknown.</p></dd>
+
+   <dt>"<dfn data-x="dom-AutocompleteErrorReason-cancel"><code>cancel</code></dfn>"</dt>
+
+   <dd><p>The user canceled the autofill interface.</p></dd>
+
+   <dt>"<dfn data-x="dom-AutocompleteErrorReason-disabled"><code>disabled</code></dfn>"</dt>
+
+   <dd>
+
+    <p>The autofill interface is disabled for this form.</p>
+
+    <p>There are many reasons why this might be the case; the precise reason is not given, to
+    protect the user's privacy. Amongst these reasons are such factors as:</p>
+
+    <ul class="brief">
+
+     <li><p>The page being delivered over an unencrypted connection (susceptible to
+     man-in-the-middle attacks), when the user agent does not want to risk the user's information
+     being provided to an attacker.</p></li>
+
+     <li><p>The form having a combination of fields for which the user agent does not have a
+     dedicated autofill interface.</p></li>
+
+     <li><p>The form's <code data-x="attr-form-autocomplete">autocomplete</code> attribute being in
+     the <span data-x="attr-form-autocomplete-off-state">off</span> state.</p></li>
+
+     <li><p>The user having disabled the feature.</p></li>
+
+    </ul>
+
+   </dd>
+
+   <dt>"<dfn data-x="dom-AutocompleteErrorReason-invalid"><code>invalid</code></dfn>"</dt>
+
+   <dd><p>The fields have been prefilled, but at least one of the controls in the form does not
+   <span data-x="concept-fv-valid">satisfy its constraints</span>.</p></dd>
+
+  </dl>
+
+  <div class="impl">
+
+  <p>The <dfn data-x="dom-AutocompleteErrorEvent-reason"><code>reason</code></dfn> attribute must
+  return the value it was initialized to. When the object is created, this attribute must be
+  initialized to the <span data-x="dom-AutocompleteErrorReason-none">empty string</span>. It
+  represents the context information for the event.</p>
+
+  </div>
+
+
+
 <!--TOPIC:DOM APIs-->
   <h4 id="textFieldSelection">APIs for the text field selections</h4>
 
@@ -81609,6 +81922,8 @@
     <tr><th><span data-x="event handlers">Event handler</span> <th><span>Event handler event type</span>
    <tbody>
     <tr><td><dfn data-x="handler-onabort"><code>onabort</code></dfn> <td> <code data-x="event-abort">abort</code>
+    <tr><td><dfn data-x="handler-onautocomplete"><code>onautocomplete</code></dfn> <td> <code data-x="event-autocomplete">autocomplete</code> <!-- new for requestAutocomplete() -->
+    <tr><td><dfn data-x="handler-onautocompleteerror"><code>onautocompleteerror</code></dfn> <td> <code data-x="event-autocompleteerror">autocompleteerror</code> <!-- new for requestAutocomplete() -->
     <tr><td><dfn data-x="handler-oncancel"><code>oncancel</code></dfn> <td> <code data-x="event-cancel">cancel</code>
     <tr><td><dfn data-x="handler-oncanplay"><code>oncanplay</code></dfn> <td> <code data-x="event-media-canplay">canplay</code>
     <tr><td><dfn data-x="handler-oncanplaythrough"><code>oncanplaythrough</code></dfn> <td> <code data-x="event-media-canplaythrough">canplaythrough</code>
@@ -81754,6 +82069,8 @@
   <pre class="idl">[NoInterfaceObject]
 interface <dfn>GlobalEventHandlers</dfn> {
            attribute <span>EventHandler</span> <span data-x="handler-onabort">onabort</span>;
+           attribute <span>EventHandler</span> <span data-x="handler-onautocomplete">onautocomplete</span>;
+           attribute <span>EventHandler</span> <span data-x="handler-onautocompleteerror">onautocompleteerror</span>;
            attribute <span>EventHandler</span> <span data-x="handler-onblur">onblur</span>;
            attribute <span>EventHandler</span> <span data-x="handler-oncancel">oncancel</span>;
            attribute <span>EventHandler</span> <span data-x="handler-oncanplay">oncanplay</span>;
@@ -114792,6 +115109,18 @@
      <td> <span data-x="event handler content attributes">Event handler content attribute</span>
 
     <tr>
+     <th id="ix-handler-onautocomplete"> <code data-x="">onautocomplete</code>
+     <td> <span data-x="handler-onautocomplete">HTML elements</span>
+     <td> <code data-x="event-autocomplete">autocomplete</code> event handler
+     <td> <span data-x="event handler content attributes">Event handler content attribute</span>
+
+    <tr>
+     <th id="ix-handler-onautocompleteerror"> <code data-x="">onautocompleteerror</code>
+     <td> <span data-x="handler-onautocompleteerror">HTML elements</span>
+     <td> <code data-x="event-autocompleteerror">autocompleteerror</code> event handler
+     <td> <span data-x="event handler content attributes">Event handler content attribute</span>
+
+    <tr>
      <th id="ix-handler-window-onafterprint"> <code data-x="">onafterprint</code>
      <td> <code data-x="handler-window-onafterprint">body</code>
      <td> <code data-x="event-afterprint">afterprint</code> event handler for <code>Window</code> object
@@ -115751,6 +116080,18 @@
      <td> <code>Window</code>
      <td> Fired at the <code>Window</code> when the download was aborted by the user
 
+    <tr> <!-- autocomplete -->
+     <td> <dfn data-x="event-autocomplete"><code>autocomplete</code></dfn>
+     <td> <code>Event</code>
+     <td> <code>form</code> elements
+     <td> Fired at a <code>form</code> element when it is <span data-x="dom-form-requestAutocomplete">autofilled</span>
+
+    <tr> <!-- autocompleteerror -->
+     <td> <dfn data-x="event-autocompleteerror"><code>autocompleteerror</code></dfn>
+     <td> <code>Event</code>
+     <td> <code>form</code> elements
+     <td> Fired at a <code>form</code> element when a <span data-x="dom-form-requestAutocomplete">bulk autofill</span> fails
+
     <tr> <!-- DOMContentLoaded -->
      <td> <dfn data-x="event-DOMContentLoaded"><code>DOMContentLoaded</code></dfn>
      <td> <code>Event</code>
@@ -116826,6 +117167,7 @@
   Erik Rose,
   Evan Martin,
   Evan Prodromou,
+  Evan Stade,
   Evert,
   fantasai,
   Felix Sasaki,




More information about the Commit-Watchers mailing list