@ai-ecoverse/slicc-browsers 1.20.3 → 1.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "setVersion": "1.20.3",
3
+ "setVersion": "1.21.1",
4
4
  "sources": [
5
5
  {
6
6
  "repo": "ai-ecoverse/slicc-cli",
@@ -102,7 +102,10 @@
102
102
  "clientExit": "closing the guarded client mid-row: the client has close(), the clientFactory makes a fresh guarded client for the next leg, and an independent unguarded observer outlives it",
103
103
  "siteIsolationOff": "the browser runs without site isolation, so a cross-site iframe shares its parent's process",
104
104
  "inboundDelay": "a harness gate holding browser-to-guard messages until release during a history restore, with seed and release evidence",
105
- "forwardAudit": "a complete browser-side forwarding ledger for every history-restore probe"
105
+ "forwardAudit": "a complete browser-side forwarding ledger for history-restore probes and for checks of a command's forwarded params (client.forwarded)",
106
+ "stockSetup": "the guard admits stock clients' setup calls: init scripts with no code (the no-code regex is matched on the whole string without the multiline flag), the four display emulation calls, bindings scoped to an isolated world, Page.createIsolatedWorld on an ordinary frame with grantUniveralAccess and contentSecurityPolicy stripped and no executionContextId for any other frame, and Target.setAutoAttach narrowed to tab targets (pages under the tab held like pages, with the same URL redaction in targetInfo)",
107
+ "syntheticAutoAttach": "the transport has no native Target.setAutoAttach, so the guard attaches new tabs, pages and their children itself and synthesizes Target.attachedToTarget, with the same placement and holds",
108
+ "secureOrigin": "the fixture and page origins are secure contexts (HTTPS), so service worker registration is available"
106
109
  },
107
110
  "placeholders": {
108
111
  "target": "the target's origin; {plain} on the control",
@@ -24735,6 +24738,4666 @@
24735
24738
  "loaded": "{target}/canary/{tag}",
24736
24739
  "observer": "fixture"
24737
24740
  }
24741
+ },
24742
+ {
24743
+ "id": "E7.init-script",
24744
+ "family": "E",
24745
+ "kind": "cdp",
24746
+ "scope": "any",
24747
+ "setup": [
24748
+ {
24749
+ "page": "tab",
24750
+ "url": "{ordinary}/doc?n=start-{tag}"
24751
+ },
24752
+ {
24753
+ "observer": "watch"
24754
+ },
24755
+ {
24756
+ "cdp": "Page.enable"
24757
+ },
24758
+ {
24759
+ "cdp": "Runtime.enable"
24760
+ },
24761
+ {
24762
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24763
+ "params": {
24764
+ "source": "",
24765
+ "worldName": "slicc-removed-{tag}",
24766
+ "runImmediately": true
24767
+ },
24768
+ "as": "removedWorld",
24769
+ "requires": ["stockSetup"]
24770
+ },
24771
+ {
24772
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24773
+ "params": {
24774
+ "source": "",
24775
+ "worldName": "slicc-playwright-{tag}"
24776
+ },
24777
+ "as": "playwrightWorld",
24778
+ "requires": ["stockSetup"]
24779
+ },
24780
+ {
24781
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24782
+ "params": {
24783
+ "source": "//# sourceURL=pptr:internal",
24784
+ "worldName": "slicc-puppeteer-{tag}"
24785
+ },
24786
+ "as": "puppeteerWorld",
24787
+ "requires": ["stockSetup"]
24788
+ },
24789
+ {
24790
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24791
+ "params": {
24792
+ "source": "",
24793
+ "worldName": "slicc-immediate-{tag}",
24794
+ "runImmediately": true
24795
+ },
24796
+ "as": "immediateWorld",
24797
+ "requires": ["stockSetup"]
24798
+ },
24799
+ {
24800
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24801
+ "params": {
24802
+ "source": "//# sourceURL=slicc-kept-{tag}"
24803
+ },
24804
+ "as": "keptScript",
24805
+ "requires": ["stockSetup"]
24806
+ },
24807
+ {
24808
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24809
+ "params": {
24810
+ "source": "//# sourceURL=slicc-dropped-{tag}",
24811
+ "worldName": "slicc-dropped-world-{tag}",
24812
+ "runImmediately": true
24813
+ },
24814
+ "as": "droppedScript",
24815
+ "requires": ["stockSetup"]
24816
+ },
24817
+ {
24818
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24819
+ "params": {
24820
+ "source": "",
24821
+ "worldName": "slicc-empty-{tag}"
24822
+ },
24823
+ "as": "emptyScript",
24824
+ "requires": ["stockSetup"]
24825
+ },
24826
+ {
24827
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24828
+ "params": {
24829
+ "source": "//# sourceURL=pptr:internal"
24830
+ },
24831
+ "as": "pptrScript",
24832
+ "requires": ["stockSetup"]
24833
+ },
24834
+ {
24835
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24836
+ "params": {
24837
+ "source": " \t\n// slicc\n//# sourceURL=slicc-comment-{tag}\n"
24838
+ },
24839
+ "as": "commentScript",
24840
+ "requires": ["stockSetup"]
24841
+ },
24842
+ {
24843
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24844
+ "params": {
24845
+ "source": "// slicc\u0000fetch(new URL('/doc?n=nul-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-nul-{tag}\n",
24846
+ "worldName": "slicc-nul-{tag}"
24847
+ },
24848
+ "as": "nulScript",
24849
+ "requires": ["stockSetup"]
24850
+ },
24851
+ {
24852
+ "wait": 500
24853
+ },
24854
+ {
24855
+ "cdp": "Page.removeScriptToEvaluateOnNewDocument",
24856
+ "params": {
24857
+ "identifier": {
24858
+ "$result": "removedWorld",
24859
+ "path": "result.identifier"
24860
+ }
24861
+ },
24862
+ "as": "removeWorld",
24863
+ "requires": ["stockSetup"]
24864
+ },
24865
+ {
24866
+ "cdp": "Page.removeScriptToEvaluateOnNewDocument",
24867
+ "params": {
24868
+ "identifier": {
24869
+ "$result": "droppedScript",
24870
+ "path": "result.identifier"
24871
+ }
24872
+ },
24873
+ "as": "removeScript",
24874
+ "requires": ["stockSetup"]
24875
+ },
24876
+ {
24877
+ "cdp": "Page.removeScriptToEvaluateOnNewDocument",
24878
+ "params": {
24879
+ "identifier": {
24880
+ "$result": "immediateWorld",
24881
+ "path": "result.identifier"
24882
+ }
24883
+ },
24884
+ "as": "removeImmediate",
24885
+ "requires": ["stockSetup"]
24886
+ },
24887
+ {
24888
+ "observer": "watch"
24889
+ }
24890
+ ],
24891
+ "trigger": [
24892
+ {
24893
+ "page": "navigate",
24894
+ "url": "{target}/doc?n={tag}"
24895
+ },
24896
+ {
24897
+ "settle": {
24898
+ "title": "doc",
24899
+ "ms": 5000,
24900
+ "required": true
24901
+ }
24902
+ }
24903
+ ],
24904
+ "targets": ["ordinary"],
24905
+ "requires": ["stockSetup"],
24906
+ "observe": {
24907
+ "admitted": {
24908
+ "means": "the guard answered removedWorld, playwrightWorld, puppeteerWorld, immediateWorld, keptScript, droppedScript, emptyScript, pptrScript, commentScript, nulScript, removeWorld, removeScript, removeImmediate without an error",
24909
+ "check": {
24910
+ "all": [
24911
+ {
24912
+ "result": "removedWorld",
24913
+ "path": "ok",
24914
+ "equals": true,
24915
+ "observer": "client"
24916
+ },
24917
+ {
24918
+ "result": "playwrightWorld",
24919
+ "path": "ok",
24920
+ "equals": true,
24921
+ "observer": "client"
24922
+ },
24923
+ {
24924
+ "result": "puppeteerWorld",
24925
+ "path": "ok",
24926
+ "equals": true,
24927
+ "observer": "client"
24928
+ },
24929
+ {
24930
+ "result": "immediateWorld",
24931
+ "path": "ok",
24932
+ "equals": true,
24933
+ "observer": "client"
24934
+ },
24935
+ {
24936
+ "result": "keptScript",
24937
+ "path": "ok",
24938
+ "equals": true,
24939
+ "observer": "client"
24940
+ },
24941
+ {
24942
+ "result": "droppedScript",
24943
+ "path": "ok",
24944
+ "equals": true,
24945
+ "observer": "client"
24946
+ },
24947
+ {
24948
+ "result": "emptyScript",
24949
+ "path": "ok",
24950
+ "equals": true,
24951
+ "observer": "client"
24952
+ },
24953
+ {
24954
+ "result": "pptrScript",
24955
+ "path": "ok",
24956
+ "equals": true,
24957
+ "observer": "client"
24958
+ },
24959
+ {
24960
+ "result": "commentScript",
24961
+ "path": "ok",
24962
+ "equals": true,
24963
+ "observer": "client"
24964
+ },
24965
+ {
24966
+ "result": "nulScript",
24967
+ "path": "ok",
24968
+ "equals": true,
24969
+ "observer": "client"
24970
+ },
24971
+ {
24972
+ "result": "removeWorld",
24973
+ "path": "ok",
24974
+ "equals": true,
24975
+ "observer": "client"
24976
+ },
24977
+ {
24978
+ "result": "removeScript",
24979
+ "path": "ok",
24980
+ "equals": true,
24981
+ "observer": "client"
24982
+ },
24983
+ {
24984
+ "result": "removeImmediate",
24985
+ "path": "ok",
24986
+ "equals": true,
24987
+ "observer": "client"
24988
+ }
24989
+ ],
24990
+ "observer": "client"
24991
+ }
24992
+ },
24993
+ "playwrightWorld": {
24994
+ "means": "the unguarded observer saw Chrome create the isolated world of Playwright's empty utility script in the new document",
24995
+ "check": {
24996
+ "world": "slicc-playwright-{tag}",
24997
+ "observer": "unguarded",
24998
+ "origin": "{target}",
24999
+ "afterClear": true
25000
+ }
25001
+ },
25002
+ "puppeteerWorld": {
25003
+ "means": "the unguarded observer saw Chrome create the isolated world of Puppeteer's sourceURL-only utility script in the new document",
25004
+ "check": {
25005
+ "world": "slicc-puppeteer-{tag}",
25006
+ "observer": "unguarded",
25007
+ "origin": "{target}",
25008
+ "afterClear": true
25009
+ }
25010
+ },
25011
+ "immediateWorld": {
25012
+ "means": "the unguarded observer saw Chrome create a runImmediately world in the start document; its script is removed before the navigation, so no later document creates it",
25013
+ "check": {
25014
+ "world": "slicc-immediate-{tag}",
25015
+ "observer": "unguarded"
25016
+ }
25017
+ },
25018
+ "removedWorld": {
25019
+ "means": "after removal, the unguarded observer saw the removed world on a later document",
25020
+ "check": {
25021
+ "world": "slicc-removed-{tag}",
25022
+ "observer": "unguarded",
25023
+ "afterClear": true
25024
+ }
25025
+ },
25026
+ "keptScript": {
25027
+ "means": "the unguarded observer saw Chrome compile a comment-only main-world script in the new document",
25028
+ "check": {
25029
+ "script": "slicc-kept-{tag}",
25030
+ "observer": "unguarded",
25031
+ "afterClear": true
25032
+ }
25033
+ },
25034
+ "commentScript": {
25035
+ "means": "the unguarded observer saw Chrome compile a whitespace-and-comments script in the new document",
25036
+ "check": {
25037
+ "script": "slicc-comment-{tag}",
25038
+ "observer": "unguarded",
25039
+ "afterClear": true
25040
+ }
25041
+ },
25042
+ "droppedScript": {
25043
+ "means": "after removal, the unguarded observer saw the dropped world on a later document",
25044
+ "check": {
25045
+ "world": "slicc-dropped-world-{tag}",
25046
+ "observer": "unguarded",
25047
+ "afterClear": true
25048
+ }
25049
+ },
25050
+ "installedRemoved": {
25051
+ "means": "the unguarded observer saw the runImmediately removed world in the start document before its script was removed",
25052
+ "check": {
25053
+ "world": "slicc-removed-{tag}",
25054
+ "observer": "unguarded"
25055
+ }
25056
+ },
25057
+ "installedDropped": {
25058
+ "means": "the unguarded observer saw the runImmediately dropped world in the start document before its script was removed",
25059
+ "check": {
25060
+ "world": "slicc-dropped-world-{tag}",
25061
+ "observer": "unguarded"
25062
+ }
25063
+ },
25064
+ "immediateCarried": {
25065
+ "means": "after removal, the unguarded observer saw the runImmediately world on a later document",
25066
+ "check": {
25067
+ "world": "slicc-immediate-{tag}",
25068
+ "observer": "unguarded",
25069
+ "afterClear": true
25070
+ }
25071
+ },
25072
+ "emptyWorld": {
25073
+ "means": "the unguarded observer saw Chrome create the emptyScript world in the new document",
25074
+ "check": {
25075
+ "world": "slicc-empty-{tag}",
25076
+ "observer": "unguarded",
25077
+ "origin": "{target}",
25078
+ "afterClear": true
25079
+ }
25080
+ },
25081
+ "pptrCompiled": {
25082
+ "means": "the unguarded observer saw Chrome compile the pptr sourceURL-only script in the new document",
25083
+ "check": {
25084
+ "script": "pptr:internal",
25085
+ "observer": "unguarded",
25086
+ "afterClear": true
25087
+ }
25088
+ },
25089
+ "installedNul": {
25090
+ "means": "the unguarded observer saw Chrome create the NUL no-code world in the new ordinary document",
25091
+ "check": {
25092
+ "world": "slicc-nul-{tag}",
25093
+ "observer": "unguarded",
25094
+ "origin": "{target}",
25095
+ "afterClear": true
25096
+ }
25097
+ },
25098
+ "ranNul": {
25099
+ "means": "the NUL no-code source did not fetch {target}/doc?n=nul-{tag}",
25100
+ "check": {
25101
+ "served": "{target}/doc?n=nul-{tag}",
25102
+ "observer": "fixture"
25103
+ }
25104
+ }
25105
+ },
25106
+ "live": "the stand-in served {target}/doc?n={tag}, which the client navigated to",
25107
+ "liveCheck": {
25108
+ "loaded": "{target}/doc?n={tag}",
25109
+ "observer": "fixture"
25110
+ },
25111
+ "control": {
25112
+ "origin": "ordinary",
25113
+ "via": "unguarded",
25114
+ "expected": {
25115
+ "admitted": true,
25116
+ "playwrightWorld": true,
25117
+ "puppeteerWorld": true,
25118
+ "immediateWorld": true,
25119
+ "removedWorld": false,
25120
+ "keptScript": true,
25121
+ "commentScript": true,
25122
+ "droppedScript": false,
25123
+ "installedRemoved": true,
25124
+ "installedDropped": true,
25125
+ "immediateCarried": false,
25126
+ "emptyWorld": true,
25127
+ "pptrCompiled": true,
25128
+ "installedNul": true,
25129
+ "ranNul": false
25130
+ }
25131
+ },
25132
+ "expected": {
25133
+ "admitted": true,
25134
+ "playwrightWorld": true,
25135
+ "puppeteerWorld": true,
25136
+ "immediateWorld": true,
25137
+ "removedWorld": false,
25138
+ "keptScript": true,
25139
+ "commentScript": true,
25140
+ "droppedScript": false,
25141
+ "installedRemoved": true,
25142
+ "installedDropped": true,
25143
+ "immediateCarried": false,
25144
+ "emptyWorld": true,
25145
+ "pptrCompiled": true,
25146
+ "installedNul": true,
25147
+ "ranNul": false
25148
+ }
25149
+ },
25150
+ {
25151
+ "id": "E7.emulation",
25152
+ "family": "E",
25153
+ "kind": "cdp",
25154
+ "scope": "any",
25155
+ "setup": [
25156
+ {
25157
+ "page": "tab",
25158
+ "url": "{target}/doc?n={tag}"
25159
+ },
25160
+ {
25161
+ "cdp": "Page.enable"
25162
+ },
25163
+ {
25164
+ "cdp": "Emulation.setFocusEmulationEnabled",
25165
+ "params": {
25166
+ "enabled": true
25167
+ },
25168
+ "as": "focus",
25169
+ "requires": ["stockSetup"]
25170
+ },
25171
+ {
25172
+ "cdp": "Emulation.setEmulatedMedia",
25173
+ "params": {
25174
+ "media": "",
25175
+ "features": [
25176
+ {
25177
+ "name": "prefers-color-scheme",
25178
+ "value": "light"
25179
+ },
25180
+ {
25181
+ "name": "prefers-reduced-motion",
25182
+ "value": "reduce"
25183
+ },
25184
+ {
25185
+ "name": "forced-colors",
25186
+ "value": "none"
25187
+ },
25188
+ {
25189
+ "name": "prefers-contrast",
25190
+ "value": "no-preference"
25191
+ }
25192
+ ]
25193
+ },
25194
+ "as": "media",
25195
+ "requires": ["stockSetup"]
25196
+ },
25197
+ {
25198
+ "cdp": "Emulation.setDeviceMetricsOverride",
25199
+ "params": {
25200
+ "width": 1001,
25201
+ "height": 601,
25202
+ "deviceScaleFactor": 1,
25203
+ "mobile": false,
25204
+ "screenWidth": 1001,
25205
+ "screenHeight": 601
25206
+ },
25207
+ "as": "metrics",
25208
+ "requires": ["stockSetup"]
25209
+ },
25210
+ {
25211
+ "cdp": "Emulation.setTouchEmulationEnabled",
25212
+ "params": {
25213
+ "enabled": true,
25214
+ "maxTouchPoints": 2
25215
+ },
25216
+ "as": "touch",
25217
+ "requires": ["stockSetup"]
25218
+ }
25219
+ ],
25220
+ "trigger": [
25221
+ {
25222
+ "settle": {
25223
+ "ms": 500
25224
+ }
25225
+ }
25226
+ ],
25227
+ "targets": ["ordinary"],
25228
+ "requires": ["stockSetup"],
25229
+ "observe": {
25230
+ "admitted": {
25231
+ "means": "the guard answered focus, media, metrics, touch without an error",
25232
+ "check": {
25233
+ "all": [
25234
+ {
25235
+ "result": "focus",
25236
+ "path": "ok",
25237
+ "equals": true,
25238
+ "observer": "client"
25239
+ },
25240
+ {
25241
+ "result": "media",
25242
+ "path": "ok",
25243
+ "equals": true,
25244
+ "observer": "client"
25245
+ },
25246
+ {
25247
+ "result": "metrics",
25248
+ "path": "ok",
25249
+ "equals": true,
25250
+ "observer": "client"
25251
+ },
25252
+ {
25253
+ "result": "touch",
25254
+ "path": "ok",
25255
+ "equals": true,
25256
+ "observer": "client"
25257
+ }
25258
+ ],
25259
+ "observer": "client"
25260
+ }
25261
+ },
25262
+ "focused": {
25263
+ "means": "the unguarded observer reads document.hasFocus() as true in the background tab",
25264
+ "check": {
25265
+ "expression": "document.hasFocus()",
25266
+ "equals": true,
25267
+ "via": "unguarded",
25268
+ "observer": "unguarded"
25269
+ }
25270
+ },
25271
+ "media": {
25272
+ "means": "the unguarded observer matches prefers-reduced-motion: reduce",
25273
+ "check": {
25274
+ "expression": "matchMedia('(prefers-reduced-motion: reduce)').matches",
25275
+ "equals": true,
25276
+ "via": "unguarded",
25277
+ "observer": "unguarded"
25278
+ }
25279
+ },
25280
+ "viewport": {
25281
+ "means": "the unguarded observer reads the overridden 1001x601 viewport",
25282
+ "check": {
25283
+ "expression": "innerWidth + 'x' + innerHeight",
25284
+ "equals": "1001x601",
25285
+ "via": "unguarded",
25286
+ "observer": "unguarded"
25287
+ }
25288
+ },
25289
+ "touch": {
25290
+ "means": "the unguarded observer reads navigator.maxTouchPoints as 2",
25291
+ "check": {
25292
+ "expression": "navigator.maxTouchPoints",
25293
+ "equals": 2,
25294
+ "via": "unguarded",
25295
+ "observer": "unguarded"
25296
+ }
25297
+ }
25298
+ },
25299
+ "live": "the stand-in served {target}/doc?n={tag} to the client's tab",
25300
+ "liveCheck": {
25301
+ "loaded": "{target}/doc?n={tag}",
25302
+ "observer": "fixture"
25303
+ },
25304
+ "control": {
25305
+ "origin": "ordinary",
25306
+ "via": "unguarded",
25307
+ "expected": {
25308
+ "admitted": true,
25309
+ "focused": true,
25310
+ "media": true,
25311
+ "viewport": true,
25312
+ "touch": true
25313
+ }
25314
+ },
25315
+ "expected": {
25316
+ "admitted": true,
25317
+ "focused": true,
25318
+ "media": true,
25319
+ "viewport": true,
25320
+ "touch": true
25321
+ }
25322
+ },
25323
+ {
25324
+ "id": "E7.binding",
25325
+ "family": "E",
25326
+ "kind": "cdp",
25327
+ "scope": "any",
25328
+ "setup": [
25329
+ {
25330
+ "page": "tab",
25331
+ "url": "{ordinary}/doc?n=start-{tag}"
25332
+ },
25333
+ {
25334
+ "cdp": "Page.enable"
25335
+ },
25336
+ {
25337
+ "cdp": "Runtime.enable"
25338
+ },
25339
+ {
25340
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
25341
+ "params": {
25342
+ "source": "",
25343
+ "worldName": "slicc-named-{tag}"
25344
+ },
25345
+ "as": "world",
25346
+ "requires": ["stockSetup"]
25347
+ },
25348
+ {
25349
+ "cdp": "Runtime.addBinding",
25350
+ "params": {
25351
+ "name": "sliccStockNamed",
25352
+ "executionContextName": "slicc-named-{tag}"
25353
+ },
25354
+ "as": "named",
25355
+ "requires": ["stockSetup"]
25356
+ }
25357
+ ],
25358
+ "trigger": [
25359
+ {
25360
+ "page": "navigate",
25361
+ "url": "{target}/doc?n={tag}"
25362
+ },
25363
+ {
25364
+ "settle": {
25365
+ "title": "doc",
25366
+ "ms": 5000,
25367
+ "required": true
25368
+ }
25369
+ },
25370
+ {
25371
+ "cdp": "Page.getFrameTree",
25372
+ "as": "tree"
25373
+ },
25374
+ {
25375
+ "cdp": "Page.createIsolatedWorld",
25376
+ "params": {
25377
+ "frameId": {
25378
+ "$result": "tree",
25379
+ "path": "result.frameTree.frame.id"
25380
+ },
25381
+ "worldName": "slicc-placed-{tag}",
25382
+ "grantUniveralAccess": true
25383
+ },
25384
+ "as": "placed",
25385
+ "requires": ["stockSetup"]
25386
+ },
25387
+ {
25388
+ "cdp": "Runtime.addBinding",
25389
+ "params": {
25390
+ "name": "sliccStockPlaced",
25391
+ "executionContextId": {
25392
+ "$result": "placed",
25393
+ "path": "result.executionContextId"
25394
+ }
25395
+ },
25396
+ "as": "byId",
25397
+ "requires": ["stockSetup"]
25398
+ },
25399
+ {
25400
+ "isolatedWorld": "slicc-named-{tag}",
25401
+ "expression": "typeof sliccStockNamed === 'function' ? (sliccStockNamed('named-{tag}'), 'function') : typeof sliccStockNamed",
25402
+ "as": "namedSeen"
25403
+ },
25404
+ {
25405
+ "isolatedWorld": "slicc-placed-{tag}",
25406
+ "expression": "typeof sliccStockPlaced === 'function' ? (sliccStockPlaced('placed-{tag}'), 'function') : typeof sliccStockPlaced",
25407
+ "as": "placedSeen"
25408
+ },
25409
+ {
25410
+ "settle": {
25411
+ "ms": 500
25412
+ }
25413
+ }
25414
+ ],
25415
+ "targets": ["ordinary"],
25416
+ "requires": ["stockSetup"],
25417
+ "observe": {
25418
+ "admitted": {
25419
+ "means": "the guard answered world, named, placed, byId without an error",
25420
+ "check": {
25421
+ "all": [
25422
+ {
25423
+ "result": "world",
25424
+ "path": "ok",
25425
+ "equals": true,
25426
+ "observer": "client"
25427
+ },
25428
+ {
25429
+ "result": "named",
25430
+ "path": "ok",
25431
+ "equals": true,
25432
+ "observer": "client"
25433
+ },
25434
+ {
25435
+ "result": "placed",
25436
+ "path": "ok",
25437
+ "equals": true,
25438
+ "observer": "client"
25439
+ },
25440
+ {
25441
+ "result": "byId",
25442
+ "path": "ok",
25443
+ "equals": true,
25444
+ "observer": "client"
25445
+ }
25446
+ ],
25447
+ "observer": "client"
25448
+ }
25449
+ },
25450
+ "namedExposed": {
25451
+ "means": "the unguarded observer finds the binding scoped by executionContextName in that isolated world",
25452
+ "check": {
25453
+ "result": "namedSeen",
25454
+ "path": "result.value",
25455
+ "equals": "function",
25456
+ "observer": "unguarded"
25457
+ }
25458
+ },
25459
+ "placedExposed": {
25460
+ "means": "the unguarded observer finds the binding scoped by executionContextId in the client's placed isolated world",
25461
+ "check": {
25462
+ "result": "placedSeen",
25463
+ "path": "result.value",
25464
+ "equals": "function",
25465
+ "observer": "unguarded"
25466
+ }
25467
+ },
25468
+ "mainHidden": {
25469
+ "means": "the unguarded observer finds neither binding in the main world",
25470
+ "check": {
25471
+ "expression": "typeof sliccStockNamed + ' ' + typeof sliccStockPlaced",
25472
+ "equals": "undefined undefined",
25473
+ "via": "unguarded",
25474
+ "observer": "unguarded"
25475
+ }
25476
+ },
25477
+ "namedCalled": {
25478
+ "means": "the client got the Runtime.bindingCalled that the observer's call in the named world fired",
25479
+ "check": {
25480
+ "event": "Runtime.bindingCalled",
25481
+ "where": {
25482
+ "params": {
25483
+ "name": "sliccStockNamed",
25484
+ "payload": "named-{tag}"
25485
+ }
25486
+ },
25487
+ "observer": "client"
25488
+ }
25489
+ },
25490
+ "placedCalled": {
25491
+ "means": "the client got the Runtime.bindingCalled that the observer's call in the placed world fired",
25492
+ "check": {
25493
+ "event": "Runtime.bindingCalled",
25494
+ "where": {
25495
+ "params": {
25496
+ "name": "sliccStockPlaced",
25497
+ "payload": "placed-{tag}"
25498
+ }
25499
+ },
25500
+ "observer": "client"
25501
+ }
25502
+ }
25503
+ },
25504
+ "live": "the stand-in served {target}/doc?n={tag}, which the client navigated to",
25505
+ "liveCheck": {
25506
+ "loaded": "{target}/doc?n={tag}",
25507
+ "observer": "fixture"
25508
+ },
25509
+ "control": {
25510
+ "origin": "ordinary",
25511
+ "via": "unguarded",
25512
+ "expected": {
25513
+ "admitted": true,
25514
+ "namedExposed": true,
25515
+ "placedExposed": true,
25516
+ "mainHidden": true,
25517
+ "namedCalled": true,
25518
+ "placedCalled": true
25519
+ }
25520
+ },
25521
+ "expected": {
25522
+ "admitted": true,
25523
+ "namedExposed": true,
25524
+ "placedExposed": true,
25525
+ "mainHidden": true,
25526
+ "namedCalled": true,
25527
+ "placedCalled": true
25528
+ }
25529
+ },
25530
+ {
25531
+ "id": "C3.tab-attach",
25532
+ "family": "C",
25533
+ "kind": "cdp",
25534
+ "scope": "any",
25535
+ "setup": [
25536
+ {
25537
+ "page": "tab",
25538
+ "url": "{ordinary}/doc?n=opener-{tag}"
25539
+ },
25540
+ {
25541
+ "cdp": "Target.setAutoAttach",
25542
+ "params": {
25543
+ "autoAttach": true,
25544
+ "waitForDebuggerOnStart": true,
25545
+ "flatten": true,
25546
+ "filter": [
25547
+ {
25548
+ "type": "page",
25549
+ "exclude": true
25550
+ },
25551
+ {}
25552
+ ]
25553
+ },
25554
+ "session": "browser",
25555
+ "as": "tabs",
25556
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
25557
+ },
25558
+ {
25559
+ "children": [
25560
+ {
25561
+ "cdp": "Target.setAutoAttach",
25562
+ "params": {
25563
+ "autoAttach": true,
25564
+ "waitForDebuggerOnStart": true,
25565
+ "flatten": true,
25566
+ "filter": [{}]
25567
+ }
25568
+ }
25569
+ ],
25570
+ "requires": ["autoAttach"],
25571
+ "where": {
25572
+ "type": "page"
25573
+ }
25574
+ }
25575
+ ],
25576
+ "trigger": [
25577
+ {
25578
+ "page": "open",
25579
+ "url": "{target}/doc?n={tag}"
25580
+ },
25581
+ {
25582
+ "settle": {
25583
+ "served": "{target}/doc?n={tag}",
25584
+ "ms": 5000,
25585
+ "required": true
25586
+ }
25587
+ },
25588
+ {
25589
+ "cdp": "Page.navigate",
25590
+ "params": {
25591
+ "url": "{target}/doc?n=child-{tag}"
25592
+ },
25593
+ "session": "child",
25594
+ "as": "childNavigate",
25595
+ "requires": ["autoAttach"]
25596
+ },
25597
+ {
25598
+ "settle": {
25599
+ "served": "{target}/doc?n=child-{tag}",
25600
+ "ms": 5000,
25601
+ "required": true
25602
+ }
25603
+ }
25604
+ ],
25605
+ "targets": ["ordinary"],
25606
+ "requires": ["autoAttach", "browserSession", "stockSetup"],
25607
+ "observe": {
25608
+ "admitted": {
25609
+ "means": "the guard answered tabs, childNavigate without an error",
25610
+ "check": {
25611
+ "all": [
25612
+ {
25613
+ "result": "tabs",
25614
+ "path": "ok",
25615
+ "equals": true,
25616
+ "observer": "client"
25617
+ },
25618
+ {
25619
+ "result": "childNavigate",
25620
+ "path": "ok",
25621
+ "equals": true,
25622
+ "observer": "client"
25623
+ }
25624
+ ],
25625
+ "observer": "client"
25626
+ }
25627
+ },
25628
+ "tab": {
25629
+ "means": "the client got Target.attachedToTarget for a tab target",
25630
+ "check": {
25631
+ "event": "Target.attachedToTarget",
25632
+ "where": {
25633
+ "params": {
25634
+ "targetInfo": {
25635
+ "type": "tab"
25636
+ }
25637
+ }
25638
+ },
25639
+ "observer": "client"
25640
+ }
25641
+ },
25642
+ "driven": {
25643
+ "means": "the unguarded observer finds the popup page at the URL the client navigated it to through its auto-attached page session",
25644
+ "check": {
25645
+ "expression": "location.href",
25646
+ "equals": "{target}/doc?n=child-{tag}",
25647
+ "via": "unguarded",
25648
+ "session": "child",
25649
+ "observer": "unguarded"
25650
+ }
25651
+ }
25652
+ },
25653
+ "live": "the stand-in served the popup's first document",
25654
+ "liveCheck": {
25655
+ "loaded": "{target}/doc?n={tag}",
25656
+ "observer": "fixture"
25657
+ },
25658
+ "control": {
25659
+ "origin": "ordinary",
25660
+ "via": "unguarded",
25661
+ "expected": {
25662
+ "admitted": true,
25663
+ "tab": true,
25664
+ "driven": true
25665
+ }
25666
+ },
25667
+ "expected": {
25668
+ "admitted": true,
25669
+ "tab": true,
25670
+ "driven": true
25671
+ }
25672
+ },
25673
+ {
25674
+ "id": "C3.tab-create",
25675
+ "family": "C",
25676
+ "kind": "cdp",
25677
+ "scope": "any",
25678
+ "setup": [
25679
+ {
25680
+ "page": "tab",
25681
+ "url": "{ordinary}/doc?n=opener-{tag}"
25682
+ },
25683
+ {
25684
+ "cdp": "Target.setAutoAttach",
25685
+ "params": {
25686
+ "autoAttach": true,
25687
+ "waitForDebuggerOnStart": true,
25688
+ "flatten": true,
25689
+ "filter": [
25690
+ {
25691
+ "type": "page",
25692
+ "exclude": true
25693
+ },
25694
+ {}
25695
+ ]
25696
+ },
25697
+ "session": "browser",
25698
+ "as": "tabs",
25699
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
25700
+ },
25701
+ {
25702
+ "children": [
25703
+ {
25704
+ "cdp": "Target.setAutoAttach",
25705
+ "params": {
25706
+ "autoAttach": true,
25707
+ "waitForDebuggerOnStart": true,
25708
+ "flatten": true,
25709
+ "filter": [{}]
25710
+ }
25711
+ }
25712
+ ],
25713
+ "requires": ["autoAttach"],
25714
+ "where": {
25715
+ "type": "page"
25716
+ }
25717
+ }
25718
+ ],
25719
+ "trigger": [
25720
+ {
25721
+ "cdp": "Target.createTarget",
25722
+ "params": {
25723
+ "url": "about:blank",
25724
+ "browserContextId": "{context}"
25725
+ },
25726
+ "session": "browser",
25727
+ "as": "created",
25728
+ "requires": ["browserSession"]
25729
+ },
25730
+ {
25731
+ "wait": 2000
25732
+ },
25733
+ {
25734
+ "cdp": "Page.navigate",
25735
+ "params": {
25736
+ "url": "{target}/doc?n=child-{tag}"
25737
+ },
25738
+ "session": "child",
25739
+ "as": "childNavigate",
25740
+ "requires": ["autoAttach"]
25741
+ },
25742
+ {
25743
+ "settle": {
25744
+ "served": "{target}/doc?n=child-{tag}",
25745
+ "ms": 5000,
25746
+ "required": true
25747
+ }
25748
+ }
25749
+ ],
25750
+ "targets": ["ordinary"],
25751
+ "requires": ["autoAttach", "browserSession", "stockSetup"],
25752
+ "observe": {
25753
+ "admitted": {
25754
+ "means": "the guard answered tabs, created, childNavigate without an error",
25755
+ "check": {
25756
+ "all": [
25757
+ {
25758
+ "result": "tabs",
25759
+ "path": "ok",
25760
+ "equals": true,
25761
+ "observer": "client"
25762
+ },
25763
+ {
25764
+ "result": "created",
25765
+ "path": "ok",
25766
+ "equals": true,
25767
+ "observer": "client"
25768
+ },
25769
+ {
25770
+ "result": "childNavigate",
25771
+ "path": "ok",
25772
+ "equals": true,
25773
+ "observer": "client"
25774
+ }
25775
+ ],
25776
+ "observer": "client"
25777
+ }
25778
+ },
25779
+ "tab": {
25780
+ "means": "the client got Target.attachedToTarget for a tab target",
25781
+ "check": {
25782
+ "event": "Target.attachedToTarget",
25783
+ "where": {
25784
+ "params": {
25785
+ "targetInfo": {
25786
+ "type": "tab"
25787
+ }
25788
+ }
25789
+ },
25790
+ "observer": "client"
25791
+ }
25792
+ },
25793
+ "driven": {
25794
+ "means": "the unguarded observer finds the created page at the URL the client navigated it to through its auto-attached page session",
25795
+ "check": {
25796
+ "expression": "location.href",
25797
+ "equals": "{target}/doc?n=child-{tag}",
25798
+ "via": "unguarded",
25799
+ "session": "child",
25800
+ "observer": "unguarded"
25801
+ }
25802
+ }
25803
+ },
25804
+ "live": "the stand-in served the document the client navigated the created page to",
25805
+ "liveCheck": {
25806
+ "loaded": "{target}/doc?n=child-{tag}",
25807
+ "observer": "fixture"
25808
+ },
25809
+ "control": {
25810
+ "origin": "ordinary",
25811
+ "via": "unguarded",
25812
+ "expected": {
25813
+ "admitted": true,
25814
+ "tab": true,
25815
+ "driven": true
25816
+ }
25817
+ },
25818
+ "expected": {
25819
+ "admitted": true,
25820
+ "tab": true,
25821
+ "driven": true
25822
+ }
25823
+ },
25824
+ {
25825
+ "id": "C3.tab-attach.synthetic",
25826
+ "family": "C",
25827
+ "kind": "cdp",
25828
+ "scope": "any",
25829
+ "setup": [
25830
+ {
25831
+ "page": "tab",
25832
+ "url": "{ordinary}/doc?n=opener-{tag}"
25833
+ },
25834
+ {
25835
+ "cdp": "Target.setAutoAttach",
25836
+ "params": {
25837
+ "autoAttach": true,
25838
+ "waitForDebuggerOnStart": true,
25839
+ "flatten": true,
25840
+ "filter": [
25841
+ {
25842
+ "type": "page",
25843
+ "exclude": true
25844
+ },
25845
+ {}
25846
+ ]
25847
+ },
25848
+ "session": "browser",
25849
+ "as": "tabs",
25850
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"]
25851
+ },
25852
+ {
25853
+ "children": [
25854
+ {
25855
+ "cdp": "Target.setAutoAttach",
25856
+ "params": {
25857
+ "autoAttach": true,
25858
+ "waitForDebuggerOnStart": true,
25859
+ "flatten": true,
25860
+ "filter": [{}]
25861
+ }
25862
+ }
25863
+ ],
25864
+ "requires": ["syntheticAutoAttach"],
25865
+ "where": {
25866
+ "type": "page"
25867
+ }
25868
+ }
25869
+ ],
25870
+ "trigger": [
25871
+ {
25872
+ "page": "open",
25873
+ "url": "{target}/doc?n={tag}"
25874
+ },
25875
+ {
25876
+ "settle": {
25877
+ "served": "{target}/doc?n={tag}",
25878
+ "ms": 5000,
25879
+ "required": true
25880
+ }
25881
+ },
25882
+ {
25883
+ "cdp": "Page.navigate",
25884
+ "params": {
25885
+ "url": "{target}/doc?n=child-{tag}"
25886
+ },
25887
+ "session": "child",
25888
+ "as": "childNavigate",
25889
+ "requires": ["syntheticAutoAttach"]
25890
+ },
25891
+ {
25892
+ "settle": {
25893
+ "served": "{target}/doc?n=child-{tag}",
25894
+ "ms": 5000,
25895
+ "required": true
25896
+ }
25897
+ }
25898
+ ],
25899
+ "targets": ["ordinary"],
25900
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"],
25901
+ "observe": {
25902
+ "admitted": {
25903
+ "means": "the guard answered tabs, childNavigate without an error",
25904
+ "check": {
25905
+ "all": [
25906
+ {
25907
+ "result": "tabs",
25908
+ "path": "ok",
25909
+ "equals": true,
25910
+ "observer": "client"
25911
+ },
25912
+ {
25913
+ "result": "childNavigate",
25914
+ "path": "ok",
25915
+ "equals": true,
25916
+ "observer": "client"
25917
+ }
25918
+ ],
25919
+ "observer": "client"
25920
+ }
25921
+ },
25922
+ "tab": {
25923
+ "means": "the client got Target.attachedToTarget for a tab target",
25924
+ "check": {
25925
+ "event": "Target.attachedToTarget",
25926
+ "where": {
25927
+ "params": {
25928
+ "targetInfo": {
25929
+ "type": "tab"
25930
+ }
25931
+ }
25932
+ },
25933
+ "observer": "client"
25934
+ }
25935
+ },
25936
+ "driven": {
25937
+ "means": "the unguarded observer finds the popup page at the URL the client navigated it to through its auto-attached page session",
25938
+ "check": {
25939
+ "expression": "location.href",
25940
+ "equals": "{target}/doc?n=child-{tag}",
25941
+ "via": "unguarded",
25942
+ "session": "child",
25943
+ "observer": "unguarded"
25944
+ }
25945
+ }
25946
+ },
25947
+ "live": "the stand-in served the popup's first document",
25948
+ "liveCheck": {
25949
+ "loaded": "{target}/doc?n={tag}",
25950
+ "observer": "fixture"
25951
+ },
25952
+ "control": {
25953
+ "origin": "ordinary",
25954
+ "via": "unguarded",
25955
+ "expected": {
25956
+ "admitted": true,
25957
+ "tab": true,
25958
+ "driven": true
25959
+ }
25960
+ },
25961
+ "expected": {
25962
+ "admitted": true,
25963
+ "tab": true,
25964
+ "driven": true
25965
+ }
25966
+ },
25967
+ {
25968
+ "id": "C3.tab-create.synthetic",
25969
+ "family": "C",
25970
+ "kind": "cdp",
25971
+ "scope": "any",
25972
+ "setup": [
25973
+ {
25974
+ "page": "tab",
25975
+ "url": "{ordinary}/doc?n=opener-{tag}"
25976
+ },
25977
+ {
25978
+ "cdp": "Target.setAutoAttach",
25979
+ "params": {
25980
+ "autoAttach": true,
25981
+ "waitForDebuggerOnStart": true,
25982
+ "flatten": true,
25983
+ "filter": [
25984
+ {
25985
+ "type": "page",
25986
+ "exclude": true
25987
+ },
25988
+ {}
25989
+ ]
25990
+ },
25991
+ "session": "browser",
25992
+ "as": "tabs",
25993
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"]
25994
+ },
25995
+ {
25996
+ "children": [
25997
+ {
25998
+ "cdp": "Target.setAutoAttach",
25999
+ "params": {
26000
+ "autoAttach": true,
26001
+ "waitForDebuggerOnStart": true,
26002
+ "flatten": true,
26003
+ "filter": [{}]
26004
+ }
26005
+ }
26006
+ ],
26007
+ "requires": ["syntheticAutoAttach"],
26008
+ "where": {
26009
+ "type": "page"
26010
+ }
26011
+ }
26012
+ ],
26013
+ "trigger": [
26014
+ {
26015
+ "cdp": "Target.createTarget",
26016
+ "params": {
26017
+ "url": "about:blank",
26018
+ "browserContextId": "{context}"
26019
+ },
26020
+ "session": "browser",
26021
+ "as": "created",
26022
+ "requires": ["browserSession"]
26023
+ },
26024
+ {
26025
+ "wait": 2000
26026
+ },
26027
+ {
26028
+ "cdp": "Page.navigate",
26029
+ "params": {
26030
+ "url": "{target}/doc?n=child-{tag}"
26031
+ },
26032
+ "session": "child",
26033
+ "as": "childNavigate",
26034
+ "requires": ["syntheticAutoAttach"]
26035
+ },
26036
+ {
26037
+ "settle": {
26038
+ "served": "{target}/doc?n=child-{tag}",
26039
+ "ms": 5000,
26040
+ "required": true
26041
+ }
26042
+ }
26043
+ ],
26044
+ "targets": ["ordinary"],
26045
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"],
26046
+ "observe": {
26047
+ "admitted": {
26048
+ "means": "the guard answered tabs, created, childNavigate without an error",
26049
+ "check": {
26050
+ "all": [
26051
+ {
26052
+ "result": "tabs",
26053
+ "path": "ok",
26054
+ "equals": true,
26055
+ "observer": "client"
26056
+ },
26057
+ {
26058
+ "result": "created",
26059
+ "path": "ok",
26060
+ "equals": true,
26061
+ "observer": "client"
26062
+ },
26063
+ {
26064
+ "result": "childNavigate",
26065
+ "path": "ok",
26066
+ "equals": true,
26067
+ "observer": "client"
26068
+ }
26069
+ ],
26070
+ "observer": "client"
26071
+ }
26072
+ },
26073
+ "tab": {
26074
+ "means": "the client got Target.attachedToTarget for a tab target",
26075
+ "check": {
26076
+ "event": "Target.attachedToTarget",
26077
+ "where": {
26078
+ "params": {
26079
+ "targetInfo": {
26080
+ "type": "tab"
26081
+ }
26082
+ }
26083
+ },
26084
+ "observer": "client"
26085
+ }
26086
+ },
26087
+ "driven": {
26088
+ "means": "the unguarded observer finds the created page at the URL the client navigated it to through its auto-attached page session",
26089
+ "check": {
26090
+ "expression": "location.href",
26091
+ "equals": "{target}/doc?n=child-{tag}",
26092
+ "via": "unguarded",
26093
+ "session": "child",
26094
+ "observer": "unguarded"
26095
+ }
26096
+ }
26097
+ },
26098
+ "live": "the stand-in served the document the client navigated the created page to",
26099
+ "liveCheck": {
26100
+ "loaded": "{target}/doc?n=child-{tag}",
26101
+ "observer": "fixture"
26102
+ },
26103
+ "control": {
26104
+ "origin": "ordinary",
26105
+ "via": "unguarded",
26106
+ "expected": {
26107
+ "admitted": true,
26108
+ "tab": true,
26109
+ "driven": true
26110
+ }
26111
+ },
26112
+ "expected": {
26113
+ "admitted": true,
26114
+ "tab": true,
26115
+ "driven": true
26116
+ }
26117
+ },
26118
+ {
26119
+ "id": "E7.isolated-world",
26120
+ "family": "E",
26121
+ "kind": "cdp",
26122
+ "scope": "any",
26123
+ "setup": [
26124
+ {
26125
+ "page": "tab",
26126
+ "url": "{ordinary}/doc?n=start-{tag}"
26127
+ },
26128
+ {
26129
+ "cdp": "Page.enable"
26130
+ },
26131
+ {
26132
+ "cdp": "Runtime.enable"
26133
+ }
26134
+ ],
26135
+ "trigger": [
26136
+ {
26137
+ "page": "navigate",
26138
+ "url": "{target}/doc?n={tag}"
26139
+ },
26140
+ {
26141
+ "settle": {
26142
+ "title": "doc",
26143
+ "ms": 5000,
26144
+ "required": true
26145
+ }
26146
+ },
26147
+ {
26148
+ "cdp": "Page.getFrameTree",
26149
+ "as": "tree"
26150
+ },
26151
+ {
26152
+ "cdp": "Page.createIsolatedWorld",
26153
+ "params": {
26154
+ "frameId": {
26155
+ "$result": "tree",
26156
+ "path": "result.frameTree.frame.id"
26157
+ },
26158
+ "worldName": "slicc-ua-{tag}",
26159
+ "grantUniveralAccess": true,
26160
+ "contentSecurityPolicy": "default-src 'none'"
26161
+ },
26162
+ "as": "placed",
26163
+ "requires": ["stockSetup"]
26164
+ },
26165
+ {
26166
+ "isolatedWorld": "slicc-ua-{tag}",
26167
+ "expression": "location.origin + '|' + document.title",
26168
+ "as": "sameOrigin"
26169
+ }
26170
+ ],
26171
+ "targets": ["ordinary"],
26172
+ "requires": ["stockSetup", "forwardAudit"],
26173
+ "observe": {
26174
+ "admitted": {
26175
+ "means": "the guard answered placed without an error",
26176
+ "check": {
26177
+ "result": "placed",
26178
+ "path": "ok",
26179
+ "equals": true,
26180
+ "observer": "client"
26181
+ }
26182
+ },
26183
+ "worldWorks": {
26184
+ "means": "the unguarded observer evaluates in the client's isolated world on the ordinary document",
26185
+ "check": {
26186
+ "result": "sameOrigin",
26187
+ "path": "result.value",
26188
+ "equals": "{target}|doc",
26189
+ "observer": "unguarded"
26190
+ }
26191
+ },
26192
+ "stripped": {
26193
+ "means": "the guard forwarded Page.createIsolatedWorld without grantUniveralAccess and without contentSecurityPolicy, or with each false",
26194
+ "requires": ["forwardAudit"],
26195
+ "check": {
26196
+ "forwarded": {
26197
+ "method": "Page.createIsolatedWorld",
26198
+ "where": {
26199
+ "params": {
26200
+ "worldName": "slicc-ua-{tag}"
26201
+ }
26202
+ },
26203
+ "params": {
26204
+ "grantUniveralAccess": {
26205
+ "$absentOr": false
26206
+ },
26207
+ "contentSecurityPolicy": {
26208
+ "$absentOr": false
26209
+ }
26210
+ }
26211
+ },
26212
+ "observer": "client"
26213
+ }
26214
+ }
26215
+ },
26216
+ "live": "the stand-in served {target}/doc?n={tag}, which the client navigated to",
26217
+ "liveCheck": {
26218
+ "loaded": "{target}/doc?n={tag}",
26219
+ "observer": "fixture"
26220
+ },
26221
+ "control": {
26222
+ "origin": "ordinary",
26223
+ "via": "unguarded",
26224
+ "expected": {
26225
+ "admitted": true,
26226
+ "worldWorks": true
26227
+ }
26228
+ },
26229
+ "expected": {
26230
+ "admitted": true,
26231
+ "worldWorks": true,
26232
+ "stripped": true
26233
+ }
26234
+ },
26235
+ {
26236
+ "id": "E7.init-boundary",
26237
+ "family": "E",
26238
+ "kind": "cdp",
26239
+ "scope": "any",
26240
+ "setup": [
26241
+ {
26242
+ "page": "tab",
26243
+ "url": "{ordinary}/doc?n=start-{tag}"
26244
+ },
26245
+ {
26246
+ "observer": "watch"
26247
+ },
26248
+ {
26249
+ "cdp": "Page.enable",
26250
+ "requires": ["stockSetup"]
26251
+ },
26252
+ {
26253
+ "cdp": "Runtime.enable"
26254
+ },
26255
+ {
26256
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26257
+ "params": {
26258
+ "source": "// slicc\rfetch(new URL('/doc?n=bound-cr-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-cr-{tag}\n",
26259
+ "worldName": "slicc-bound-cr-{tag}"
26260
+ },
26261
+ "as": "boundCr",
26262
+ "refusable": true,
26263
+ "refusal": {
26264
+ "match": "refused"
26265
+ }
26266
+ },
26267
+ {
26268
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26269
+ "params": {
26270
+ "source": "// slicc\u2028fetch(new URL('/doc?n=bound-ls-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-ls-{tag}\n",
26271
+ "worldName": "slicc-bound-ls-{tag}"
26272
+ },
26273
+ "as": "boundLs",
26274
+ "refusable": true,
26275
+ "refusal": {
26276
+ "match": "refused"
26277
+ }
26278
+ },
26279
+ {
26280
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26281
+ "params": {
26282
+ "source": "// slicc\u2029fetch(new URL('/doc?n=bound-ps-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-ps-{tag}\n",
26283
+ "worldName": "slicc-bound-ps-{tag}"
26284
+ },
26285
+ "as": "boundPs",
26286
+ "refusable": true,
26287
+ "refusal": {
26288
+ "match": "refused"
26289
+ }
26290
+ },
26291
+ {
26292
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26293
+ "params": {
26294
+ "source": "// slicc\u0000fetch(new URL('/doc?n=bound-nul-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-nul-{tag}\n",
26295
+ "worldName": "slicc-bound-nul-{tag}"
26296
+ },
26297
+ "as": "boundNul",
26298
+ "refusable": true,
26299
+ "refusal": {
26300
+ "match": "refused"
26301
+ }
26302
+ },
26303
+ {
26304
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26305
+ "params": {
26306
+ "source": "/* slicc */\nfetch(new URL('/doc?n=bound-block-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-block-{tag}\n",
26307
+ "worldName": "slicc-bound-block-{tag}"
26308
+ },
26309
+ "as": "boundBlock",
26310
+ "refusable": true,
26311
+ "refusal": {
26312
+ "match": "refused"
26313
+ }
26314
+ },
26315
+ {
26316
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26317
+ "params": {
26318
+ "source": "\ufefffetch(new URL('/doc?n=bound-bom-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-bom-{tag}\n",
26319
+ "worldName": "slicc-bound-bom-{tag}"
26320
+ },
26321
+ "as": "boundBom",
26322
+ "refusable": true,
26323
+ "refusal": {
26324
+ "match": "refused"
26325
+ }
26326
+ },
26327
+ {
26328
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26329
+ "params": {
26330
+ "source": "<!-- slicc -->\nfetch(new URL('/doc?n=bound-html-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-html-{tag}\n",
26331
+ "worldName": "slicc-bound-html-{tag}"
26332
+ },
26333
+ "as": "boundHtml",
26334
+ "refusable": true,
26335
+ "refusal": {
26336
+ "match": "refused"
26337
+ }
26338
+ }
26339
+ ],
26340
+ "trigger": [
26341
+ {
26342
+ "page": "navigate",
26343
+ "url": "{target}/doc?n={tag}"
26344
+ },
26345
+ {
26346
+ "settle": {
26347
+ "title": "doc",
26348
+ "ms": 5000,
26349
+ "dependsOn": [
26350
+ "boundCr",
26351
+ "boundLs",
26352
+ "boundPs",
26353
+ "boundNul",
26354
+ "boundBlock",
26355
+ "boundBom",
26356
+ "boundHtml"
26357
+ ],
26358
+ "or": {
26359
+ "served": "{target}/doc?n={tag}",
26360
+ "observer": "fixture"
26361
+ }
26362
+ }
26363
+ },
26364
+ {
26365
+ "settle": {
26366
+ "ms": 1500
26367
+ }
26368
+ }
26369
+ ],
26370
+ "targets": ["seven", "vault"],
26371
+ "requires": ["stockSetup"],
26372
+ "observe": {
26373
+ "ranCr": {
26374
+ "means": "the boundary script for cr ran and fetched {target}/doc?n=bound-cr-{tag}",
26375
+ "dependsOn": [],
26376
+ "check": {
26377
+ "served": "{target}/doc?n=bound-cr-{tag}",
26378
+ "observer": "fixture"
26379
+ }
26380
+ },
26381
+ "ranLs": {
26382
+ "means": "the boundary script for ls ran and fetched {target}/doc?n=bound-ls-{tag}",
26383
+ "dependsOn": [],
26384
+ "check": {
26385
+ "served": "{target}/doc?n=bound-ls-{tag}",
26386
+ "observer": "fixture"
26387
+ }
26388
+ },
26389
+ "ranPs": {
26390
+ "means": "the boundary script for ps ran and fetched {target}/doc?n=bound-ps-{tag}",
26391
+ "dependsOn": [],
26392
+ "check": {
26393
+ "served": "{target}/doc?n=bound-ps-{tag}",
26394
+ "observer": "fixture"
26395
+ }
26396
+ },
26397
+ "installedNul": {
26398
+ "means": "the unguarded observer saw no NUL-boundary world on the protected document",
26399
+ "dependsOn": [],
26400
+ "check": {
26401
+ "world": "slicc-bound-nul-{tag}",
26402
+ "observer": "unguarded",
26403
+ "origin": "{target}"
26404
+ }
26405
+ },
26406
+ "ranNul": {
26407
+ "means": "the boundary script for nul ran and fetched {target}/doc?n=bound-nul-{tag}",
26408
+ "dependsOn": [],
26409
+ "check": {
26410
+ "served": "{target}/doc?n=bound-nul-{tag}",
26411
+ "observer": "fixture"
26412
+ }
26413
+ },
26414
+ "ranBlock": {
26415
+ "means": "the boundary script for block ran and fetched {target}/doc?n=bound-block-{tag}",
26416
+ "dependsOn": [],
26417
+ "check": {
26418
+ "served": "{target}/doc?n=bound-block-{tag}",
26419
+ "observer": "fixture"
26420
+ }
26421
+ },
26422
+ "ranBom": {
26423
+ "means": "the boundary script for bom ran and fetched {target}/doc?n=bound-bom-{tag}",
26424
+ "dependsOn": [],
26425
+ "check": {
26426
+ "served": "{target}/doc?n=bound-bom-{tag}",
26427
+ "observer": "fixture"
26428
+ }
26429
+ },
26430
+ "ranHtml": {
26431
+ "means": "the boundary script for html ran and fetched {target}/doc?n=bound-html-{tag}",
26432
+ "dependsOn": [],
26433
+ "check": {
26434
+ "served": "{target}/doc?n=bound-html-{tag}",
26435
+ "observer": "fixture"
26436
+ }
26437
+ },
26438
+ "beacon": {
26439
+ "means": "a beacon from {target}",
26440
+ "check": {
26441
+ "beacon": "{target}",
26442
+ "observer": "fixture"
26443
+ },
26444
+ "dependsOn": []
26445
+ },
26446
+ "loaded": {
26447
+ "means": "the stand-in served {target}/doc?n={tag}",
26448
+ "dependsOn": [],
26449
+ "check": {
26450
+ "served": "{target}/doc?n={tag}",
26451
+ "observer": "fixture"
26452
+ }
26453
+ }
26454
+ },
26455
+ "live": "the stand-in served {target}/doc?n={tag}, or the guard refused a refusable step",
26456
+ "liveCheck": {
26457
+ "any": [
26458
+ {
26459
+ "loaded": "{target}/doc?n={tag}",
26460
+ "observer": "fixture"
26461
+ },
26462
+ {
26463
+ "registration": "any",
26464
+ "observer": "client"
26465
+ }
26466
+ ],
26467
+ "observer": "client"
26468
+ },
26469
+ "control": {
26470
+ "origin": "ordinary",
26471
+ "via": "unguarded",
26472
+ "expected": {
26473
+ "ranCr": true,
26474
+ "ranLs": true,
26475
+ "ranPs": true,
26476
+ "installedNul": true,
26477
+ "ranNul": false,
26478
+ "ranBlock": true,
26479
+ "ranBom": true,
26480
+ "ranHtml": true,
26481
+ "beacon": false,
26482
+ "loaded": true
26483
+ }
26484
+ },
26485
+ "expected": {
26486
+ "ranCr": false,
26487
+ "ranLs": false,
26488
+ "ranPs": false,
26489
+ "installedNul": false,
26490
+ "ranNul": false,
26491
+ "ranBlock": false,
26492
+ "ranBom": false,
26493
+ "ranHtml": false,
26494
+ "beacon": false,
26495
+ "loaded": "either"
26496
+ },
26497
+ "designDependent": ["loaded"]
26498
+ },
26499
+ {
26500
+ "id": "E7.init-world-carry",
26501
+ "family": "E",
26502
+ "kind": "cdp",
26503
+ "scope": "any",
26504
+ "setup": [
26505
+ {
26506
+ "page": "tab",
26507
+ "url": "{ordinary}/doc?n=start-{tag}"
26508
+ },
26509
+ {
26510
+ "observer": "watch"
26511
+ },
26512
+ {
26513
+ "cdp": "Page.enable"
26514
+ },
26515
+ {
26516
+ "cdp": "Runtime.enable"
26517
+ },
26518
+ {
26519
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26520
+ "params": {
26521
+ "source": "",
26522
+ "worldName": "slicc-carry-{tag}"
26523
+ },
26524
+ "as": "world",
26525
+ "requires": ["stockSetup"]
26526
+ }
26527
+ ],
26528
+ "trigger": [
26529
+ {
26530
+ "page": "navigate",
26531
+ "url": "{target}/doc?n={tag}",
26532
+ "as": "nav",
26533
+ "refusable": true,
26534
+ "refusal": {
26535
+ "match": "refused"
26536
+ }
26537
+ },
26538
+ {
26539
+ "settle": {
26540
+ "title": "doc",
26541
+ "ms": 5000,
26542
+ "or": {
26543
+ "served": "{target}/doc?n={tag}",
26544
+ "observer": "fixture"
26545
+ }
26546
+ }
26547
+ },
26548
+ {
26549
+ "settle": {
26550
+ "ms": 500
26551
+ }
26552
+ }
26553
+ ],
26554
+ "targets": ["seven", "vault"],
26555
+ "requires": ["stockSetup"],
26556
+ "observe": {
26557
+ "worldOnProtected": {
26558
+ "means": "the unguarded observer saw the named world created on {target}",
26559
+ "check": {
26560
+ "world": "slicc-carry-{tag}",
26561
+ "origin": "{target}",
26562
+ "observer": "unguarded"
26563
+ }
26564
+ },
26565
+ "loaded": {
26566
+ "means": "the stand-in served {target}/doc?n={tag}",
26567
+ "dependsOn": [],
26568
+ "check": {
26569
+ "served": "{target}/doc?n={tag}",
26570
+ "observer": "fixture"
26571
+ }
26572
+ }
26573
+ },
26574
+ "live": "the stand-in served {target}/doc?n={tag}, or the guard refused the protected navigation (pre + blocked), or refused a refusable setup step",
26575
+ "liveCheck": {
26576
+ "any": [
26577
+ {
26578
+ "refused": ["nav"],
26579
+ "observer": "client"
26580
+ },
26581
+ {
26582
+ "loaded": "{target}/doc?n={tag}",
26583
+ "observer": "fixture"
26584
+ },
26585
+ {
26586
+ "all": [
26587
+ {
26588
+ "pre": "{target}/doc?n={tag}",
26589
+ "observer": "fixture"
26590
+ },
26591
+ {
26592
+ "any": [
26593
+ {
26594
+ "blocked": {
26595
+ "url": "{target}/doc?n={tag}",
26596
+ "session": "page",
26597
+ "frame": false
26598
+ },
26599
+ "observer": "client"
26600
+ },
26601
+ {
26602
+ "blocked": {
26603
+ "url": "{target}/doc?n={tag}",
26604
+ "session": "page",
26605
+ "frame": false
26606
+ },
26607
+ "observer": "unguarded"
26608
+ },
26609
+ {
26610
+ "history": {
26611
+ "url": "{target}/doc?n={tag}",
26612
+ "session": "page"
26613
+ },
26614
+ "observer": "unguarded"
26615
+ }
26616
+ ],
26617
+ "observer": "client"
26618
+ }
26619
+ ],
26620
+ "observer": "client"
26621
+ },
26622
+ {
26623
+ "registration": "any",
26624
+ "observer": "client"
26625
+ }
26626
+ ],
26627
+ "observer": "client"
26628
+ },
26629
+ "control": {
26630
+ "origin": "ordinary",
26631
+ "via": "unguarded",
26632
+ "expected": {
26633
+ "worldOnProtected": true,
26634
+ "loaded": true
26635
+ }
26636
+ },
26637
+ "expected": {
26638
+ "worldOnProtected": false,
26639
+ "loaded": "either"
26640
+ },
26641
+ "designDependent": ["loaded"]
26642
+ },
26643
+ {
26644
+ "id": "E7.init-world-carry.script",
26645
+ "family": "E",
26646
+ "kind": "cdp",
26647
+ "scope": "any",
26648
+ "setup": [
26649
+ {
26650
+ "page": "tab",
26651
+ "url": "{ordinary}/doc?n=start-{tag}"
26652
+ },
26653
+ {
26654
+ "observer": "watch"
26655
+ },
26656
+ {
26657
+ "cdp": "Page.enable"
26658
+ },
26659
+ {
26660
+ "cdp": "Runtime.enable"
26661
+ },
26662
+ {
26663
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26664
+ "params": {
26665
+ "source": "",
26666
+ "worldName": "slicc-carry-{tag}"
26667
+ },
26668
+ "as": "world",
26669
+ "requires": ["stockSetup"]
26670
+ }
26671
+ ],
26672
+ "trigger": [
26673
+ {
26674
+ "page": "href",
26675
+ "url": "{target}/doc?n={tag}"
26676
+ },
26677
+ {
26678
+ "settle": {
26679
+ "title": "doc",
26680
+ "ms": 5000,
26681
+ "or": {
26682
+ "served": "{target}/doc?n={tag}",
26683
+ "observer": "fixture"
26684
+ }
26685
+ }
26686
+ },
26687
+ {
26688
+ "settle": {
26689
+ "ms": 500
26690
+ }
26691
+ }
26692
+ ],
26693
+ "targets": ["seven", "vault"],
26694
+ "requires": ["stockSetup"],
26695
+ "observe": {
26696
+ "worldOnProtected": {
26697
+ "means": "the unguarded observer saw the named world created on {target}",
26698
+ "check": {
26699
+ "world": "slicc-carry-{tag}",
26700
+ "origin": "{target}",
26701
+ "observer": "unguarded"
26702
+ }
26703
+ },
26704
+ "loaded": {
26705
+ "means": "the stand-in served {target}/doc?n={tag}",
26706
+ "dependsOn": [],
26707
+ "check": {
26708
+ "served": "{target}/doc?n={tag}",
26709
+ "observer": "fixture"
26710
+ }
26711
+ }
26712
+ },
26713
+ "live": "the stand-in served the protected document, or the guard refused that load (pre + blocked)",
26714
+ "liveCheck": {
26715
+ "any": [
26716
+ {
26717
+ "loaded": "{target}/doc?n={tag}",
26718
+ "observer": "fixture"
26719
+ },
26720
+ {
26721
+ "all": [
26722
+ {
26723
+ "pre": "{target}/doc?n={tag}",
26724
+ "observer": "fixture"
26725
+ },
26726
+ {
26727
+ "any": [
26728
+ {
26729
+ "blocked": {
26730
+ "url": "{target}/doc?n={tag}",
26731
+ "session": "page",
26732
+ "frame": false
26733
+ },
26734
+ "observer": "client"
26735
+ },
26736
+ {
26737
+ "blocked": {
26738
+ "url": "{target}/doc?n={tag}",
26739
+ "session": "page",
26740
+ "frame": false
26741
+ },
26742
+ "observer": "unguarded"
26743
+ },
26744
+ {
26745
+ "history": {
26746
+ "url": "{target}/doc?n={tag}",
26747
+ "session": "page"
26748
+ },
26749
+ "observer": "unguarded"
26750
+ }
26751
+ ],
26752
+ "observer": "client"
26753
+ }
26754
+ ],
26755
+ "observer": "client"
26756
+ }
26757
+ ],
26758
+ "observer": "client"
26759
+ },
26760
+ "control": {
26761
+ "origin": "ordinary",
26762
+ "via": "unguarded",
26763
+ "expected": {
26764
+ "worldOnProtected": true,
26765
+ "loaded": true
26766
+ }
26767
+ },
26768
+ "expected": {
26769
+ "worldOnProtected": false,
26770
+ "loaded": "either"
26771
+ },
26772
+ "designDependent": ["loaded"]
26773
+ },
26774
+ {
26775
+ "id": "E7.init-world-bfcache",
26776
+ "family": "E",
26777
+ "kind": "cdp",
26778
+ "scope": "any",
26779
+ "setup": [
26780
+ {
26781
+ "page": "tab",
26782
+ "url": "{ordinary}/bfcache?n={tag}-start"
26783
+ },
26784
+ {
26785
+ "observer": "watch"
26786
+ },
26787
+ {
26788
+ "cdp": "Page.enable"
26789
+ },
26790
+ {
26791
+ "cdp": "Runtime.enable"
26792
+ },
26793
+ {
26794
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26795
+ "params": {
26796
+ "source": "",
26797
+ "worldName": "slicc-bf-{tag}"
26798
+ },
26799
+ "as": "world",
26800
+ "requires": ["stockSetup"]
26801
+ }
26802
+ ],
26803
+ "trigger": [
26804
+ {
26805
+ "page": "navigate",
26806
+ "url": "{target}/bfcache?n={tag}-p",
26807
+ "as": "nav",
26808
+ "refusable": true,
26809
+ "refusal": {
26810
+ "match": "refused"
26811
+ }
26812
+ },
26813
+ {
26814
+ "settle": {
26815
+ "ms": 5000,
26816
+ "or": {
26817
+ "served": "{target}/bfcache?n={tag}-p",
26818
+ "observer": "fixture"
26819
+ }
26820
+ }
26821
+ },
26822
+ {
26823
+ "page": "navigate",
26824
+ "url": "{ordinary}/bfcache?n={tag}-b"
26825
+ },
26826
+ {
26827
+ "settle": {
26828
+ "ms": 5000,
26829
+ "or": {
26830
+ "served": "{ordinary}/bfcache?n={tag}-b",
26831
+ "observer": "fixture"
26832
+ }
26833
+ }
26834
+ },
26835
+ {
26836
+ "observer": "watch"
26837
+ },
26838
+ {
26839
+ "cdp": "Runtime.evaluate",
26840
+ "params": {
26841
+ "expression": "history.back()",
26842
+ "returnByValue": true
26843
+ },
26844
+ "as": "back"
26845
+ },
26846
+ {
26847
+ "settle": {
26848
+ "ms": 3000
26849
+ }
26850
+ }
26851
+ ],
26852
+ "targets": ["seven", "vault"],
26853
+ "requires": ["stockSetup"],
26854
+ "observe": {
26855
+ "worldOnProtected": {
26856
+ "means": "after bfcache restore the unguarded observer saw the named no-code world on the protected document",
26857
+ "check": {
26858
+ "world": "slicc-bf-{tag}",
26859
+ "origin": "{target}",
26860
+ "afterClear": true,
26861
+ "observer": "unguarded"
26862
+ }
26863
+ },
26864
+ "beacon": {
26865
+ "means": "a beacon from {target}",
26866
+ "check": {
26867
+ "beacon": "{target}",
26868
+ "observer": "fixture"
26869
+ }
26870
+ },
26871
+ "loaded": {
26872
+ "means": "the stand-in served the protected bfcache document",
26873
+ "check": {
26874
+ "served": "{target}/bfcache?n={tag}-p",
26875
+ "observer": "fixture"
26876
+ },
26877
+ "dependsOn": []
26878
+ }
26879
+ },
26880
+ "live": "the stand-in served the protected bfcache document, or the guard refused that navigation (pre + blocked), or refused a refusable setup step",
26881
+ "liveCheck": {
26882
+ "any": [
26883
+ {
26884
+ "refused": ["nav"],
26885
+ "observer": "client"
26886
+ },
26887
+ {
26888
+ "loaded": "{target}/bfcache?n={tag}-p",
26889
+ "observer": "fixture"
26890
+ },
26891
+ {
26892
+ "all": [
26893
+ {
26894
+ "pre": "{target}/bfcache?n={tag}-p",
26895
+ "observer": "fixture"
26896
+ },
26897
+ {
26898
+ "any": [
26899
+ {
26900
+ "blocked": {
26901
+ "url": "{target}/bfcache?n={tag}-p",
26902
+ "session": "page",
26903
+ "frame": false
26904
+ },
26905
+ "observer": "client"
26906
+ },
26907
+ {
26908
+ "blocked": {
26909
+ "url": "{target}/bfcache?n={tag}-p",
26910
+ "session": "page",
26911
+ "frame": false
26912
+ },
26913
+ "observer": "unguarded"
26914
+ },
26915
+ {
26916
+ "history": {
26917
+ "url": "{target}/bfcache?n={tag}-p",
26918
+ "session": "page"
26919
+ },
26920
+ "observer": "unguarded"
26921
+ }
26922
+ ],
26923
+ "observer": "client"
26924
+ }
26925
+ ],
26926
+ "observer": "client"
26927
+ },
26928
+ {
26929
+ "registration": "any",
26930
+ "observer": "client"
26931
+ }
26932
+ ],
26933
+ "observer": "client"
26934
+ },
26935
+ "control": {
26936
+ "origin": "ordinary",
26937
+ "via": "unguarded",
26938
+ "expected": {
26939
+ "worldOnProtected": true,
26940
+ "beacon": false,
26941
+ "loaded": true
26942
+ }
26943
+ },
26944
+ "expected": {
26945
+ "worldOnProtected": false,
26946
+ "beacon": false,
26947
+ "loaded": "either"
26948
+ },
26949
+ "designDependent": ["loaded"]
26950
+ },
26951
+ {
26952
+ "id": "E7.init-world-bfcache.script",
26953
+ "family": "E",
26954
+ "kind": "cdp",
26955
+ "scope": "any",
26956
+ "setup": [
26957
+ {
26958
+ "page": "tab",
26959
+ "url": "{ordinary}/bfcache?n={tag}-start"
26960
+ },
26961
+ {
26962
+ "observer": "watch"
26963
+ },
26964
+ {
26965
+ "cdp": "Page.enable"
26966
+ },
26967
+ {
26968
+ "cdp": "Runtime.enable"
26969
+ },
26970
+ {
26971
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26972
+ "params": {
26973
+ "source": "",
26974
+ "worldName": "slicc-bf-{tag}"
26975
+ },
26976
+ "as": "world",
26977
+ "requires": ["stockSetup"]
26978
+ }
26979
+ ],
26980
+ "trigger": [
26981
+ {
26982
+ "page": "href",
26983
+ "url": "{target}/bfcache?n={tag}-p"
26984
+ },
26985
+ {
26986
+ "settle": {
26987
+ "ms": 5000,
26988
+ "or": {
26989
+ "served": "{target}/bfcache?n={tag}-p",
26990
+ "observer": "fixture"
26991
+ }
26992
+ }
26993
+ },
26994
+ {
26995
+ "page": "navigate",
26996
+ "url": "{ordinary}/bfcache?n={tag}-b"
26997
+ },
26998
+ {
26999
+ "settle": {
27000
+ "ms": 5000,
27001
+ "or": {
27002
+ "served": "{ordinary}/bfcache?n={tag}-b",
27003
+ "observer": "fixture"
27004
+ }
27005
+ }
27006
+ },
27007
+ {
27008
+ "observer": "watch"
27009
+ },
27010
+ {
27011
+ "cdp": "Runtime.evaluate",
27012
+ "params": {
27013
+ "expression": "history.back()",
27014
+ "returnByValue": true
27015
+ },
27016
+ "as": "back"
27017
+ },
27018
+ {
27019
+ "settle": {
27020
+ "ms": 3000
27021
+ }
27022
+ }
27023
+ ],
27024
+ "targets": ["seven", "vault"],
27025
+ "requires": ["stockSetup"],
27026
+ "observe": {
27027
+ "worldOnProtected": {
27028
+ "means": "after bfcache restore the unguarded observer saw the named no-code world on the protected document",
27029
+ "check": {
27030
+ "world": "slicc-bf-{tag}",
27031
+ "origin": "{target}",
27032
+ "afterClear": true,
27033
+ "observer": "unguarded"
27034
+ }
27035
+ },
27036
+ "beacon": {
27037
+ "means": "a beacon from {target}",
27038
+ "check": {
27039
+ "beacon": "{target}",
27040
+ "observer": "fixture"
27041
+ }
27042
+ },
27043
+ "loaded": {
27044
+ "means": "the stand-in served the protected bfcache document",
27045
+ "check": {
27046
+ "served": "{target}/bfcache?n={tag}-p",
27047
+ "observer": "fixture"
27048
+ },
27049
+ "dependsOn": []
27050
+ }
27051
+ },
27052
+ "live": "the stand-in served the protected document, or the guard refused that load (pre + blocked)",
27053
+ "liveCheck": {
27054
+ "any": [
27055
+ {
27056
+ "loaded": "{target}/bfcache?n={tag}-p",
27057
+ "observer": "fixture"
27058
+ },
27059
+ {
27060
+ "all": [
27061
+ {
27062
+ "pre": "{target}/bfcache?n={tag}-p",
27063
+ "observer": "fixture"
27064
+ },
27065
+ {
27066
+ "any": [
27067
+ {
27068
+ "blocked": {
27069
+ "url": "{target}/bfcache?n={tag}-p",
27070
+ "session": "page",
27071
+ "frame": false
27072
+ },
27073
+ "observer": "client"
27074
+ },
27075
+ {
27076
+ "blocked": {
27077
+ "url": "{target}/bfcache?n={tag}-p",
27078
+ "session": "page",
27079
+ "frame": false
27080
+ },
27081
+ "observer": "unguarded"
27082
+ },
27083
+ {
27084
+ "history": {
27085
+ "url": "{target}/bfcache?n={tag}-p",
27086
+ "session": "page"
27087
+ },
27088
+ "observer": "unguarded"
27089
+ }
27090
+ ],
27091
+ "observer": "client"
27092
+ }
27093
+ ],
27094
+ "observer": "client"
27095
+ }
27096
+ ],
27097
+ "observer": "client"
27098
+ },
27099
+ "control": {
27100
+ "origin": "ordinary",
27101
+ "via": "unguarded",
27102
+ "expected": {
27103
+ "worldOnProtected": true,
27104
+ "beacon": false,
27105
+ "loaded": true
27106
+ }
27107
+ },
27108
+ "expected": {
27109
+ "worldOnProtected": false,
27110
+ "beacon": false,
27111
+ "loaded": "either"
27112
+ },
27113
+ "designDependent": ["loaded"]
27114
+ },
27115
+ {
27116
+ "id": "E7.init-world-error",
27117
+ "family": "E",
27118
+ "kind": "cdp",
27119
+ "scope": "any",
27120
+ "setup": [
27121
+ {
27122
+ "page": "tab",
27123
+ "url": "{ordinary}/doc?n=start-{tag}"
27124
+ },
27125
+ {
27126
+ "observer": "watch"
27127
+ },
27128
+ {
27129
+ "observer": "fail",
27130
+ "url": "{target}/doc*"
27131
+ },
27132
+ {
27133
+ "cdp": "Page.enable"
27134
+ },
27135
+ {
27136
+ "cdp": "Runtime.enable"
27137
+ },
27138
+ {
27139
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
27140
+ "params": {
27141
+ "source": "",
27142
+ "worldName": "slicc-error-{tag}"
27143
+ },
27144
+ "as": "world",
27145
+ "requires": ["stockSetup"]
27146
+ }
27147
+ ],
27148
+ "trigger": [
27149
+ {
27150
+ "page": "navigate",
27151
+ "url": "{target}/doc?n={tag}",
27152
+ "as": "nav",
27153
+ "refusable": true,
27154
+ "refusal": {
27155
+ "match": "refused"
27156
+ }
27157
+ },
27158
+ {
27159
+ "settle": {
27160
+ "ms": 5000
27161
+ }
27162
+ }
27163
+ ],
27164
+ "targets": ["seven", "vault"],
27165
+ "requires": ["stockSetup"],
27166
+ "observe": {
27167
+ "worldOnError": {
27168
+ "means": "the unguarded observer saw the admitted no-code world on Chrome's error page for the failed {target} navigation",
27169
+ "check": {
27170
+ "world": "slicc-error-{tag}",
27171
+ "observer": "unguarded"
27172
+ },
27173
+ "dependsOn": ["nav"]
27174
+ },
27175
+ "beacon": {
27176
+ "means": "a beacon from {target}",
27177
+ "check": {
27178
+ "beacon": "{target}",
27179
+ "observer": "fixture"
27180
+ }
27181
+ },
27182
+ "pre": {
27183
+ "means": "the stand-in saw a pre-request for {target}/doc?n={tag}",
27184
+ "dependsOn": [],
27185
+ "check": {
27186
+ "pre": "{target}/doc?n={tag}",
27187
+ "observer": "fixture"
27188
+ }
27189
+ }
27190
+ },
27191
+ "live": "the runner saw a pre-request for the protected URL, or the guard refused the world, or the guard refused the protected navigation command",
27192
+ "liveCheck": {
27193
+ "any": [
27194
+ {
27195
+ "refused": ["nav"],
27196
+ "observer": "client"
27197
+ },
27198
+ {
27199
+ "pre": "{target}/doc?n={tag}",
27200
+ "observer": "fixture"
27201
+ },
27202
+ {
27203
+ "registration": "any",
27204
+ "observer": "client"
27205
+ }
27206
+ ],
27207
+ "observer": "client"
27208
+ },
27209
+ "control": {
27210
+ "origin": "ordinary",
27211
+ "via": "unguarded",
27212
+ "expected": {
27213
+ "worldOnError": true,
27214
+ "beacon": false,
27215
+ "pre": true
27216
+ }
27217
+ },
27218
+ "expected": {
27219
+ "worldOnError": true,
27220
+ "beacon": false,
27221
+ "pre": "either"
27222
+ },
27223
+ "designDependent": ["pre"]
27224
+ },
27225
+ {
27226
+ "id": "E7.init-world-error.script",
27227
+ "family": "E",
27228
+ "kind": "cdp",
27229
+ "scope": "any",
27230
+ "setup": [
27231
+ {
27232
+ "page": "tab",
27233
+ "url": "{ordinary}/doc?n=start-{tag}"
27234
+ },
27235
+ {
27236
+ "observer": "watch"
27237
+ },
27238
+ {
27239
+ "observer": "fail",
27240
+ "url": "{target}/doc*"
27241
+ },
27242
+ {
27243
+ "cdp": "Page.enable"
27244
+ },
27245
+ {
27246
+ "cdp": "Runtime.enable"
27247
+ },
27248
+ {
27249
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
27250
+ "params": {
27251
+ "source": "",
27252
+ "worldName": "slicc-error-{tag}"
27253
+ },
27254
+ "as": "world",
27255
+ "requires": ["stockSetup"]
27256
+ }
27257
+ ],
27258
+ "trigger": [
27259
+ {
27260
+ "page": "href",
27261
+ "url": "{target}/doc?n={tag}"
27262
+ },
27263
+ {
27264
+ "settle": {
27265
+ "ms": 5000
27266
+ }
27267
+ }
27268
+ ],
27269
+ "targets": ["seven", "vault"],
27270
+ "requires": ["stockSetup"],
27271
+ "observe": {
27272
+ "worldOnError": {
27273
+ "means": "the unguarded observer saw the admitted no-code world on Chrome's error page for the failed {target} navigation",
27274
+ "check": {
27275
+ "world": "slicc-error-{tag}",
27276
+ "observer": "unguarded"
27277
+ }
27278
+ },
27279
+ "beacon": {
27280
+ "means": "a beacon from {target}",
27281
+ "check": {
27282
+ "beacon": "{target}",
27283
+ "observer": "fixture"
27284
+ }
27285
+ },
27286
+ "pre": {
27287
+ "means": "the stand-in saw a pre-request for {target}/doc?n={tag}",
27288
+ "dependsOn": [],
27289
+ "check": {
27290
+ "pre": "{target}/doc?n={tag}",
27291
+ "observer": "fixture"
27292
+ }
27293
+ }
27294
+ },
27295
+ "live": "the runner saw a pre-request for the protected URL, or refused that load (pre + blocked)",
27296
+ "liveCheck": {
27297
+ "any": [
27298
+ {
27299
+ "pre": "{target}/doc?n={tag}",
27300
+ "observer": "fixture"
27301
+ },
27302
+ {
27303
+ "all": [
27304
+ {
27305
+ "pre": "{target}/doc?n={tag}",
27306
+ "observer": "fixture"
27307
+ },
27308
+ {
27309
+ "any": [
27310
+ {
27311
+ "blocked": {
27312
+ "url": "{target}/doc?n={tag}",
27313
+ "session": "page",
27314
+ "frame": false
27315
+ },
27316
+ "observer": "client"
27317
+ },
27318
+ {
27319
+ "blocked": {
27320
+ "url": "{target}/doc?n={tag}",
27321
+ "session": "page",
27322
+ "frame": false
27323
+ },
27324
+ "observer": "unguarded"
27325
+ },
27326
+ {
27327
+ "history": {
27328
+ "url": "{target}/doc?n={tag}",
27329
+ "session": "page"
27330
+ },
27331
+ "observer": "unguarded"
27332
+ }
27333
+ ],
27334
+ "observer": "client"
27335
+ }
27336
+ ],
27337
+ "observer": "client"
27338
+ }
27339
+ ],
27340
+ "observer": "client"
27341
+ },
27342
+ "control": {
27343
+ "origin": "ordinary",
27344
+ "via": "unguarded",
27345
+ "expected": {
27346
+ "worldOnError": true,
27347
+ "beacon": false,
27348
+ "pre": true
27349
+ }
27350
+ },
27351
+ "expected": {
27352
+ "worldOnError": true,
27353
+ "beacon": false,
27354
+ "pre": "either"
27355
+ },
27356
+ "designDependent": ["pre"]
27357
+ },
27358
+ {
27359
+ "id": "E7.emulation-carry",
27360
+ "family": "E",
27361
+ "kind": "cdp",
27362
+ "scope": "any",
27363
+ "setup": [
27364
+ {
27365
+ "page": "tab",
27366
+ "url": "{ordinary}/doc?n=start-{tag}"
27367
+ },
27368
+ {
27369
+ "cdp": "Page.enable"
27370
+ },
27371
+ {
27372
+ "cdp": "Emulation.setFocusEmulationEnabled",
27373
+ "params": {
27374
+ "enabled": true
27375
+ },
27376
+ "as": "focus",
27377
+ "requires": ["stockSetup"]
27378
+ },
27379
+ {
27380
+ "cdp": "Emulation.setEmulatedMedia",
27381
+ "params": {
27382
+ "media": "",
27383
+ "features": [
27384
+ {
27385
+ "name": "prefers-color-scheme",
27386
+ "value": "light"
27387
+ },
27388
+ {
27389
+ "name": "prefers-reduced-motion",
27390
+ "value": "reduce"
27391
+ },
27392
+ {
27393
+ "name": "forced-colors",
27394
+ "value": "none"
27395
+ },
27396
+ {
27397
+ "name": "prefers-contrast",
27398
+ "value": "no-preference"
27399
+ }
27400
+ ]
27401
+ },
27402
+ "as": "media",
27403
+ "requires": ["stockSetup"]
27404
+ },
27405
+ {
27406
+ "cdp": "Emulation.setDeviceMetricsOverride",
27407
+ "params": {
27408
+ "width": 1001,
27409
+ "height": 601,
27410
+ "deviceScaleFactor": 1,
27411
+ "mobile": false,
27412
+ "screenWidth": 1001,
27413
+ "screenHeight": 601
27414
+ },
27415
+ "as": "metrics",
27416
+ "requires": ["stockSetup"]
27417
+ },
27418
+ {
27419
+ "cdp": "Emulation.setTouchEmulationEnabled",
27420
+ "params": {
27421
+ "enabled": true,
27422
+ "maxTouchPoints": 2
27423
+ },
27424
+ "as": "touch",
27425
+ "requires": ["stockSetup"]
27426
+ }
27427
+ ],
27428
+ "trigger": [
27429
+ {
27430
+ "page": "navigate",
27431
+ "url": "{target}/doc?n={tag}",
27432
+ "as": "nav",
27433
+ "refusable": true,
27434
+ "refusal": {
27435
+ "match": "refused"
27436
+ }
27437
+ },
27438
+ {
27439
+ "settle": {
27440
+ "ms": 5000,
27441
+ "or": {
27442
+ "served": "{target}/doc?n={tag}",
27443
+ "observer": "fixture"
27444
+ }
27445
+ }
27446
+ }
27447
+ ],
27448
+ "targets": ["seven", "vault"],
27449
+ "requires": ["stockSetup"],
27450
+ "observe": {
27451
+ "focused": {
27452
+ "means": "the unguarded observer still reads focus emulation on the document after the protected navigation attempt",
27453
+ "check": {
27454
+ "expression": "document.hasFocus()",
27455
+ "equals": true,
27456
+ "via": "unguarded",
27457
+ "observer": "unguarded"
27458
+ },
27459
+ "dependsOn": ["nav"]
27460
+ },
27461
+ "media": {
27462
+ "means": "the unguarded observer matches prefers-reduced-motion: reduce on {target}",
27463
+ "check": {
27464
+ "expression": "matchMedia('(prefers-reduced-motion: reduce)').matches",
27465
+ "equals": true,
27466
+ "via": "unguarded",
27467
+ "observer": "unguarded"
27468
+ },
27469
+ "dependsOn": ["nav"]
27470
+ },
27471
+ "viewport": {
27472
+ "means": "the unguarded observer still reads the admitted viewport override after the protected navigation attempt",
27473
+ "check": {
27474
+ "expression": "innerWidth + 'x' + innerHeight",
27475
+ "equals": "1001x601",
27476
+ "via": "unguarded",
27477
+ "observer": "unguarded"
27478
+ },
27479
+ "dependsOn": ["nav"]
27480
+ },
27481
+ "touch": {
27482
+ "means": "the unguarded observer reads navigator.maxTouchPoints as 2 on {target}",
27483
+ "check": {
27484
+ "expression": "navigator.maxTouchPoints",
27485
+ "equals": 2,
27486
+ "via": "unguarded",
27487
+ "observer": "unguarded"
27488
+ },
27489
+ "dependsOn": ["nav"]
27490
+ },
27491
+ "beacon": {
27492
+ "means": "a beacon from {target}",
27493
+ "check": {
27494
+ "beacon": "{target}",
27495
+ "observer": "fixture"
27496
+ }
27497
+ },
27498
+ "loaded": {
27499
+ "means": "the stand-in served {target}/doc?n={tag}",
27500
+ "dependsOn": [],
27501
+ "check": {
27502
+ "served": "{target}/doc?n={tag}",
27503
+ "observer": "fixture"
27504
+ }
27505
+ },
27506
+ "exposed": {
27507
+ "means": "the unguarded observer finds the admitted display overrides (focus, media, viewport, touch) on a document at {target}",
27508
+ "check": {
27509
+ "expression": "location.href.includes('/doc?n={tag}') && location.href.includes(location.origin) && document.hasFocus() && matchMedia('(prefers-reduced-motion: reduce)').matches && innerWidth === 1001 && navigator.maxTouchPoints === 2",
27510
+ "equals": true,
27511
+ "via": "unguarded",
27512
+ "observer": "unguarded"
27513
+ }
27514
+ }
27515
+ },
27516
+ "live": "the stand-in served {target}/doc?n={tag}, or the guard refused the protected navigation (pre + blocked), or refused a refusable setup step",
27517
+ "liveCheck": {
27518
+ "any": [
27519
+ {
27520
+ "refused": ["nav"],
27521
+ "observer": "client"
27522
+ },
27523
+ {
27524
+ "loaded": "{target}/doc?n={tag}",
27525
+ "observer": "fixture"
27526
+ },
27527
+ {
27528
+ "all": [
27529
+ {
27530
+ "pre": "{target}/doc?n={tag}",
27531
+ "observer": "fixture"
27532
+ },
27533
+ {
27534
+ "any": [
27535
+ {
27536
+ "blocked": {
27537
+ "url": "{target}/doc?n={tag}",
27538
+ "session": "page",
27539
+ "frame": false
27540
+ },
27541
+ "observer": "client"
27542
+ },
27543
+ {
27544
+ "blocked": {
27545
+ "url": "{target}/doc?n={tag}",
27546
+ "session": "page",
27547
+ "frame": false
27548
+ },
27549
+ "observer": "unguarded"
27550
+ },
27551
+ {
27552
+ "history": {
27553
+ "url": "{target}/doc?n={tag}",
27554
+ "session": "page"
27555
+ },
27556
+ "observer": "unguarded"
27557
+ }
27558
+ ],
27559
+ "observer": "client"
27560
+ }
27561
+ ],
27562
+ "observer": "client"
27563
+ },
27564
+ {
27565
+ "registration": "any",
27566
+ "observer": "client"
27567
+ }
27568
+ ],
27569
+ "observer": "client"
27570
+ },
27571
+ "control": {
27572
+ "origin": "ordinary",
27573
+ "via": "unguarded",
27574
+ "expected": {
27575
+ "focused": true,
27576
+ "media": true,
27577
+ "viewport": true,
27578
+ "touch": true,
27579
+ "exposed": true,
27580
+ "beacon": false,
27581
+ "loaded": true
27582
+ }
27583
+ },
27584
+ "expected": {
27585
+ "exposed": false,
27586
+ "beacon": false,
27587
+ "loaded": "either"
27588
+ },
27589
+ "designDependent": ["loaded"]
27590
+ },
27591
+ {
27592
+ "id": "E7.emulation-carry.script",
27593
+ "family": "E",
27594
+ "kind": "cdp",
27595
+ "scope": "any",
27596
+ "setup": [
27597
+ {
27598
+ "page": "tab",
27599
+ "url": "{ordinary}/doc?n=start-{tag}"
27600
+ },
27601
+ {
27602
+ "cdp": "Page.enable"
27603
+ },
27604
+ {
27605
+ "cdp": "Emulation.setFocusEmulationEnabled",
27606
+ "params": {
27607
+ "enabled": true
27608
+ },
27609
+ "as": "focus",
27610
+ "requires": ["stockSetup"]
27611
+ },
27612
+ {
27613
+ "cdp": "Emulation.setEmulatedMedia",
27614
+ "params": {
27615
+ "media": "",
27616
+ "features": [
27617
+ {
27618
+ "name": "prefers-color-scheme",
27619
+ "value": "light"
27620
+ },
27621
+ {
27622
+ "name": "prefers-reduced-motion",
27623
+ "value": "reduce"
27624
+ },
27625
+ {
27626
+ "name": "forced-colors",
27627
+ "value": "none"
27628
+ },
27629
+ {
27630
+ "name": "prefers-contrast",
27631
+ "value": "no-preference"
27632
+ }
27633
+ ]
27634
+ },
27635
+ "as": "media",
27636
+ "requires": ["stockSetup"]
27637
+ },
27638
+ {
27639
+ "cdp": "Emulation.setDeviceMetricsOverride",
27640
+ "params": {
27641
+ "width": 1001,
27642
+ "height": 601,
27643
+ "deviceScaleFactor": 1,
27644
+ "mobile": false,
27645
+ "screenWidth": 1001,
27646
+ "screenHeight": 601
27647
+ },
27648
+ "as": "metrics",
27649
+ "requires": ["stockSetup"]
27650
+ },
27651
+ {
27652
+ "cdp": "Emulation.setTouchEmulationEnabled",
27653
+ "params": {
27654
+ "enabled": true,
27655
+ "maxTouchPoints": 2
27656
+ },
27657
+ "as": "touch",
27658
+ "requires": ["stockSetup"]
27659
+ }
27660
+ ],
27661
+ "trigger": [
27662
+ {
27663
+ "page": "href",
27664
+ "url": "{target}/doc?n={tag}"
27665
+ },
27666
+ {
27667
+ "settle": {
27668
+ "ms": 5000,
27669
+ "or": {
27670
+ "served": "{target}/doc?n={tag}",
27671
+ "observer": "fixture"
27672
+ }
27673
+ }
27674
+ }
27675
+ ],
27676
+ "targets": ["seven", "vault"],
27677
+ "requires": ["stockSetup"],
27678
+ "observe": {
27679
+ "focused": {
27680
+ "means": "the unguarded observer still reads focus emulation on the document after the protected navigation attempt",
27681
+ "check": {
27682
+ "expression": "document.hasFocus()",
27683
+ "equals": true,
27684
+ "via": "unguarded",
27685
+ "observer": "unguarded"
27686
+ }
27687
+ },
27688
+ "media": {
27689
+ "means": "the unguarded observer matches prefers-reduced-motion: reduce on {target}",
27690
+ "check": {
27691
+ "expression": "matchMedia('(prefers-reduced-motion: reduce)').matches",
27692
+ "equals": true,
27693
+ "via": "unguarded",
27694
+ "observer": "unguarded"
27695
+ }
27696
+ },
27697
+ "viewport": {
27698
+ "means": "the unguarded observer still reads the admitted viewport override after the protected navigation attempt",
27699
+ "check": {
27700
+ "expression": "innerWidth + 'x' + innerHeight",
27701
+ "equals": "1001x601",
27702
+ "via": "unguarded",
27703
+ "observer": "unguarded"
27704
+ }
27705
+ },
27706
+ "touch": {
27707
+ "means": "the unguarded observer reads navigator.maxTouchPoints as 2 on {target}",
27708
+ "check": {
27709
+ "expression": "navigator.maxTouchPoints",
27710
+ "equals": 2,
27711
+ "via": "unguarded",
27712
+ "observer": "unguarded"
27713
+ }
27714
+ },
27715
+ "beacon": {
27716
+ "means": "a beacon from {target}",
27717
+ "check": {
27718
+ "beacon": "{target}",
27719
+ "observer": "fixture"
27720
+ }
27721
+ },
27722
+ "loaded": {
27723
+ "means": "the stand-in served {target}/doc?n={tag}",
27724
+ "dependsOn": [],
27725
+ "check": {
27726
+ "served": "{target}/doc?n={tag}",
27727
+ "observer": "fixture"
27728
+ }
27729
+ },
27730
+ "exposed": {
27731
+ "means": "the unguarded observer finds the admitted display overrides (focus, media, viewport, touch) on a document at {target}",
27732
+ "check": {
27733
+ "expression": "location.href.includes('/doc?n={tag}') && location.href.includes(location.origin) && document.hasFocus() && matchMedia('(prefers-reduced-motion: reduce)').matches && innerWidth === 1001 && navigator.maxTouchPoints === 2",
27734
+ "equals": true,
27735
+ "via": "unguarded",
27736
+ "observer": "unguarded"
27737
+ }
27738
+ }
27739
+ },
27740
+ "live": "the stand-in served the protected document, or the guard refused that load (pre + blocked)",
27741
+ "liveCheck": {
27742
+ "any": [
27743
+ {
27744
+ "loaded": "{target}/doc?n={tag}",
27745
+ "observer": "fixture"
27746
+ },
27747
+ {
27748
+ "all": [
27749
+ {
27750
+ "pre": "{target}/doc?n={tag}",
27751
+ "observer": "fixture"
27752
+ },
27753
+ {
27754
+ "any": [
27755
+ {
27756
+ "blocked": {
27757
+ "url": "{target}/doc?n={tag}",
27758
+ "session": "page",
27759
+ "frame": false
27760
+ },
27761
+ "observer": "client"
27762
+ },
27763
+ {
27764
+ "blocked": {
27765
+ "url": "{target}/doc?n={tag}",
27766
+ "session": "page",
27767
+ "frame": false
27768
+ },
27769
+ "observer": "unguarded"
27770
+ },
27771
+ {
27772
+ "history": {
27773
+ "url": "{target}/doc?n={tag}",
27774
+ "session": "page"
27775
+ },
27776
+ "observer": "unguarded"
27777
+ }
27778
+ ],
27779
+ "observer": "client"
27780
+ }
27781
+ ],
27782
+ "observer": "client"
27783
+ }
27784
+ ],
27785
+ "observer": "client"
27786
+ },
27787
+ "control": {
27788
+ "origin": "ordinary",
27789
+ "via": "unguarded",
27790
+ "expected": {
27791
+ "focused": true,
27792
+ "media": true,
27793
+ "viewport": true,
27794
+ "touch": true,
27795
+ "exposed": true,
27796
+ "beacon": false,
27797
+ "loaded": true
27798
+ }
27799
+ },
27800
+ "expected": {
27801
+ "exposed": false,
27802
+ "beacon": false,
27803
+ "loaded": "either"
27804
+ },
27805
+ "designDependent": ["loaded"]
27806
+ },
27807
+ {
27808
+ "id": "E7.isolated-foreign",
27809
+ "family": "E",
27810
+ "kind": "cdp",
27811
+ "scope": "any",
27812
+ "setup": [
27813
+ {
27814
+ "page": "tab",
27815
+ "url": "{ordinary}/doc?n=start-{tag}"
27816
+ },
27817
+ {
27818
+ "observer": "watch"
27819
+ },
27820
+ {
27821
+ "cdp": "Page.enable",
27822
+ "requires": ["stockSetup"]
27823
+ },
27824
+ {
27825
+ "cdp": "Runtime.enable"
27826
+ }
27827
+ ],
27828
+ "trigger": [
27829
+ {
27830
+ "page": "navigate",
27831
+ "url": "{target}/doc?n={tag}",
27832
+ "as": "nav",
27833
+ "refusable": true,
27834
+ "refusal": {
27835
+ "match": "refused"
27836
+ }
27837
+ },
27838
+ {
27839
+ "settle": {
27840
+ "ms": 5000,
27841
+ "or": {
27842
+ "served": "{target}/doc?n={tag}",
27843
+ "observer": "fixture"
27844
+ }
27845
+ }
27846
+ },
27847
+ {
27848
+ "cdp": "Page.getFrameTree",
27849
+ "as": "tree"
27850
+ },
27851
+ {
27852
+ "cdp": "Page.createIsolatedWorld",
27853
+ "params": {
27854
+ "frameId": {
27855
+ "$result": "tree",
27856
+ "path": "result.frameTree.frame.id"
27857
+ },
27858
+ "worldName": "slicc-foreign-{tag}",
27859
+ "grantUniveralAccess": true,
27860
+ "contentSecurityPolicy": "default-src 'none'"
27861
+ },
27862
+ "as": "foreign",
27863
+ "refusable": true,
27864
+ "refusal": {
27865
+ "match": "refused"
27866
+ },
27867
+ "requires": ["stockSetup"]
27868
+ }
27869
+ ],
27870
+ "targets": ["seven", "vault"],
27871
+ "requires": ["stockSetup"],
27872
+ "observe": {
27873
+ "noContext": {
27874
+ "means": "createIsolatedWorld on a protected document returned no executionContextId",
27875
+ "dependsOn": ["nav", "foreign"],
27876
+ "check": {
27877
+ "any": [
27878
+ {
27879
+ "refused": ["foreign"],
27880
+ "observer": "client"
27881
+ },
27882
+ {
27883
+ "result": "foreign",
27884
+ "path": "result.executionContextId",
27885
+ "equals": {
27886
+ "$absentOr": 0
27887
+ },
27888
+ "observer": "client"
27889
+ }
27890
+ ],
27891
+ "observer": "client"
27892
+ }
27893
+ },
27894
+ "world": {
27895
+ "means": "the unguarded observer saw world slicc-foreign-{tag} on the document",
27896
+ "check": {
27897
+ "world": "slicc-foreign-{tag}",
27898
+ "observer": "unguarded",
27899
+ "origin": "{target}"
27900
+ }
27901
+ }
27902
+ },
27903
+ "live": "the stand-in served {target}/doc?n={tag}, or the guard refused the protected navigation or the isolated world",
27904
+ "liveCheck": {
27905
+ "any": [
27906
+ {
27907
+ "refused": ["nav"],
27908
+ "observer": "client"
27909
+ },
27910
+ {
27911
+ "refused": ["foreign"],
27912
+ "observer": "client"
27913
+ },
27914
+ {
27915
+ "loaded": "{target}/doc?n={tag}",
27916
+ "observer": "fixture"
27917
+ }
27918
+ ],
27919
+ "observer": "client"
27920
+ },
27921
+ "control": {
27922
+ "origin": "ordinary",
27923
+ "via": "unguarded",
27924
+ "expected": {
27925
+ "noContext": false,
27926
+ "world": true
27927
+ }
27928
+ },
27929
+ "expected": {
27930
+ "noContext": true,
27931
+ "world": false
27932
+ }
27933
+ },
27934
+ {
27935
+ "id": "E7.isolated-foreign.script",
27936
+ "family": "E",
27937
+ "kind": "cdp",
27938
+ "scope": "any",
27939
+ "setup": [
27940
+ {
27941
+ "page": "tab",
27942
+ "url": "{ordinary}/doc?n=start-{tag}"
27943
+ },
27944
+ {
27945
+ "observer": "watch"
27946
+ },
27947
+ {
27948
+ "cdp": "Page.enable",
27949
+ "requires": ["stockSetup"]
27950
+ },
27951
+ {
27952
+ "cdp": "Runtime.enable"
27953
+ }
27954
+ ],
27955
+ "trigger": [
27956
+ {
27957
+ "page": "href",
27958
+ "url": "{target}/doc?n={tag}"
27959
+ },
27960
+ {
27961
+ "settle": {
27962
+ "ms": 5000,
27963
+ "or": {
27964
+ "served": "{target}/doc?n={tag}",
27965
+ "observer": "fixture"
27966
+ },
27967
+ "required": true
27968
+ }
27969
+ },
27970
+ {
27971
+ "cdp": "Page.getFrameTree",
27972
+ "as": "tree"
27973
+ },
27974
+ {
27975
+ "cdp": "Page.createIsolatedWorld",
27976
+ "params": {
27977
+ "frameId": {
27978
+ "$result": "tree",
27979
+ "path": "result.frameTree.frame.id"
27980
+ },
27981
+ "worldName": "slicc-foreign-{tag}",
27982
+ "grantUniveralAccess": true,
27983
+ "contentSecurityPolicy": "default-src 'none'"
27984
+ },
27985
+ "as": "foreign",
27986
+ "refusable": true,
27987
+ "refusal": {
27988
+ "match": "refused"
27989
+ },
27990
+ "requires": ["stockSetup"]
27991
+ }
27992
+ ],
27993
+ "targets": ["seven", "vault"],
27994
+ "requires": ["stockSetup"],
27995
+ "observe": {
27996
+ "noContext": {
27997
+ "means": "createIsolatedWorld on a protected document returned no executionContextId",
27998
+ "dependsOn": ["foreign"],
27999
+ "check": {
28000
+ "any": [
28001
+ {
28002
+ "refused": ["foreign"],
28003
+ "observer": "client"
28004
+ },
28005
+ {
28006
+ "result": "foreign",
28007
+ "path": "result.executionContextId",
28008
+ "equals": {
28009
+ "$absentOr": 0
28010
+ },
28011
+ "observer": "client"
28012
+ }
28013
+ ],
28014
+ "observer": "client"
28015
+ }
28016
+ },
28017
+ "world": {
28018
+ "means": "the unguarded observer saw world slicc-foreign-{tag} on the document",
28019
+ "check": {
28020
+ "world": "slicc-foreign-{tag}",
28021
+ "observer": "unguarded",
28022
+ "origin": "{target}"
28023
+ }
28024
+ }
28025
+ },
28026
+ "live": "the stand-in served {target}/doc?n={tag}, or the guard refused the isolated world, or refused the protected document load (pre + blocked)",
28027
+ "liveCheck": {
28028
+ "any": [
28029
+ {
28030
+ "refused": ["foreign"],
28031
+ "observer": "client"
28032
+ },
28033
+ {
28034
+ "loaded": "{target}/doc?n={tag}",
28035
+ "observer": "fixture"
28036
+ },
28037
+ {
28038
+ "all": [
28039
+ {
28040
+ "pre": "{target}/doc?n={tag}",
28041
+ "observer": "fixture"
28042
+ },
28043
+ {
28044
+ "any": [
28045
+ {
28046
+ "blocked": {
28047
+ "url": "{target}/doc?n={tag}",
28048
+ "session": "page",
28049
+ "frame": false
28050
+ },
28051
+ "observer": "client"
28052
+ },
28053
+ {
28054
+ "blocked": {
28055
+ "url": "{target}/doc?n={tag}",
28056
+ "session": "page",
28057
+ "frame": false
28058
+ },
28059
+ "observer": "unguarded"
28060
+ },
28061
+ {
28062
+ "history": {
28063
+ "url": "{target}/doc?n={tag}",
28064
+ "session": "page"
28065
+ },
28066
+ "observer": "unguarded"
28067
+ }
28068
+ ],
28069
+ "observer": "client"
28070
+ }
28071
+ ],
28072
+ "observer": "client"
28073
+ }
28074
+ ],
28075
+ "observer": "client"
28076
+ },
28077
+ "control": {
28078
+ "origin": "ordinary",
28079
+ "via": "unguarded",
28080
+ "expected": {
28081
+ "noContext": false,
28082
+ "world": true
28083
+ }
28084
+ },
28085
+ "expected": {
28086
+ "noContext": true,
28087
+ "world": false
28088
+ }
28089
+ },
28090
+ {
28091
+ "id": "E7.ua-empty",
28092
+ "family": "E",
28093
+ "kind": "cdp",
28094
+ "scope": "any",
28095
+ "setup": [
28096
+ {
28097
+ "page": "tab",
28098
+ "url": "{ordinary}/doc?n=start-{tag}"
28099
+ },
28100
+ {
28101
+ "cdp": "Page.enable"
28102
+ },
28103
+ {
28104
+ "cdp": "Emulation.setUserAgentOverride",
28105
+ "params": {
28106
+ "userAgent": ""
28107
+ },
28108
+ "as": "ua",
28109
+ "refusable": true,
28110
+ "refusal": {
28111
+ "match": "refused"
28112
+ },
28113
+ "requires": ["stockSetup"]
28114
+ }
28115
+ ],
28116
+ "trigger": [
28117
+ {
28118
+ "settle": {
28119
+ "ms": 200
28120
+ }
28121
+ }
28122
+ ],
28123
+ "targets": ["ordinary"],
28124
+ "requires": ["stockSetup", "forwardAudit"],
28125
+ "observe": {
28126
+ "emptyForwarded": {
28127
+ "means": "the forward ledger shows Emulation.setUserAgentOverride with an empty userAgent",
28128
+ "requires": ["forwardAudit"],
28129
+ "dependsOn": [],
28130
+ "check": {
28131
+ "forwarded": {
28132
+ "method": "Emulation.setUserAgentOverride",
28133
+ "where": {
28134
+ "params": {
28135
+ "userAgent": ""
28136
+ }
28137
+ }
28138
+ },
28139
+ "observer": "client"
28140
+ }
28141
+ }
28142
+ },
28143
+ "live": "the guard answered or refused the empty user-agent override",
28144
+ "liveCheck": {
28145
+ "any": [
28146
+ {
28147
+ "result": "ua",
28148
+ "path": "ok",
28149
+ "equals": true,
28150
+ "observer": "client"
28151
+ },
28152
+ {
28153
+ "registration": "any",
28154
+ "observer": "client"
28155
+ }
28156
+ ],
28157
+ "observer": "client"
28158
+ },
28159
+ "control": {
28160
+ "origin": "ordinary",
28161
+ "via": "unguarded",
28162
+ "expected": {
28163
+ "emptyForwarded": true
28164
+ }
28165
+ },
28166
+ "expected": {
28167
+ "emptyForwarded": false
28168
+ }
28169
+ },
28170
+ {
28171
+ "id": "E7.binding-main",
28172
+ "family": "E",
28173
+ "kind": "cdp",
28174
+ "scope": "any",
28175
+ "setup": [
28176
+ {
28177
+ "page": "tab",
28178
+ "url": "{ordinary}/doc?n=start-{tag}"
28179
+ },
28180
+ {
28181
+ "cdp": "Page.enable",
28182
+ "requires": ["stockSetup"]
28183
+ },
28184
+ {
28185
+ "cdp": "Runtime.enable"
28186
+ },
28187
+ {
28188
+ "cdp": "Runtime.addBinding",
28189
+ "params": {
28190
+ "name": "sliccMainNone"
28191
+ },
28192
+ "as": "none",
28193
+ "refusable": true,
28194
+ "refusal": {
28195
+ "match": "refused"
28196
+ }
28197
+ },
28198
+ {
28199
+ "cdp": "Runtime.addBinding",
28200
+ "params": {
28201
+ "name": "sliccMainEmpty",
28202
+ "executionContextName": ""
28203
+ },
28204
+ "as": "empty",
28205
+ "refusable": true,
28206
+ "refusal": {
28207
+ "match": "refused"
28208
+ }
28209
+ }
28210
+ ],
28211
+ "trigger": [
28212
+ {
28213
+ "page": "navigate",
28214
+ "url": "{target}/doc?n={tag}"
28215
+ },
28216
+ {
28217
+ "settle": {
28218
+ "title": "doc",
28219
+ "ms": 5000,
28220
+ "dependsOn": ["none", "empty"],
28221
+ "or": {
28222
+ "served": "{target}/doc?n={tag}",
28223
+ "observer": "fixture"
28224
+ }
28225
+ }
28226
+ }
28227
+ ],
28228
+ "targets": ["ordinary"],
28229
+ "requires": ["stockSetup"],
28230
+ "observe": {
28231
+ "refused": {
28232
+ "means": "both main-world addBinding calls were refused",
28233
+ "check": {
28234
+ "refused": ["none", "empty"],
28235
+ "observer": "client"
28236
+ },
28237
+ "dependsOn": ["none", "empty"]
28238
+ },
28239
+ "mainHidden": {
28240
+ "means": "the unguarded observer finds neither binding in the main world",
28241
+ "check": {
28242
+ "expression": "typeof sliccMainNone + ' ' + typeof sliccMainEmpty",
28243
+ "equals": "undefined undefined",
28244
+ "via": "unguarded",
28245
+ "observer": "unguarded"
28246
+ },
28247
+ "dependsOn": []
28248
+ }
28249
+ },
28250
+ "live": "the stand-in served {target}/doc?n={tag}",
28251
+ "liveCheck": {
28252
+ "loaded": "{target}/doc?n={tag}",
28253
+ "observer": "fixture"
28254
+ },
28255
+ "control": {
28256
+ "origin": "ordinary",
28257
+ "via": "unguarded",
28258
+ "expected": {
28259
+ "refused": false,
28260
+ "mainHidden": false
28261
+ }
28262
+ },
28263
+ "expected": {
28264
+ "refused": true,
28265
+ "mainHidden": true
28266
+ }
28267
+ },
28268
+ {
28269
+ "id": "E7.binding-main-ctx",
28270
+ "family": "E",
28271
+ "kind": "cdp",
28272
+ "scope": "any",
28273
+ "setup": [
28274
+ {
28275
+ "page": "tab",
28276
+ "url": "{ordinary}/doc?n=start-{tag}"
28277
+ },
28278
+ {
28279
+ "cdp": "Page.enable",
28280
+ "requires": ["stockSetup"]
28281
+ },
28282
+ {
28283
+ "cdp": "Runtime.enable"
28284
+ },
28285
+ {
28286
+ "page": "navigate",
28287
+ "url": "{ordinary}/doc?n=mid-{tag}"
28288
+ },
28289
+ {
28290
+ "settle": {
28291
+ "title": "doc",
28292
+ "ms": 5000,
28293
+ "required": true
28294
+ }
28295
+ }
28296
+ ],
28297
+ "trigger": [
28298
+ {
28299
+ "cdp": "Runtime.addBinding",
28300
+ "params": {
28301
+ "name": "sliccMainCtx",
28302
+ "executionContextId": {
28303
+ "$event": "Runtime.executionContextCreated",
28304
+ "where": {
28305
+ "params": {
28306
+ "context": {
28307
+ "auxData": {
28308
+ "isDefault": true
28309
+ }
28310
+ }
28311
+ }
28312
+ },
28313
+ "path": "params.context.id"
28314
+ }
28315
+ },
28316
+ "as": "mainCtx",
28317
+ "refusable": true,
28318
+ "refusal": {
28319
+ "match": "refused"
28320
+ }
28321
+ }
28322
+ ],
28323
+ "targets": ["ordinary"],
28324
+ "requires": ["stockSetup"],
28325
+ "observe": {
28326
+ "mainRefused": {
28327
+ "means": "addBinding for a main-world executionContextId was refused",
28328
+ "check": {
28329
+ "refused": ["mainCtx"],
28330
+ "observer": "client"
28331
+ },
28332
+ "dependsOn": ["mainCtx"]
28333
+ },
28334
+ "mainExposed": {
28335
+ "means": "the unguarded observer finds the main-world binding",
28336
+ "dependsOn": [],
28337
+ "check": {
28338
+ "expression": "typeof sliccMainCtx",
28339
+ "equals": "function",
28340
+ "via": "unguarded",
28341
+ "observer": "unguarded"
28342
+ }
28343
+ }
28344
+ },
28345
+ "live": "the stand-in served the mid document",
28346
+ "liveCheck": {
28347
+ "loaded": "{ordinary}/doc?n=mid-{tag}",
28348
+ "observer": "fixture"
28349
+ },
28350
+ "control": {
28351
+ "origin": "ordinary",
28352
+ "via": "unguarded",
28353
+ "expected": {
28354
+ "mainRefused": false,
28355
+ "mainExposed": true
28356
+ }
28357
+ },
28358
+ "expected": {
28359
+ "mainRefused": true,
28360
+ "mainExposed": false
28361
+ }
28362
+ },
28363
+ {
28364
+ "id": "C3.tab-protected",
28365
+ "family": "C",
28366
+ "kind": "cdp",
28367
+ "scope": "any",
28368
+ "setup": [
28369
+ {
28370
+ "page": "tab",
28371
+ "url": "{ordinary}/doc?n=opener-{tag}"
28372
+ },
28373
+ {
28374
+ "cdp": "Target.setAutoAttach",
28375
+ "params": {
28376
+ "autoAttach": true,
28377
+ "waitForDebuggerOnStart": true,
28378
+ "flatten": true,
28379
+ "filter": [
28380
+ {
28381
+ "type": "page",
28382
+ "exclude": true
28383
+ },
28384
+ {}
28385
+ ]
28386
+ },
28387
+ "session": "browser",
28388
+ "as": "tabs",
28389
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
28390
+ },
28391
+ {
28392
+ "children": [
28393
+ {
28394
+ "cdp": "Target.setAutoAttach",
28395
+ "params": {
28396
+ "autoAttach": true,
28397
+ "waitForDebuggerOnStart": true,
28398
+ "flatten": true,
28399
+ "filter": [{}]
28400
+ }
28401
+ }
28402
+ ],
28403
+ "requires": ["autoAttach"],
28404
+ "where": {
28405
+ "type": "page"
28406
+ }
28407
+ }
28408
+ ],
28409
+ "trigger": [
28410
+ {
28411
+ "cdp": "Target.createTarget",
28412
+ "params": {
28413
+ "url": "{target}/doc?n={tag}",
28414
+ "browserContextId": "{context}"
28415
+ },
28416
+ "session": "browser",
28417
+ "as": "created",
28418
+ "requires": ["browserSession"],
28419
+ "refusable": true,
28420
+ "refusal": {
28421
+ "match": "refused"
28422
+ }
28423
+ },
28424
+ {
28425
+ "wait": 2000
28426
+ }
28427
+ ],
28428
+ "targets": ["seven", "vault"],
28429
+ "requires": ["autoAttach", "browserSession", "stockSetup"],
28430
+ "observe": {
28431
+ "tab": {
28432
+ "means": "the client got Target.attachedToTarget for a tab target",
28433
+ "check": {
28434
+ "event": "Target.attachedToTarget",
28435
+ "where": {
28436
+ "params": {
28437
+ "targetInfo": {
28438
+ "type": "tab"
28439
+ }
28440
+ }
28441
+ },
28442
+ "observer": "client"
28443
+ },
28444
+ "dependsOn": ["created"]
28445
+ },
28446
+ "pageAttached": {
28447
+ "means": "the client kept a page session for the protected tab child",
28448
+ "check": {
28449
+ "event": "Target.attachedToTarget",
28450
+ "where": {
28451
+ "params": {
28452
+ "targetInfo": {
28453
+ "type": "page",
28454
+ "url": {
28455
+ "$contains": "{target}/doc"
28456
+ }
28457
+ }
28458
+ }
28459
+ },
28460
+ "observer": "client"
28461
+ }
28462
+ },
28463
+ "driven": {
28464
+ "means": "the unguarded observer finds the created page on {target}",
28465
+ "check": {
28466
+ "expression": "location.href",
28467
+ "equals": {
28468
+ "$contains": "{target}/doc"
28469
+ },
28470
+ "via": "unguarded",
28471
+ "session": "child",
28472
+ "observer": "unguarded"
28473
+ },
28474
+ "dependsOn": ["created"]
28475
+ },
28476
+ "beacon": {
28477
+ "means": "a beacon from {target}",
28478
+ "check": {
28479
+ "beacon": "{target}",
28480
+ "observer": "fixture"
28481
+ }
28482
+ }
28483
+ },
28484
+ "live": "the stand-in served {target}/doc?n={tag}, or the tab was held without a client page session, or the guard refused creating the protected target",
28485
+ "liveCheck": {
28486
+ "any": [
28487
+ {
28488
+ "refused": ["created"],
28489
+ "observer": "client"
28490
+ },
28491
+ {
28492
+ "loaded": "{target}/doc?n={tag}",
28493
+ "observer": "fixture"
28494
+ },
28495
+ {
28496
+ "pre": "{target}/doc?n={tag}",
28497
+ "observer": "fixture"
28498
+ }
28499
+ ],
28500
+ "observer": "client"
28501
+ },
28502
+ "control": {
28503
+ "origin": "ordinary",
28504
+ "via": "unguarded",
28505
+ "expected": {
28506
+ "tab": true,
28507
+ "pageAttached": true,
28508
+ "driven": true,
28509
+ "beacon": false
28510
+ }
28511
+ },
28512
+ "expected": {
28513
+ "tab": true,
28514
+ "pageAttached": false,
28515
+ "driven": false,
28516
+ "beacon": false
28517
+ }
28518
+ },
28519
+ {
28520
+ "id": "C3.tab-blank",
28521
+ "family": "C",
28522
+ "kind": "cdp",
28523
+ "scope": "any",
28524
+ "setup": [
28525
+ {
28526
+ "page": "tab",
28527
+ "url": "{ordinary}/doc?n=opener-{tag}"
28528
+ },
28529
+ {
28530
+ "cdp": "Target.setAutoAttach",
28531
+ "params": {
28532
+ "autoAttach": true,
28533
+ "waitForDebuggerOnStart": true,
28534
+ "flatten": true,
28535
+ "filter": [
28536
+ {
28537
+ "type": "page",
28538
+ "exclude": true
28539
+ },
28540
+ {}
28541
+ ]
28542
+ },
28543
+ "session": "browser",
28544
+ "as": "tabs",
28545
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
28546
+ },
28547
+ {
28548
+ "children": [
28549
+ {
28550
+ "cdp": "Target.setAutoAttach",
28551
+ "params": {
28552
+ "autoAttach": true,
28553
+ "waitForDebuggerOnStart": true,
28554
+ "flatten": true,
28555
+ "filter": [{}]
28556
+ }
28557
+ }
28558
+ ],
28559
+ "requires": ["autoAttach"],
28560
+ "where": {
28561
+ "type": "page"
28562
+ }
28563
+ }
28564
+ ],
28565
+ "trigger": [
28566
+ {
28567
+ "cdp": "Target.createTarget",
28568
+ "params": {
28569
+ "url": "about:blank",
28570
+ "browserContextId": "{context}"
28571
+ },
28572
+ "session": "browser",
28573
+ "as": "created",
28574
+ "requires": ["browserSession"]
28575
+ },
28576
+ {
28577
+ "wait": 1500
28578
+ },
28579
+ {
28580
+ "cdp": "Page.navigate",
28581
+ "params": {
28582
+ "url": "{ordinary}/doc?n=blank-{tag}"
28583
+ },
28584
+ "session": "child",
28585
+ "as": "childNavigate",
28586
+ "requires": ["autoAttach"]
28587
+ },
28588
+ {
28589
+ "settle": {
28590
+ "served": "{ordinary}/doc?n=blank-{tag}",
28591
+ "ms": 5000,
28592
+ "required": true
28593
+ }
28594
+ }
28595
+ ],
28596
+ "targets": ["ordinary"],
28597
+ "requires": ["autoAttach", "browserSession", "stockSetup"],
28598
+ "observe": {
28599
+ "tab": {
28600
+ "means": "the client got Target.attachedToTarget for a tab target",
28601
+ "check": {
28602
+ "event": "Target.attachedToTarget",
28603
+ "where": {
28604
+ "params": {
28605
+ "targetInfo": {
28606
+ "type": "tab"
28607
+ }
28608
+ }
28609
+ },
28610
+ "observer": "client"
28611
+ }
28612
+ },
28613
+ "pageAttached": {
28614
+ "means": "the client got Target.attachedToTarget for a page under the tab",
28615
+ "check": {
28616
+ "event": "Target.attachedToTarget",
28617
+ "where": {
28618
+ "params": {
28619
+ "targetInfo": {
28620
+ "type": "page"
28621
+ }
28622
+ }
28623
+ },
28624
+ "observer": "client"
28625
+ }
28626
+ },
28627
+ "driven": {
28628
+ "means": "the unguarded observer finds the blank tab child at the URL the client navigated through its auto-attached page session",
28629
+ "check": {
28630
+ "expression": "location.href",
28631
+ "equals": "{ordinary}/doc?n=blank-{tag}",
28632
+ "via": "unguarded",
28633
+ "session": "child",
28634
+ "observer": "unguarded"
28635
+ }
28636
+ }
28637
+ },
28638
+ "live": "the stand-in served the document the client navigated the blank page to",
28639
+ "liveCheck": {
28640
+ "loaded": "{ordinary}/doc?n=blank-{tag}",
28641
+ "observer": "fixture"
28642
+ },
28643
+ "control": {
28644
+ "origin": "ordinary",
28645
+ "via": "unguarded",
28646
+ "expected": {
28647
+ "tab": true,
28648
+ "pageAttached": true,
28649
+ "driven": true
28650
+ }
28651
+ },
28652
+ "expected": {
28653
+ "tab": true,
28654
+ "pageAttached": true,
28655
+ "driven": true
28656
+ }
28657
+ },
28658
+ {
28659
+ "id": "C3.tab-protected.synthetic",
28660
+ "family": "C",
28661
+ "kind": "cdp",
28662
+ "scope": "any",
28663
+ "setup": [
28664
+ {
28665
+ "page": "tab",
28666
+ "url": "{ordinary}/doc?n=opener-{tag}"
28667
+ },
28668
+ {
28669
+ "cdp": "Target.setAutoAttach",
28670
+ "params": {
28671
+ "autoAttach": true,
28672
+ "waitForDebuggerOnStart": true,
28673
+ "flatten": true,
28674
+ "filter": [
28675
+ {
28676
+ "type": "page",
28677
+ "exclude": true
28678
+ },
28679
+ {}
28680
+ ]
28681
+ },
28682
+ "session": "browser",
28683
+ "as": "tabs",
28684
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"]
28685
+ },
28686
+ {
28687
+ "children": [
28688
+ {
28689
+ "cdp": "Target.setAutoAttach",
28690
+ "params": {
28691
+ "autoAttach": true,
28692
+ "waitForDebuggerOnStart": true,
28693
+ "flatten": true,
28694
+ "filter": [{}]
28695
+ }
28696
+ }
28697
+ ],
28698
+ "requires": ["syntheticAutoAttach"],
28699
+ "where": {
28700
+ "type": "page"
28701
+ }
28702
+ }
28703
+ ],
28704
+ "trigger": [
28705
+ {
28706
+ "cdp": "Target.createTarget",
28707
+ "params": {
28708
+ "url": "{target}/doc?n={tag}",
28709
+ "browserContextId": "{context}"
28710
+ },
28711
+ "session": "browser",
28712
+ "as": "created",
28713
+ "requires": ["browserSession"],
28714
+ "refusable": true,
28715
+ "refusal": {
28716
+ "match": "refused"
28717
+ }
28718
+ },
28719
+ {
28720
+ "wait": 2000
28721
+ }
28722
+ ],
28723
+ "targets": ["seven", "vault"],
28724
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"],
28725
+ "observe": {
28726
+ "tab": {
28727
+ "means": "the client got Target.attachedToTarget for a tab target",
28728
+ "check": {
28729
+ "event": "Target.attachedToTarget",
28730
+ "where": {
28731
+ "params": {
28732
+ "targetInfo": {
28733
+ "type": "tab"
28734
+ }
28735
+ }
28736
+ },
28737
+ "observer": "client"
28738
+ },
28739
+ "dependsOn": ["created"]
28740
+ },
28741
+ "pageAttached": {
28742
+ "means": "the client kept a page session for the protected tab child",
28743
+ "check": {
28744
+ "event": "Target.attachedToTarget",
28745
+ "where": {
28746
+ "params": {
28747
+ "targetInfo": {
28748
+ "type": "page",
28749
+ "url": {
28750
+ "$contains": "{target}/doc"
28751
+ }
28752
+ }
28753
+ }
28754
+ },
28755
+ "observer": "client"
28756
+ }
28757
+ },
28758
+ "driven": {
28759
+ "means": "the unguarded observer finds the created page on {target}",
28760
+ "check": {
28761
+ "expression": "location.href",
28762
+ "equals": {
28763
+ "$contains": "{target}/doc"
28764
+ },
28765
+ "via": "unguarded",
28766
+ "session": "child",
28767
+ "observer": "unguarded"
28768
+ },
28769
+ "dependsOn": ["created"]
28770
+ },
28771
+ "beacon": {
28772
+ "means": "a beacon from {target}",
28773
+ "check": {
28774
+ "beacon": "{target}",
28775
+ "observer": "fixture"
28776
+ }
28777
+ }
28778
+ },
28779
+ "live": "the stand-in served {target}/doc?n={tag}, or the tab was held without a client page session, or the guard refused creating the protected target",
28780
+ "liveCheck": {
28781
+ "any": [
28782
+ {
28783
+ "refused": ["created"],
28784
+ "observer": "client"
28785
+ },
28786
+ {
28787
+ "loaded": "{target}/doc?n={tag}",
28788
+ "observer": "fixture"
28789
+ },
28790
+ {
28791
+ "pre": "{target}/doc?n={tag}",
28792
+ "observer": "fixture"
28793
+ }
28794
+ ],
28795
+ "observer": "client"
28796
+ },
28797
+ "control": {
28798
+ "origin": "ordinary",
28799
+ "via": "unguarded",
28800
+ "expected": {
28801
+ "tab": true,
28802
+ "pageAttached": true,
28803
+ "driven": true,
28804
+ "beacon": false
28805
+ }
28806
+ },
28807
+ "expected": {
28808
+ "tab": true,
28809
+ "pageAttached": false,
28810
+ "driven": false,
28811
+ "beacon": false
28812
+ }
28813
+ },
28814
+ {
28815
+ "id": "C3.tab-blank.synthetic",
28816
+ "family": "C",
28817
+ "kind": "cdp",
28818
+ "scope": "any",
28819
+ "setup": [
28820
+ {
28821
+ "page": "tab",
28822
+ "url": "{ordinary}/doc?n=opener-{tag}"
28823
+ },
28824
+ {
28825
+ "cdp": "Target.setAutoAttach",
28826
+ "params": {
28827
+ "autoAttach": true,
28828
+ "waitForDebuggerOnStart": true,
28829
+ "flatten": true,
28830
+ "filter": [
28831
+ {
28832
+ "type": "page",
28833
+ "exclude": true
28834
+ },
28835
+ {}
28836
+ ]
28837
+ },
28838
+ "session": "browser",
28839
+ "as": "tabs",
28840
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"]
28841
+ },
28842
+ {
28843
+ "children": [
28844
+ {
28845
+ "cdp": "Target.setAutoAttach",
28846
+ "params": {
28847
+ "autoAttach": true,
28848
+ "waitForDebuggerOnStart": true,
28849
+ "flatten": true,
28850
+ "filter": [{}]
28851
+ }
28852
+ }
28853
+ ],
28854
+ "requires": ["syntheticAutoAttach"],
28855
+ "where": {
28856
+ "type": "page"
28857
+ }
28858
+ }
28859
+ ],
28860
+ "trigger": [
28861
+ {
28862
+ "cdp": "Target.createTarget",
28863
+ "params": {
28864
+ "url": "about:blank",
28865
+ "browserContextId": "{context}"
28866
+ },
28867
+ "session": "browser",
28868
+ "as": "created",
28869
+ "requires": ["browserSession"]
28870
+ },
28871
+ {
28872
+ "wait": 1500
28873
+ },
28874
+ {
28875
+ "cdp": "Page.navigate",
28876
+ "params": {
28877
+ "url": "{ordinary}/doc?n=blank-{tag}"
28878
+ },
28879
+ "session": "child",
28880
+ "as": "childNavigate",
28881
+ "requires": ["syntheticAutoAttach"]
28882
+ },
28883
+ {
28884
+ "settle": {
28885
+ "served": "{ordinary}/doc?n=blank-{tag}",
28886
+ "ms": 5000,
28887
+ "required": true
28888
+ }
28889
+ }
28890
+ ],
28891
+ "targets": ["ordinary"],
28892
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"],
28893
+ "observe": {
28894
+ "tab": {
28895
+ "means": "the client got Target.attachedToTarget for a tab target",
28896
+ "check": {
28897
+ "event": "Target.attachedToTarget",
28898
+ "where": {
28899
+ "params": {
28900
+ "targetInfo": {
28901
+ "type": "tab"
28902
+ }
28903
+ }
28904
+ },
28905
+ "observer": "client"
28906
+ }
28907
+ },
28908
+ "pageAttached": {
28909
+ "means": "the client got Target.attachedToTarget for a page under the tab",
28910
+ "check": {
28911
+ "event": "Target.attachedToTarget",
28912
+ "where": {
28913
+ "params": {
28914
+ "targetInfo": {
28915
+ "type": "page"
28916
+ }
28917
+ }
28918
+ },
28919
+ "observer": "client"
28920
+ }
28921
+ },
28922
+ "driven": {
28923
+ "means": "the unguarded observer finds the blank tab child at the URL the client navigated through its auto-attached page session",
28924
+ "check": {
28925
+ "expression": "location.href",
28926
+ "equals": "{ordinary}/doc?n=blank-{tag}",
28927
+ "via": "unguarded",
28928
+ "session": "child",
28929
+ "observer": "unguarded"
28930
+ }
28931
+ }
28932
+ },
28933
+ "live": "the stand-in served the document the client navigated the blank page to",
28934
+ "liveCheck": {
28935
+ "loaded": "{ordinary}/doc?n=blank-{tag}",
28936
+ "observer": "fixture"
28937
+ },
28938
+ "control": {
28939
+ "origin": "ordinary",
28940
+ "via": "unguarded",
28941
+ "expected": {
28942
+ "tab": true,
28943
+ "pageAttached": true,
28944
+ "driven": true
28945
+ }
28946
+ },
28947
+ "expected": {
28948
+ "tab": true,
28949
+ "pageAttached": true,
28950
+ "driven": true
28951
+ }
28952
+ },
28953
+ {
28954
+ "id": "C3.tab-worker-leak",
28955
+ "family": "C",
28956
+ "kind": "cdp",
28957
+ "scope": "any",
28958
+ "setup": [
28959
+ {
28960
+ "page": "tab",
28961
+ "url": "{ordinary}/doc?n=opener-{tag}"
28962
+ },
28963
+ {
28964
+ "cdp": "Target.setAutoAttach",
28965
+ "params": {
28966
+ "autoAttach": true,
28967
+ "waitForDebuggerOnStart": true,
28968
+ "flatten": true,
28969
+ "filter": [
28970
+ {
28971
+ "type": "page",
28972
+ "exclude": true
28973
+ },
28974
+ {}
28975
+ ]
28976
+ },
28977
+ "session": "browser",
28978
+ "as": "tabs",
28979
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
28980
+ },
28981
+ {
28982
+ "children": [
28983
+ {
28984
+ "cdp": "Target.setAutoAttach",
28985
+ "params": {
28986
+ "autoAttach": true,
28987
+ "waitForDebuggerOnStart": true,
28988
+ "flatten": true,
28989
+ "filter": [{}]
28990
+ }
28991
+ }
28992
+ ],
28993
+ "requires": ["autoAttach"],
28994
+ "where": {
28995
+ "type": "page"
28996
+ }
28997
+ }
28998
+ ],
28999
+ "trigger": [
29000
+ {
29001
+ "cdp": "Target.createTarget",
29002
+ "params": {
29003
+ "url": "{ordinary}/doc?n=host-{tag}",
29004
+ "browserContextId": "{context}"
29005
+ },
29006
+ "session": "browser",
29007
+ "as": "created",
29008
+ "requires": ["browserSession"]
29009
+ },
29010
+ {
29011
+ "wait": 1500
29012
+ },
29013
+ {
29014
+ "cdp": "Runtime.evaluate",
29015
+ "params": {
29016
+ "expression": "(() => { const src = 'onmessage=e=>postMessage(e.data);'; const u = URL.createObjectURL(new Blob([src], {type: 'text/javascript'})); window.__sliccW = new Worker(u); return 'spawned'; })()",
29017
+ "awaitPromise": true,
29018
+ "returnByValue": true
29019
+ },
29020
+ "session": "child",
29021
+ "as": "spawned",
29022
+ "requires": ["autoAttach"]
29023
+ },
29024
+ {
29025
+ "wait": 1500
29026
+ }
29027
+ ],
29028
+ "targets": ["seven", "vault"],
29029
+ "requires": ["autoAttach", "browserSession", "stockSetup"],
29030
+ "observe": {
29031
+ "admitted": {
29032
+ "means": "the guard answered tabs, created and spawned without an error",
29033
+ "check": {
29034
+ "all": [
29035
+ {
29036
+ "result": "tabs",
29037
+ "path": "ok",
29038
+ "equals": true,
29039
+ "observer": "client"
29040
+ },
29041
+ {
29042
+ "result": "created",
29043
+ "path": "ok",
29044
+ "equals": true,
29045
+ "observer": "client"
29046
+ },
29047
+ {
29048
+ "result": "spawned",
29049
+ "path": "ok",
29050
+ "equals": true,
29051
+ "observer": "client"
29052
+ }
29053
+ ],
29054
+ "observer": "client"
29055
+ }
29056
+ },
29057
+ "workerAttached": {
29058
+ "means": "the client got Target.attachedToTarget for a worker through the broad filter",
29059
+ "check": {
29060
+ "event": "Target.attachedToTarget",
29061
+ "where": {
29062
+ "params": {
29063
+ "targetInfo": {
29064
+ "type": "worker"
29065
+ }
29066
+ }
29067
+ },
29068
+ "observer": "client"
29069
+ }
29070
+ },
29071
+ "workerExists": {
29072
+ "means": "the unguarded observer finds the page still holds the spawned Worker",
29073
+ "check": {
29074
+ "expression": "typeof window.__sliccW",
29075
+ "equals": "object",
29076
+ "via": "unguarded",
29077
+ "session": "child",
29078
+ "observer": "unguarded"
29079
+ }
29080
+ }
29081
+ },
29082
+ "live": "the stand-in served the host document under the tab",
29083
+ "liveCheck": {
29084
+ "loaded": "{ordinary}/doc?n=host-{tag}",
29085
+ "observer": "fixture"
29086
+ },
29087
+ "control": {
29088
+ "origin": "ordinary",
29089
+ "via": "unguarded",
29090
+ "expected": {
29091
+ "admitted": true,
29092
+ "workerAttached": true,
29093
+ "workerExists": true
29094
+ }
29095
+ },
29096
+ "expected": {
29097
+ "admitted": true,
29098
+ "workerAttached": false,
29099
+ "workerExists": true
29100
+ }
29101
+ },
29102
+ {
29103
+ "id": "C3.tab-iframe-leak",
29104
+ "family": "C",
29105
+ "kind": "cdp",
29106
+ "scope": "any",
29107
+ "setup": [
29108
+ {
29109
+ "page": "tab",
29110
+ "url": "{ordinary}/doc?n=opener-{tag}"
29111
+ },
29112
+ {
29113
+ "cdp": "Target.setAutoAttach",
29114
+ "params": {
29115
+ "autoAttach": true,
29116
+ "waitForDebuggerOnStart": true,
29117
+ "flatten": true,
29118
+ "filter": [
29119
+ {
29120
+ "type": "page",
29121
+ "exclude": true
29122
+ },
29123
+ {}
29124
+ ]
29125
+ },
29126
+ "session": "browser",
29127
+ "as": "tabs",
29128
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
29129
+ },
29130
+ {
29131
+ "children": [
29132
+ {
29133
+ "cdp": "Target.setAutoAttach",
29134
+ "params": {
29135
+ "autoAttach": true,
29136
+ "waitForDebuggerOnStart": true,
29137
+ "flatten": true,
29138
+ "filter": [{}]
29139
+ }
29140
+ }
29141
+ ],
29142
+ "requires": ["autoAttach"],
29143
+ "where": {
29144
+ "type": "page"
29145
+ }
29146
+ }
29147
+ ],
29148
+ "trigger": [
29149
+ {
29150
+ "cdp": "Target.createTarget",
29151
+ "params": {
29152
+ "url": "{ordinary}/doc?n=host-{tag}",
29153
+ "browserContextId": "{context}"
29154
+ },
29155
+ "session": "browser",
29156
+ "as": "created",
29157
+ "requires": ["browserSession"]
29158
+ },
29159
+ {
29160
+ "wait": 1500
29161
+ },
29162
+ {
29163
+ "cdp": "Runtime.evaluate",
29164
+ "params": {
29165
+ "expression": "(() => { const f = document.createElement('iframe'); f.src = '{seven}/doc?n=frame-{tag}'; document.body.appendChild(f); return 'framed'; })()",
29166
+ "returnByValue": true
29167
+ },
29168
+ "session": "child",
29169
+ "as": "framed",
29170
+ "requires": ["autoAttach"]
29171
+ },
29172
+ {
29173
+ "wait": 2000
29174
+ }
29175
+ ],
29176
+ "targets": ["seven", "vault"],
29177
+ "requires": ["autoAttach", "browserSession", "stockSetup"],
29178
+ "observe": {
29179
+ "admitted": {
29180
+ "means": "the guard answered tabs, created and framed without an error",
29181
+ "check": {
29182
+ "all": [
29183
+ {
29184
+ "result": "tabs",
29185
+ "path": "ok",
29186
+ "equals": true,
29187
+ "observer": "client"
29188
+ },
29189
+ {
29190
+ "result": "created",
29191
+ "path": "ok",
29192
+ "equals": true,
29193
+ "observer": "client"
29194
+ },
29195
+ {
29196
+ "result": "framed",
29197
+ "path": "ok",
29198
+ "equals": true,
29199
+ "observer": "client"
29200
+ }
29201
+ ],
29202
+ "observer": "client"
29203
+ }
29204
+ },
29205
+ "iframeExists": {
29206
+ "means": "the unguarded observer finds the iframe element in the host document",
29207
+ "check": {
29208
+ "expression": "!!document.querySelector('iframe[src*=\"frame-{tag}\"]')",
29209
+ "equals": true,
29210
+ "via": "unguarded",
29211
+ "session": "child",
29212
+ "observer": "unguarded"
29213
+ }
29214
+ },
29215
+ "iframeAttached": {
29216
+ "means": "the client got Target.attachedToTarget for an iframe through the broad filter",
29217
+ "check": {
29218
+ "event": "Target.attachedToTarget",
29219
+ "where": {
29220
+ "params": {
29221
+ "targetInfo": {
29222
+ "type": "iframe"
29223
+ }
29224
+ }
29225
+ },
29226
+ "observer": "client"
29227
+ }
29228
+ }
29229
+ },
29230
+ "live": "the stand-in served the host document under the tab",
29231
+ "liveCheck": {
29232
+ "loaded": "{ordinary}/doc?n=host-{tag}",
29233
+ "observer": "fixture"
29234
+ },
29235
+ "control": {
29236
+ "origin": "ordinary",
29237
+ "via": "unguarded",
29238
+ "expected": {
29239
+ "admitted": true,
29240
+ "iframeExists": true,
29241
+ "iframeAttached": true
29242
+ }
29243
+ },
29244
+ "expected": {
29245
+ "admitted": true,
29246
+ "iframeExists": true,
29247
+ "iframeAttached": false
29248
+ }
29249
+ },
29250
+ {
29251
+ "id": "C3.tab-service-worker-leak",
29252
+ "family": "C",
29253
+ "kind": "cdp",
29254
+ "scope": "any",
29255
+ "setup": [
29256
+ {
29257
+ "page": "tab",
29258
+ "url": "{ordinary}/doc?n=opener-{tag}"
29259
+ },
29260
+ {
29261
+ "cdp": "Target.setAutoAttach",
29262
+ "params": {
29263
+ "autoAttach": true,
29264
+ "waitForDebuggerOnStart": true,
29265
+ "flatten": true,
29266
+ "filter": [
29267
+ {
29268
+ "type": "page",
29269
+ "exclude": true
29270
+ },
29271
+ {}
29272
+ ]
29273
+ },
29274
+ "session": "browser",
29275
+ "as": "tabs",
29276
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
29277
+ },
29278
+ {
29279
+ "children": [
29280
+ {
29281
+ "cdp": "Target.setAutoAttach",
29282
+ "params": {
29283
+ "autoAttach": true,
29284
+ "waitForDebuggerOnStart": true,
29285
+ "flatten": true,
29286
+ "filter": [{}]
29287
+ }
29288
+ }
29289
+ ],
29290
+ "requires": ["autoAttach"],
29291
+ "where": {
29292
+ "type": "page"
29293
+ }
29294
+ }
29295
+ ],
29296
+ "trigger": [
29297
+ {
29298
+ "cdp": "Target.createTarget",
29299
+ "params": {
29300
+ "url": "{ordinary}/doc?n=host-{tag}",
29301
+ "browserContextId": "{context}"
29302
+ },
29303
+ "session": "browser",
29304
+ "as": "created",
29305
+ "requires": ["browserSession"]
29306
+ },
29307
+ {
29308
+ "wait": 1500
29309
+ },
29310
+ {
29311
+ "cdp": "Runtime.evaluate",
29312
+ "params": {
29313
+ "expression": "(async()=>{ try { await navigator.serviceWorker.register('/sw.js?n={tag}',{scope:'/'}); return 'registered'; } catch(e){ return 'err:'+e.message; } })()",
29314
+ "awaitPromise": true,
29315
+ "returnByValue": true
29316
+ },
29317
+ "session": "child",
29318
+ "as": "registered",
29319
+ "requires": ["autoAttach", "secureOrigin"]
29320
+ },
29321
+ {
29322
+ "wait": 2500
29323
+ }
29324
+ ],
29325
+ "targets": ["seven", "vault"],
29326
+ "requires": ["autoAttach", "browserSession", "stockSetup", "secureOrigin"],
29327
+ "observe": {
29328
+ "admitted": {
29329
+ "means": "the guard answered tabs, created and registered without an error",
29330
+ "check": {
29331
+ "all": [
29332
+ {
29333
+ "result": "tabs",
29334
+ "path": "ok",
29335
+ "equals": true,
29336
+ "observer": "client"
29337
+ },
29338
+ {
29339
+ "result": "created",
29340
+ "path": "ok",
29341
+ "equals": true,
29342
+ "observer": "client"
29343
+ },
29344
+ {
29345
+ "result": "registered",
29346
+ "path": "result.result.value",
29347
+ "equals": "registered",
29348
+ "observer": "client"
29349
+ }
29350
+ ],
29351
+ "observer": "client"
29352
+ }
29353
+ },
29354
+ "workerExists": {
29355
+ "means": "the unguarded observer finds a service worker registration for the host",
29356
+ "check": {
29357
+ "expression": "(async()=>{ try { const r=await navigator.serviceWorker.getRegistration(); return !!(r&&String(r.scope||'').length); } catch { return false; } })()",
29358
+ "equals": true,
29359
+ "via": "unguarded",
29360
+ "session": "child",
29361
+ "observer": "unguarded"
29362
+ }
29363
+ },
29364
+ "workerAttached": {
29365
+ "means": "the client got Target.attachedToTarget for a service_worker through the broad filter",
29366
+ "check": {
29367
+ "event": "Target.attachedToTarget",
29368
+ "where": {
29369
+ "params": {
29370
+ "targetInfo": {
29371
+ "type": "service_worker",
29372
+ "url": {
29373
+ "$contains": "/sw.js"
29374
+ }
29375
+ }
29376
+ }
29377
+ },
29378
+ "observer": "client"
29379
+ }
29380
+ }
29381
+ },
29382
+ "live": "the stand-in served the host document under the tab",
29383
+ "liveCheck": {
29384
+ "loaded": "{ordinary}/doc?n=host-{tag}",
29385
+ "observer": "fixture"
29386
+ },
29387
+ "control": {
29388
+ "origin": "ordinary",
29389
+ "via": "unguarded",
29390
+ "expected": {
29391
+ "admitted": true,
29392
+ "workerExists": true,
29393
+ "workerAttached": true
29394
+ }
29395
+ },
29396
+ "expected": {
29397
+ "admitted": true,
29398
+ "workerExists": true,
29399
+ "workerAttached": false
29400
+ }
24738
29401
  }
24739
29402
  ]
24740
29403
  }