Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add an autofill module #706

Open
wants to merge 14 commits into
base: main
Choose a base branch
from
109 changes: 108 additions & 1 deletion index.bs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ spec: WEBDRIVER; urlPrefix: https://w3c.github.io/webdriver/
text: input cancel list; url: dfn-input-cancel-list
text: intermediary node; url: dfn-intermediary-node
text: invalid argument; url: dfn-invalid-argument
text: invalid element state; url: dfn-invalid-element-state
text: invalid selector; url: dfn-invalid-selector
text: invalid session id; url: dfn-invalid-session-id
text: is element origin; url: dfn-is-element-origin
Expand Down Expand Up @@ -185,9 +186,12 @@ spec: HTML; urlPrefix: https://html.spec.whatwg.org/multipage/
text: active document; for: browsing context; url: document-sequences.html#active-document
text: active window; url: document-sequences.html#active-window
text: alert; url: timers-and-user-prompts.html#dom-alert
text: autofill; url: form-control-infrastructure.html#autofill
text: autofill detail tokens; url: form-control-infrastructure.html#autofill-detail-tokens
text: close; url: window-object.html#close-a-browsing-context
text: disabled; url: form-control-infrastructure.html#concept-fe-disabled
text: File Upload state; url: input.html#file-upload-state-(type=file)
text: form-associated element; url: forms.html#form-associated-element
text: confirm; url: timers-and-user-prompts.html#dom-confirm
text: context mode; url: /canvas.html#offscreencanvas-context-mode
text: create a classic script; url: webappapis.html#creating-a-classic-script
Expand Down Expand Up @@ -421,7 +425,8 @@ CommandData = (
NetworkCommand //
ScriptCommand //
SessionCommand //
StorageCommand
StorageCommand //
AutofillCommand
)

EmptyParams = {
Expand Down Expand Up @@ -636,6 +641,7 @@ with the following additional codes:
<pre class="cddl local-cddl">
ErrorCode = "invalid argument" /
"invalid selector" /
"invalid element state" /
"invalid session id" /
"move target out of bounds" /
"no such alert" /
Expand Down Expand Up @@ -10696,6 +10702,107 @@ The [=remote end steps=] given |session| and |command parameters| are:

</div>

## The autofill Module ## {#module-autofill}

The <dfn export for=modules>autofill module</dfn> contains functionality for triggering autofill.

### Definition ### {#module-autofill-definition}

[=remote end definition=]

<pre class="cddl remote-cddl">

AutofillCommand = (
autofill.trigger
)
</pre>

### Commands ### {#module-autofill-commands}

#### The autofill.trigger Command #### {#command-autofill-trigger}

The <dfn export for=commands>autofill.trigger</dfn> command triggers autofill
on a particular form field using the provided fields.

<dl>
<dt>Command Type</dt>
<dd>
<pre class="cddl remote-cddl">
autofill.trigger = (
OrKoN marked this conversation as resolved.
Show resolved Hide resolved
method: "autofill.trigger",
params: autofill.TriggerParameters
)

autofill.TriggerParameters = {
context: browsingContext.BrowsingContext,
element: script.SharedReference,
fields: [*autofill.Field]
}

autofill.Field = (
name: autofill.FieldName,
value: text
)
</pre>
</dd>
<dt>Return Type</dt>
<dd>
<pre class="cddl">
EmptyResult
</pre>
</dd>
</dl>

<div algorithm="remote end steps for autofill.trigger">

The [=remote end steps=] with |session| and |command parameters| are:

1. Let |context id| be the value of the <code>context</code> field of
|command parameters|.

1. Let |context| be the result of [=trying=] to [=get a browsing context=]
with |context id|.

1. Let |document| be |context|'s [=active document=].

1. Let |environment settings| be the [=environment settings object=] whose
[=relevant global object=]'s <a>associated <code>Document</code></a> is
|document|.

1. Let |realm| be |environment settings|' [=realm execution context=]'s
Realm component.

1. Let |element id| be the value of the <code>element</code> field of
|command parameters|.

1. Let |element| be the result of [=trying=] to [=deserialize remote reference=]
with the |element id|, |realm|, and |session|.

1. Let |fields| be the value of the <code>fields</code> field of |command
parameters|.

1. If |element| is not a [=form-associated element=] or |element|'s [=form owner=] is
yoavweiss marked this conversation as resolved.
Show resolved Hide resolved
null, return an [=error=] with [=error code=] [=invalid element state=].

1. If user agent cannot autofill |fields|, return an [=error=] with
[=error code=] [=unsupported operation=].

1. The user agent should [=autofill=] |element| and |element|'s [=form
owner=], while taking into account the contents of |fields|.

1. Return [=success=] with data null.

</div>

#### The autofill.FieldName Type #### {#type-autofill-FieldName}

<pre class="cddl remote-cddl local-cddl">
autofill.FieldName = text;
</pre>

The <code>autofill.FieldName</code> is a token. Valid token values are defined in
[=autofill detail tokens=].

# Patches to Other Specifications # {#patches}

This specification requires some changes to external specifications to provide the necessary
Expand Down
Loading