To prepare credential
requests given a [=Document=] |document:Document|, a sequence of
{{DigitalCredentialGetRequest}} or {{DigitalCredentialCreateRequest}}
- |requests|, a {{Promise}} |promise:Promise|, and an optional
+ objects |requests|, a {{Promise}} |promise:Promise|, and an optional
{{AbortSignal}} |signal:AbortSignal|:
-
-
-
+
+
Let |global| be |document|'s [=relevant global object=].
+
+
If the [=credential request coordinator=] is not in the "[=credential
+ request coordinator/idle=]" [=credential request coordinator/interaction
+ state=]:
+
+
[=Queue a global task=] on the [=DOM manipulation task source=]
+ given |global| to [=reject=] |promise| with an
+ {{"InvalidStateError"}} {{DOMException}}.
+
+
Return.
+
+
+
+
Assert: the [=credential request coordinator=]'s [=credential request
+ coordinator/active promise=] is `null`.
+
+
Set the [=credential request coordinator=]'s [=credential request
+ coordinator/active promise=] to |promise|.
+
+
If |signal| was passed:
+
+
Set the [=credential request coordinator=]'s [=credential request
+ coordinator/abort signal=] to |signal|.
+
+
Let |abortAlgorithm| be the following algorithm:
+
+
If the [=credential request coordinator=]'s [=credential
+ request coordinator/active promise=] is not |promise|, return.
+
Set the [=credential request coordinator=]'s [=credential request
+ coordinator/abort algorithm=] to |abortAlgorithm|.
+
+
[=AbortSignal/Add=] |abortAlgorithm| to |signal|.
+
+
+
+
Let |validatedRequests| be a new empty [=list=].
+
+
[=List/For each=] |request| of |requests|:
+
+
Let |protocol| be |request|'s
+ {{DigitalCredentialGetRequest/protocol}}, if |request| is a
+ {{DigitalCredentialGetRequest}}, or |request|'s
+ {{DigitalCredentialCreateRequest/protocol}}, if |request| is a
+ {{DigitalCredentialCreateRequest}}.
+
+
If |protocol| does not equal any [=enumeration value=] in
+ {{DigitalCredentialProtocol}}, [=iteration/continue=].
+
+
If the [=user agent=] does not allow |protocol|,
+ [=iteration/continue=].
+
+
Let |validatedRequest| be the result of validating |request|'s
+ [=digital credential/request data=] according to |request|'s
+ [=digital credential/presentation protocol=] or other criteria.
+ Validation requirements are protocol-specific and are outside the
+ scope of this specification.
+
+
Set the [=credential request coordinator=] [=credential request
+ coordinator/interaction state=] to "[=credential request
+ coordinator/requesting=]".
+
+
[=credential request coordinator/Present the credential request=]
+ with |document|, |validatedRequests|, and |signal|.
+
+
If |document| stops being [=Document/fully active=], [=credential
+ request coordinator/Abort the credential request=] an {{"AbortError"}}
+ {{DOMException}}.
Abort the credential request
- To be written.
+ To abort the
+ credential request given a [=Document=] |document:Document| and a
+ JavaScript value |error|:
+
+
If the [=credential request coordinator=]'s [=credential request
+ coordinator/active promise=] is `null`, return.
+
+
Let |activePromise| be the [=credential request coordinator=]'s
+ [=credential request coordinator/active promise=].
+
+
If the [=credential request coordinator=] is in the "[=credential
+ request coordinator/requesting=]" [=credential request
+ coordinator/interaction state=]:
+
+
Set the [=credential request coordinator=] [=credential request
+ coordinator/interaction state=] to "[=credential request
+ coordinator/aborting=]".
+
+
Dismiss the [=credential chooser=] and await confirmation of
+ dismissal.
+
[=credential request coordinator/Present the credential request=]
with |document|, |validatedRequests|, and |signal|.
-
If |document| stops being [=Document/fully active=], [=credential
- request coordinator/Abort the credential request=] an {{"AbortError"}}
- {{DOMException}}.
-
Abort the credential request
@@ -908,27 +904,12 @@
JavaScript value |error|:
-
If the [=credential request coordinator=]'s [=credential request
- coordinator/active promise=] is `null`, return.
-
-
Let |activePromise| be the [=credential request coordinator=]'s
- [=credential request coordinator/active promise=].
-
-
If the [=credential request coordinator=] is in the "[=credential
- request coordinator/requesting=]" [=credential request
- coordinator/interaction state=]:
-
-
Set the [=credential request coordinator=] [=credential request
- coordinator/interaction state=] to "[=credential request
- coordinator/aborting=]".
-
-
Dismiss the [=credential chooser=] and await confirmation of
- dismissal.
-
[=Queue a global task=] on the [=DOM manipulation task source=]
given |global| to [=reject=] |promise| with an
- {{"InvalidStateError"}} {{DOMException}}.
+ {{"NotAllowedError"}} {{DOMException}}.