@@ -630,19 +630,19 @@ <h2>
630630 </ dt >
631631 < dd >
632632 < p >
633- Takes an [=environment settings object=] , and returns a new [=permission key=]. If
634- unspecified, this defaults to the [=default permission key generation algorithm=]. A
635- feature that specifies a custom [=powerful feature/permission key generation
636- algorithm=] MUST also specify a [=powerful feature/permission key comparison
637- algorithm=].
633+ Takes an [=origin=] |origin| and an [=origin=] |top level origin| , and returns a new
634+ [=permission key=]. If unspecified, this defaults to the [=default permission key
635+ generation algorithm=]. A feature that specifies a custom [=powerful feature/permission
636+ key generation algorithm=] MUST also specify a [=powerful feature/permission key
637+ comparison algorithm=].
638638 </ p >
639639 < div class ="algorithm ">
640640 < p >
641641 The < dfn class ="export "> default permission key generation algorithm</ dfn > , given an
642- [=environment settings object= ] |settings |, runs the following steps:
642+ [=origin=] |origin| and an [=origin= ] |top level origin |, runs the following steps:
643643 </ p >
644644 < ol >
645- < li > Return |settings|'s [=environment/ top- level origin=] .
645+ < li > Return |top level origin| .
646646 </ li >
647647 </ ol >
648648 </ div >
@@ -805,7 +805,9 @@ <h3 id="reading-current-states">
805805 </ ol >
806806 </ li >
807807 < li > Let |key| be the result of [=powerful feature/permission key generation
808- algorithm|generating a permission key=] for |descriptor| with |settings|.
808+ algorithm|generating a permission key=] for |descriptor| with |settings|'s
809+ [=environment settings object/origin=] and |settings|'s
810+ [=environment/top-level origin=].
809811 </ li >
810812 < li > Let |entry| be the result of [=get a permission store entry|getting a permission
811813 store entry=] with |descriptor| and |key|.
@@ -855,8 +857,12 @@ <h3 id="requesting-more-permission">
855857 this framework.
856858 </ p >
857859 </ li >
860+ < li > Let |settings| be the [=current settings object=].
861+ </ li >
858862 < li > Let |key| be the result of [=powerful feature/permission key generation
859- algorithm|generating a permission key=] with the [=current settings object=].
863+ algorithm|generating a permission key=] for |descriptor| with |settings|'s
864+ [=environment settings object/origin=] and |settings|'s [=environment/top-level
865+ origin=].
860866 </ li >
861867 < li > [=Queue a task=] on the [=current settings object=]'s [=environment settings
862868 object/responsible event loop=] to [=set a permission store entry=] with |descriptor|,
@@ -1235,19 +1241,35 @@ <h2 id="automation">
12351241 < p >
12361242 To < dfn data-for ="WebDriver "> set a permission</ dfn > given a {{PermissionDescriptor}}
12371243 |descriptor:PermissionDescriptor|, a {{PermissionState}} |state:PermissionState|, an
1238- optional |origin |, and an optional |user agent|:
1244+ optional [=permission key=] |key |, and an optional |user agent|:
12391245 </ p >
12401246 < ol >
1241- < li > Let |target origin| be [=current settings object=]'s [=environment settings
1242- object/origin=] if |origin| is null, or |origin| otherwise.
1247+ < li > Let |target key| be the result of [=powerful feature/permission key generation
1248+ algorithm|generating a permission key=] for |descriptor| with [=current settings
1249+ object=]'s [=environment settings object/origin=] and [=current settings object=]'s
1250+ [=environment/top-level origin=] if |key| is null, or |key| otherwise.
1251+ </ li >
1252+ < li > Let |settings list| be a < a > list</ a > containing all [=environment settings objects=]
1253+ which belong to the |user agent| if provided, or all user agents otherwise.
1254+ </ li >
1255+ < li > Let |targets| be an empty < a > list</ a > .
1256+ </ li >
1257+ < li > [=list/For each=] [=environment settings object=] |settings| in |settings list|:
1258+ < ol >
1259+ < li > Let |settings key| be be the result of [=powerful feature/permission key
1260+ generation algorithm|generating a permission key=] for |descriptor| with |settings|'s
1261+ [=environment settings object/origin=] and |settings|'s [=environment/top-level origin=].
1262+ </ li >
1263+ < li > Let |matches| be the result of running the [=powerful feature/permission key
1264+ comparison algorithm=] for |descriptor|, given |settings key| and |key|.
1265+ </ li >
1266+ < li > If |matches|, then [=list/append=] |settings| to |targets|.
1267+ </ ol >
12431268 </ li >
1244- < li > Let |targets| be a < a > list</ a > containing all [=environment settings objects=] whose
1245- [=environment settings object/origin=] is [=same origin=] with |target origin|, and which
1246- belong to the |user agent| if provided, or all user agents otherwise.
12471269 </ li >
12481270 < li > Let |tasks| be an empty < a > list</ a > .
12491271 </ li >
1250- < li > For each [=environment settings object=] |target| in |targets|:
1272+ < li > [=list/ For each=] [=environment settings object=] |target| in |targets|:
12511273 < ol >
12521274 < li > [=Queue a task=] |task| on the [=permissions task source=] of |target|'s
12531275 [=relevant settings object=]'s [=environment settings object/global object=]'s
@@ -1437,6 +1459,7 @@ <h6 id="webdriver-bidi-command-permissions-setPermission">
14371459 descriptor: permissions.PermissionDescriptor,
14381460 state: permissions.PermissionState,
14391461 origin: text,
1462+ ? topLevelOrigin: text,
14401463 ? userContext: text,
14411464 }
14421465 </ pre >
@@ -1476,10 +1499,17 @@ <h6 id="webdriver-bidi-command-permissions-setPermission">
14761499 </ li >
14771500 < li > Let |origin| be the value of the `origin` field of |command parameters|.
14781501 </ li >
1502+ < li > Let |top level origin| be the value of the `topLevelOrigin` field of
1503+ |command parameters|, if present, and |origin| otherwise.
1504+ </ li >
1505+ < li > Let |key| be the result of [=powerful feature/permission key generation
1506+ algorithm|generating a permission key=] for |descriptor| with |origin| and
1507+ |top level origin|.
1508+ </ li >
14791509 < li > Let |user agent| be the [=user agent=] that represents the [=user context=]
14801510 with the id |user context id|.
14811511 </ li >
1482- < li > [=Set a permission=] with |typedDescriptor|, |state|, |origin |, and |user
1512+ < li > [=Set a permission=] with |typedDescriptor|, |state|, |key |, and |user
14831513 agent|.
14841514 </ li >
14851515 < li > Return [=success=] with data `null`.
0 commit comments