@@ -609,12 +609,21 @@ <h2>
609609 member is set.
610610 </ p >
611611 </ div >
612- < p data-link-for ="PaymentRequest ">
613- Because the simultaneous display of multiple < a > PaymentRequest</ a > user
614- interfaces might confuse the user, this specification limits the
615- < a > user agent</ a > to displaying one at a time via the < a > show()</ a >
616- method. This is ensured by a < dfn > payment request is showing</ dfn >
617- boolean.
612+ < p >
613+ A < var > request</ var > 's < dfn > payment-relevant browsing context</ dfn > is
614+ that < a > PaymentRequest</ a > 's < a data-cite =
615+ "HTML#concept-relevant-global "> relevant global object</ a > 's browsing
616+ context's < a > top-level browsing context</ a > . Every < a > payment-relevant
617+ browsing context</ a > has a < dfn > payment request is showing</ dfn >
618+ boolean, which prevents showing more than one payment UI at a time.
619+ </ p >
620+ < p class ="Note ">
621+ The < a > payment request is showing</ a > boolean simply prevents more than
622+ one payment UI being shown in a single browser tab. However, a
623+ < a > payment handler</ a > can restrict the < a > user agent</ a > to showing
624+ only one payment UI across all browser windows and tabs. Other payment
625+ handlers might allow showing a payment UI across disparate browser
626+ tabs.
618627 </ p >
619628 < section >
620629 < h2 >
@@ -892,11 +901,12 @@ <h2>
892901 the < a > show()</ a > method returns.
893902 </ p >
894903 < p >
895- It is not possible to show multiple < a > PaymentRequest</ a > s at the
896- same time within one < a > user agent</ a > . If a < a > PaymentRequest</ a >
897- is already showing, calling < a > show()</ a > —from any Web site— will
898- return < a > a promise rejected with</ a > an "< a > AbortError</ a > "
899- < a > DOMException</ a > .
904+ Each payment handler controls what happens when multiple browsing
905+ context simultaneously call the < a > show()</ a > method. For instance,
906+ some payment handlers will allow multiple payment UIs to be shown
907+ in different browser tabs/windows. Other payment handlers might
908+ only allow a single payment UI to be shown for the entire user
909+ agent.
900910 </ p >
901911 </ div >
902912 < p data-tests ="payment-request-show-method.https.html ">
@@ -935,9 +945,10 @@ <h2>
935945 then return < a > a promise rejected with</ a > an
936946 "< a > InvalidStateError</ a > " < a > DOMException</ a > .
937947 </ li >
938- < li > If the < a > user agent</ a > 's < a > payment request is showing</ a >
939- boolean is true, then return < a > a promise rejected with</ a > an
940- "< a > AbortError</ a > " < a > DOMException</ a > .
948+ < li > If < var > request</ var > 's < a > payment-relevant browsing
949+ context</ a > 's < a > payment request is showing</ a > boolean is true, then
950+ return < a > a promise rejected with</ a > an "< a > AbortError</ a > "
951+ < a > DOMException</ a > .
941952 </ li >
942953 < li > Set < var > request</ var > .< a > [[\state]]</ a > to "< a > interactive</ a > ".
943954 </ li >
967978 advantage of this step.
968979 </ p >
969980 </ li >
970- < li > Set the < a > user agent </ a > 's < a > payment request is showing </ a >
971- boolean to true.
981+ < li > Set < var > request </ var > 's < a > payment-relevant browsing
982+ context </ a > 's < a > payment request is showing </ a > boolean to true.
972983 </ li >
973984 < li > Return < var > acceptPromise</ var > and perform the remaining steps
974985 < a > in parallel</ a > .
@@ -1001,8 +1012,9 @@ <h2>
10011012 </ li >
10021013 < li > Reject < var > acceptPromise</ var > with < var > error</ var > .
10031014 </ li >
1004- < li > Set < a > user agent</ a > 's < a > payment request is showing</ a >
1005- boolean to false.
1015+ < li > Set < var > request</ var > 's < a > payment-relevant browsing
1016+ context</ a > 's < a > payment request is showing</ a > boolean to
1017+ false.
10061018 </ li >
10071019 < li > Terminate this algorithm.
10081020 </ li >
@@ -1032,8 +1044,8 @@ <h2>
10321044 < li > Reject < var > acceptPromise</ var > with
10331045 "< a > NotSupportedError</ a > " < a > DOMException</ a > .
10341046 </ li >
1035- < li > Set < a > user agent </ a > 's < a > payment request is showing </ a >
1036- boolean to false.
1047+ < li > Set < var > request </ var > 's < a > payment-relevant browsing
1048+ context </ a > 's < a > payment request is showing </ a > boolean to false.
10371049 </ li >
10381050 < li > Terminate this algorithm.
10391051 </ li >
@@ -1095,8 +1107,8 @@ <h2>
10951107 < ol >
10961108 < li > Close down the user interface.
10971109 </ li >
1098- < li > Set the < a > user agent </ a > 's < a > payment request is showing </ a >
1099- boolean to false.
1110+ < li > Set < var > request </ var > 's < a > payment-relevant browsing
1111+ context </ a > 's < a > payment request is showing </ a > boolean to false.
11001112 </ li >
11011113 < li > Reject < var > acceptPromise</ var > with an "< a > AbortError</ a > "
11021114 < a > DOMException</ a > .
@@ -1204,9 +1216,9 @@ <h2>
12041216 </ li >
12051217 < li data-tests =
12061218 "payment-request/payment-request-canmakepayment-method-protection.https.html ">
1207- Optionally, at the < a > user agent </ a > 's discretion, return < a > a
1208- promise rejected with</ a > a "< a > NotAllowedError</ a > "
1209- < a > DOMException</ a > .
1219+ Optionally, at the < a > top-level browsing context </ a > 's discretion,
1220+ return < a > a promise rejected with</ a > a "< a > NotAllowedError</ a > " < a >
1221+ DOMException</ a > .
12101222 < p class ="note " data-link-for ="PaymentRequest ">
12111223 This allows user agents to apply heuristics to detect and prevent
12121224 abuse of the < a > canMakePayment()</ a > method for fingerprinting
@@ -3170,6 +3182,9 @@ <h2>
31703182 "WEBIDL#dfn-convert-ecmascript-to-idl-value "> convert</ a > to
31713183 < a data-cite ="WEBIDL#idl-object "> object</ a > .
31723184 </ li >
3185+ < li > Set < var > request</ var > 's < a > payment-relevant browsing
3186+ context</ a > 's < a > payment request is showing</ a > boolean to false.
3187+ </ li >
31733188 < li > If conversion results in a < a data-cite =
31743189 "WEBIDL#dfn-exception "> exception</ a > < var > error</ var > :
31753190 < ol >
@@ -3201,8 +3216,8 @@ <h2>
32013216 < ol >
32023217 < li > Close down the user interface.
32033218 </ li >
3204- < li > Set the < a > user agent </ a > 's < a > payment request is showing </ a >
3205- boolean to false.
3219+ < li > Set < var > request </ var > 's < a > payment-relevant browsing
3220+ context </ a > 's < a > payment request is showing </ a > boolean to false.
32063221 </ li >
32073222 < li > Reject < var > retryPromise</ var > with an "< a > AbortError</ a > "
32083223 < a > DOMException</ a > .
@@ -3513,8 +3528,8 @@ <h2>
35133528 < ol >
35143529 < li > Close down the user interface.
35153530 </ li >
3516- < li > Set the < a > user agent </ a > 's < a > payment request is showing </ a >
3517- boolean to false.
3531+ < li > Set < var > request </ var > 's < a > payment-relevant browsing
3532+ context </ a > 's < a > payment request is showing </ a > boolean to false.
35183533 </ li >
35193534 < li > Reject < var > promise</ var > with an "< a > AbortError</ a > "
35203535 < a > DOMException</ a > .
@@ -3527,8 +3542,8 @@ <h2>
35273542 agent</ a > MAY use the value < var > result</ var > to influence the
35283543 user experience.
35293544 </ li >
3530- < li > Set the < a > user agent </ a > 's < a > payment request is showing </ a >
3531- boolean to false.
3545+ < li > Set < var > request </ var > 's < a > payment-relevant browsing
3546+ context </ a > 's < a > payment request is showing </ a > boolean to false.
35323547 </ li >
35333548 < li > Resolve < var > promise</ var > with undefined.
35343549 </ li >
@@ -4609,8 +4624,8 @@ <h2>
46094624 </ li >
46104625 < li > Set < var > request</ var > .< a > [[\state]]</ a > to "< a > closed</ a > ".
46114626 </ li >
4612- < li > Set the < a > user agent </ a > 's < a > payment request is showing </ a >
4613- boolean to false.
4627+ < li > Set < var > request </ var > 's < a > payment-relevant browsing
4628+ context </ a > 's < a > payment request is showing </ a > boolean to false.
46144629 </ li >
46154630 < li > Let < var > error</ var > be an "< a > AbortError</ a > "
46164631 < a > DOMException</ a > .
@@ -4989,8 +5004,9 @@ <h2>
49895004 < a > Queue a task</ a > on the < a > user interaction task source</ a > to
49905005 perform the following steps:
49915006 < ol >
4992- < li > Set the < a > user agent</ a > 's < a > payment request is
4993- showing</ a > boolean to false.
5007+ < li > Set < var > request</ var > 's < a > payment-relevant browsing
5008+ context</ a > 's < a > payment request is showing</ a > boolean to
5009+ false.
49945010 </ li >
49955011 < li > Set < var > request</ var > .< a > [[\state]]</ a > to
49965012 "< a > closed</ a > ".
0 commit comments