@ai-ecoverse/slicc-browsers 1.20.2 → 1.21.0
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.
- package/README.md +20 -16
- package/extension-frame.mjs +69 -21
- package/fixture-server.mjs +2 -0
- package/guard-runner.mjs +292 -52
- package/guard-vectors.json +3784 -2
- package/package.json +3 -3
- package/schema/guard-vectors.schema.json +249 -28
package/guard-vectors.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"setVersion": "1.
|
|
3
|
+
"setVersion": "1.21.0",
|
|
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
|
|
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,3785 @@
|
|
|
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
fetch(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
fetch(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": "fetch(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
|
+
},
|
|
26533
|
+
{
|
|
26534
|
+
"settle": {
|
|
26535
|
+
"title": "doc",
|
|
26536
|
+
"ms": 5000,
|
|
26537
|
+
"or": {
|
|
26538
|
+
"served": "{target}/doc?n={tag}",
|
|
26539
|
+
"observer": "fixture"
|
|
26540
|
+
}
|
|
26541
|
+
}
|
|
26542
|
+
},
|
|
26543
|
+
{
|
|
26544
|
+
"settle": {
|
|
26545
|
+
"ms": 500
|
|
26546
|
+
}
|
|
26547
|
+
}
|
|
26548
|
+
],
|
|
26549
|
+
"targets": ["seven", "vault"],
|
|
26550
|
+
"requires": ["stockSetup"],
|
|
26551
|
+
"observe": {
|
|
26552
|
+
"worldOnProtected": {
|
|
26553
|
+
"means": "the unguarded observer saw the named world created on {target}",
|
|
26554
|
+
"check": {
|
|
26555
|
+
"world": "slicc-carry-{tag}",
|
|
26556
|
+
"origin": "{target}",
|
|
26557
|
+
"observer": "unguarded"
|
|
26558
|
+
}
|
|
26559
|
+
},
|
|
26560
|
+
"loaded": {
|
|
26561
|
+
"means": "the stand-in served {target}/doc?n={tag}",
|
|
26562
|
+
"dependsOn": [],
|
|
26563
|
+
"check": {
|
|
26564
|
+
"served": "{target}/doc?n={tag}",
|
|
26565
|
+
"observer": "fixture"
|
|
26566
|
+
}
|
|
26567
|
+
}
|
|
26568
|
+
},
|
|
26569
|
+
"live": "the stand-in served {target}/doc?n={tag}, or the guard refused the protected navigation (pre + blocked), or refused a refusable setup step",
|
|
26570
|
+
"liveCheck": {
|
|
26571
|
+
"any": [
|
|
26572
|
+
{
|
|
26573
|
+
"loaded": "{target}/doc?n={tag}",
|
|
26574
|
+
"observer": "fixture"
|
|
26575
|
+
},
|
|
26576
|
+
{
|
|
26577
|
+
"all": [
|
|
26578
|
+
{
|
|
26579
|
+
"pre": "{target}/doc?n={tag}",
|
|
26580
|
+
"observer": "fixture"
|
|
26581
|
+
},
|
|
26582
|
+
{
|
|
26583
|
+
"any": [
|
|
26584
|
+
{
|
|
26585
|
+
"blocked": {
|
|
26586
|
+
"url": "{target}/doc?n={tag}",
|
|
26587
|
+
"session": "page",
|
|
26588
|
+
"frame": false
|
|
26589
|
+
},
|
|
26590
|
+
"observer": "client"
|
|
26591
|
+
},
|
|
26592
|
+
{
|
|
26593
|
+
"blocked": {
|
|
26594
|
+
"url": "{target}/doc?n={tag}",
|
|
26595
|
+
"session": "page",
|
|
26596
|
+
"frame": false
|
|
26597
|
+
},
|
|
26598
|
+
"observer": "unguarded"
|
|
26599
|
+
},
|
|
26600
|
+
{
|
|
26601
|
+
"history": {
|
|
26602
|
+
"url": "{target}/doc?n={tag}",
|
|
26603
|
+
"session": "page"
|
|
26604
|
+
},
|
|
26605
|
+
"observer": "unguarded"
|
|
26606
|
+
}
|
|
26607
|
+
],
|
|
26608
|
+
"observer": "client"
|
|
26609
|
+
}
|
|
26610
|
+
],
|
|
26611
|
+
"observer": "client"
|
|
26612
|
+
},
|
|
26613
|
+
{
|
|
26614
|
+
"registration": "any",
|
|
26615
|
+
"observer": "client"
|
|
26616
|
+
}
|
|
26617
|
+
],
|
|
26618
|
+
"observer": "client"
|
|
26619
|
+
},
|
|
26620
|
+
"control": {
|
|
26621
|
+
"origin": "ordinary",
|
|
26622
|
+
"via": "unguarded",
|
|
26623
|
+
"expected": {
|
|
26624
|
+
"worldOnProtected": true,
|
|
26625
|
+
"loaded": true
|
|
26626
|
+
}
|
|
26627
|
+
},
|
|
26628
|
+
"expected": {
|
|
26629
|
+
"worldOnProtected": false,
|
|
26630
|
+
"loaded": "either"
|
|
26631
|
+
},
|
|
26632
|
+
"designDependent": ["loaded"]
|
|
26633
|
+
},
|
|
26634
|
+
{
|
|
26635
|
+
"id": "E7.init-world-bfcache",
|
|
26636
|
+
"family": "E",
|
|
26637
|
+
"kind": "cdp",
|
|
26638
|
+
"scope": "any",
|
|
26639
|
+
"setup": [
|
|
26640
|
+
{
|
|
26641
|
+
"page": "tab",
|
|
26642
|
+
"url": "{ordinary}/bfcache?n={tag}-start"
|
|
26643
|
+
},
|
|
26644
|
+
{
|
|
26645
|
+
"observer": "watch"
|
|
26646
|
+
},
|
|
26647
|
+
{
|
|
26648
|
+
"cdp": "Page.enable"
|
|
26649
|
+
},
|
|
26650
|
+
{
|
|
26651
|
+
"cdp": "Runtime.enable"
|
|
26652
|
+
},
|
|
26653
|
+
{
|
|
26654
|
+
"cdp": "Page.addScriptToEvaluateOnNewDocument",
|
|
26655
|
+
"params": {
|
|
26656
|
+
"source": "",
|
|
26657
|
+
"worldName": "slicc-bf-{tag}"
|
|
26658
|
+
},
|
|
26659
|
+
"as": "world",
|
|
26660
|
+
"requires": ["stockSetup"]
|
|
26661
|
+
}
|
|
26662
|
+
],
|
|
26663
|
+
"trigger": [
|
|
26664
|
+
{
|
|
26665
|
+
"page": "navigate",
|
|
26666
|
+
"url": "{target}/bfcache?n={tag}-p"
|
|
26667
|
+
},
|
|
26668
|
+
{
|
|
26669
|
+
"settle": {
|
|
26670
|
+
"ms": 5000,
|
|
26671
|
+
"or": {
|
|
26672
|
+
"served": "{target}/bfcache?n={tag}-p",
|
|
26673
|
+
"observer": "fixture"
|
|
26674
|
+
}
|
|
26675
|
+
}
|
|
26676
|
+
},
|
|
26677
|
+
{
|
|
26678
|
+
"page": "navigate",
|
|
26679
|
+
"url": "{ordinary}/bfcache?n={tag}-b"
|
|
26680
|
+
},
|
|
26681
|
+
{
|
|
26682
|
+
"settle": {
|
|
26683
|
+
"ms": 5000,
|
|
26684
|
+
"or": {
|
|
26685
|
+
"served": "{ordinary}/bfcache?n={tag}-b",
|
|
26686
|
+
"observer": "fixture"
|
|
26687
|
+
}
|
|
26688
|
+
}
|
|
26689
|
+
},
|
|
26690
|
+
{
|
|
26691
|
+
"observer": "watch"
|
|
26692
|
+
},
|
|
26693
|
+
{
|
|
26694
|
+
"cdp": "Runtime.evaluate",
|
|
26695
|
+
"params": {
|
|
26696
|
+
"expression": "history.back()",
|
|
26697
|
+
"returnByValue": true
|
|
26698
|
+
},
|
|
26699
|
+
"as": "back"
|
|
26700
|
+
},
|
|
26701
|
+
{
|
|
26702
|
+
"settle": {
|
|
26703
|
+
"ms": 3000
|
|
26704
|
+
}
|
|
26705
|
+
}
|
|
26706
|
+
],
|
|
26707
|
+
"targets": ["seven", "vault"],
|
|
26708
|
+
"requires": ["stockSetup"],
|
|
26709
|
+
"observe": {
|
|
26710
|
+
"worldOnProtected": {
|
|
26711
|
+
"means": "after bfcache restore the unguarded observer saw the named no-code world on the protected document",
|
|
26712
|
+
"check": {
|
|
26713
|
+
"world": "slicc-bf-{tag}",
|
|
26714
|
+
"origin": "{target}",
|
|
26715
|
+
"afterClear": true,
|
|
26716
|
+
"observer": "unguarded"
|
|
26717
|
+
}
|
|
26718
|
+
},
|
|
26719
|
+
"beacon": {
|
|
26720
|
+
"means": "a beacon from {target}",
|
|
26721
|
+
"check": {
|
|
26722
|
+
"beacon": "{target}",
|
|
26723
|
+
"observer": "fixture"
|
|
26724
|
+
}
|
|
26725
|
+
},
|
|
26726
|
+
"loaded": {
|
|
26727
|
+
"means": "the stand-in served the protected bfcache document",
|
|
26728
|
+
"check": {
|
|
26729
|
+
"served": "{target}/bfcache?n={tag}-p",
|
|
26730
|
+
"observer": "fixture"
|
|
26731
|
+
}
|
|
26732
|
+
}
|
|
26733
|
+
},
|
|
26734
|
+
"live": "the stand-in served the protected bfcache document, or the guard refused that navigation (pre + blocked), or refused a refusable setup step",
|
|
26735
|
+
"liveCheck": {
|
|
26736
|
+
"any": [
|
|
26737
|
+
{
|
|
26738
|
+
"loaded": "{target}/bfcache?n={tag}-p",
|
|
26739
|
+
"observer": "fixture"
|
|
26740
|
+
},
|
|
26741
|
+
{
|
|
26742
|
+
"all": [
|
|
26743
|
+
{
|
|
26744
|
+
"pre": "{target}/bfcache?n={tag}-p",
|
|
26745
|
+
"observer": "fixture"
|
|
26746
|
+
},
|
|
26747
|
+
{
|
|
26748
|
+
"any": [
|
|
26749
|
+
{
|
|
26750
|
+
"blocked": {
|
|
26751
|
+
"url": "{target}/bfcache?n={tag}-p",
|
|
26752
|
+
"session": "page",
|
|
26753
|
+
"frame": false
|
|
26754
|
+
},
|
|
26755
|
+
"observer": "client"
|
|
26756
|
+
},
|
|
26757
|
+
{
|
|
26758
|
+
"blocked": {
|
|
26759
|
+
"url": "{target}/bfcache?n={tag}-p",
|
|
26760
|
+
"session": "page",
|
|
26761
|
+
"frame": false
|
|
26762
|
+
},
|
|
26763
|
+
"observer": "unguarded"
|
|
26764
|
+
},
|
|
26765
|
+
{
|
|
26766
|
+
"history": {
|
|
26767
|
+
"url": "{target}/bfcache?n={tag}-p",
|
|
26768
|
+
"session": "page"
|
|
26769
|
+
},
|
|
26770
|
+
"observer": "unguarded"
|
|
26771
|
+
}
|
|
26772
|
+
],
|
|
26773
|
+
"observer": "client"
|
|
26774
|
+
}
|
|
26775
|
+
],
|
|
26776
|
+
"observer": "client"
|
|
26777
|
+
},
|
|
26778
|
+
{
|
|
26779
|
+
"registration": "any",
|
|
26780
|
+
"observer": "client"
|
|
26781
|
+
}
|
|
26782
|
+
],
|
|
26783
|
+
"observer": "client"
|
|
26784
|
+
},
|
|
26785
|
+
"control": {
|
|
26786
|
+
"origin": "ordinary",
|
|
26787
|
+
"via": "unguarded",
|
|
26788
|
+
"expected": {
|
|
26789
|
+
"worldOnProtected": true,
|
|
26790
|
+
"beacon": false,
|
|
26791
|
+
"loaded": true
|
|
26792
|
+
}
|
|
26793
|
+
},
|
|
26794
|
+
"expected": {
|
|
26795
|
+
"worldOnProtected": false,
|
|
26796
|
+
"beacon": false,
|
|
26797
|
+
"loaded": "either"
|
|
26798
|
+
},
|
|
26799
|
+
"designDependent": ["loaded"]
|
|
26800
|
+
},
|
|
26801
|
+
{
|
|
26802
|
+
"id": "E7.init-world-error",
|
|
26803
|
+
"family": "E",
|
|
26804
|
+
"kind": "cdp",
|
|
26805
|
+
"scope": "any",
|
|
26806
|
+
"setup": [
|
|
26807
|
+
{
|
|
26808
|
+
"page": "tab",
|
|
26809
|
+
"url": "{ordinary}/doc?n=start-{tag}"
|
|
26810
|
+
},
|
|
26811
|
+
{
|
|
26812
|
+
"observer": "watch"
|
|
26813
|
+
},
|
|
26814
|
+
{
|
|
26815
|
+
"observer": "fail",
|
|
26816
|
+
"url": "{target}/doc*"
|
|
26817
|
+
},
|
|
26818
|
+
{
|
|
26819
|
+
"cdp": "Page.enable"
|
|
26820
|
+
},
|
|
26821
|
+
{
|
|
26822
|
+
"cdp": "Runtime.enable"
|
|
26823
|
+
},
|
|
26824
|
+
{
|
|
26825
|
+
"cdp": "Page.addScriptToEvaluateOnNewDocument",
|
|
26826
|
+
"params": {
|
|
26827
|
+
"source": "",
|
|
26828
|
+
"worldName": "slicc-error-{tag}"
|
|
26829
|
+
},
|
|
26830
|
+
"as": "world",
|
|
26831
|
+
"requires": ["stockSetup"]
|
|
26832
|
+
}
|
|
26833
|
+
],
|
|
26834
|
+
"trigger": [
|
|
26835
|
+
{
|
|
26836
|
+
"page": "navigate",
|
|
26837
|
+
"url": "{target}/doc?n={tag}"
|
|
26838
|
+
},
|
|
26839
|
+
{
|
|
26840
|
+
"settle": {
|
|
26841
|
+
"ms": 5000
|
|
26842
|
+
}
|
|
26843
|
+
}
|
|
26844
|
+
],
|
|
26845
|
+
"targets": ["seven", "vault"],
|
|
26846
|
+
"requires": ["stockSetup"],
|
|
26847
|
+
"observe": {
|
|
26848
|
+
"worldOnError": {
|
|
26849
|
+
"means": "the unguarded observer saw the admitted no-code world on Chrome's error page for the failed {target} navigation",
|
|
26850
|
+
"check": {
|
|
26851
|
+
"world": "slicc-error-{tag}",
|
|
26852
|
+
"observer": "unguarded"
|
|
26853
|
+
}
|
|
26854
|
+
},
|
|
26855
|
+
"beacon": {
|
|
26856
|
+
"means": "a beacon from {target}",
|
|
26857
|
+
"check": {
|
|
26858
|
+
"beacon": "{target}",
|
|
26859
|
+
"observer": "fixture"
|
|
26860
|
+
}
|
|
26861
|
+
},
|
|
26862
|
+
"pre": {
|
|
26863
|
+
"means": "the stand-in saw a pre-request for {target}/doc?n={tag}",
|
|
26864
|
+
"dependsOn": [],
|
|
26865
|
+
"check": {
|
|
26866
|
+
"pre": "{target}/doc?n={tag}",
|
|
26867
|
+
"observer": "fixture"
|
|
26868
|
+
}
|
|
26869
|
+
}
|
|
26870
|
+
},
|
|
26871
|
+
"live": "the runner saw a pre-request for the protected URL, or the guard refused the world",
|
|
26872
|
+
"liveCheck": {
|
|
26873
|
+
"any": [
|
|
26874
|
+
{
|
|
26875
|
+
"pre": "{target}/doc?n={tag}",
|
|
26876
|
+
"observer": "fixture"
|
|
26877
|
+
},
|
|
26878
|
+
{
|
|
26879
|
+
"registration": "any",
|
|
26880
|
+
"observer": "client"
|
|
26881
|
+
}
|
|
26882
|
+
],
|
|
26883
|
+
"observer": "client"
|
|
26884
|
+
},
|
|
26885
|
+
"control": {
|
|
26886
|
+
"origin": "ordinary",
|
|
26887
|
+
"via": "unguarded",
|
|
26888
|
+
"expected": {
|
|
26889
|
+
"worldOnError": true,
|
|
26890
|
+
"beacon": false,
|
|
26891
|
+
"pre": true
|
|
26892
|
+
}
|
|
26893
|
+
},
|
|
26894
|
+
"expected": {
|
|
26895
|
+
"worldOnError": true,
|
|
26896
|
+
"beacon": false,
|
|
26897
|
+
"pre": "either"
|
|
26898
|
+
},
|
|
26899
|
+
"designDependent": ["pre"]
|
|
26900
|
+
},
|
|
26901
|
+
{
|
|
26902
|
+
"id": "E7.emulation-carry",
|
|
26903
|
+
"family": "E",
|
|
26904
|
+
"kind": "cdp",
|
|
26905
|
+
"scope": "any",
|
|
26906
|
+
"setup": [
|
|
26907
|
+
{
|
|
26908
|
+
"page": "tab",
|
|
26909
|
+
"url": "{ordinary}/doc?n=start-{tag}"
|
|
26910
|
+
},
|
|
26911
|
+
{
|
|
26912
|
+
"cdp": "Page.enable"
|
|
26913
|
+
},
|
|
26914
|
+
{
|
|
26915
|
+
"cdp": "Emulation.setFocusEmulationEnabled",
|
|
26916
|
+
"params": {
|
|
26917
|
+
"enabled": true
|
|
26918
|
+
},
|
|
26919
|
+
"as": "focus",
|
|
26920
|
+
"requires": ["stockSetup"]
|
|
26921
|
+
},
|
|
26922
|
+
{
|
|
26923
|
+
"cdp": "Emulation.setEmulatedMedia",
|
|
26924
|
+
"params": {
|
|
26925
|
+
"media": "",
|
|
26926
|
+
"features": [
|
|
26927
|
+
{
|
|
26928
|
+
"name": "prefers-color-scheme",
|
|
26929
|
+
"value": "light"
|
|
26930
|
+
},
|
|
26931
|
+
{
|
|
26932
|
+
"name": "prefers-reduced-motion",
|
|
26933
|
+
"value": "reduce"
|
|
26934
|
+
},
|
|
26935
|
+
{
|
|
26936
|
+
"name": "forced-colors",
|
|
26937
|
+
"value": "none"
|
|
26938
|
+
},
|
|
26939
|
+
{
|
|
26940
|
+
"name": "prefers-contrast",
|
|
26941
|
+
"value": "no-preference"
|
|
26942
|
+
}
|
|
26943
|
+
]
|
|
26944
|
+
},
|
|
26945
|
+
"as": "media",
|
|
26946
|
+
"requires": ["stockSetup"]
|
|
26947
|
+
},
|
|
26948
|
+
{
|
|
26949
|
+
"cdp": "Emulation.setDeviceMetricsOverride",
|
|
26950
|
+
"params": {
|
|
26951
|
+
"width": 1001,
|
|
26952
|
+
"height": 601,
|
|
26953
|
+
"deviceScaleFactor": 1,
|
|
26954
|
+
"mobile": false,
|
|
26955
|
+
"screenWidth": 1001,
|
|
26956
|
+
"screenHeight": 601
|
|
26957
|
+
},
|
|
26958
|
+
"as": "metrics",
|
|
26959
|
+
"requires": ["stockSetup"]
|
|
26960
|
+
},
|
|
26961
|
+
{
|
|
26962
|
+
"cdp": "Emulation.setTouchEmulationEnabled",
|
|
26963
|
+
"params": {
|
|
26964
|
+
"enabled": true,
|
|
26965
|
+
"maxTouchPoints": 2
|
|
26966
|
+
},
|
|
26967
|
+
"as": "touch",
|
|
26968
|
+
"requires": ["stockSetup"]
|
|
26969
|
+
}
|
|
26970
|
+
],
|
|
26971
|
+
"trigger": [
|
|
26972
|
+
{
|
|
26973
|
+
"page": "navigate",
|
|
26974
|
+
"url": "{target}/doc?n={tag}"
|
|
26975
|
+
},
|
|
26976
|
+
{
|
|
26977
|
+
"settle": {
|
|
26978
|
+
"title": "doc",
|
|
26979
|
+
"ms": 5000,
|
|
26980
|
+
"or": {
|
|
26981
|
+
"served": "{target}/doc?n={tag}",
|
|
26982
|
+
"observer": "fixture"
|
|
26983
|
+
}
|
|
26984
|
+
}
|
|
26985
|
+
}
|
|
26986
|
+
],
|
|
26987
|
+
"targets": ["seven", "vault"],
|
|
26988
|
+
"requires": ["stockSetup"],
|
|
26989
|
+
"observe": {
|
|
26990
|
+
"focused": {
|
|
26991
|
+
"means": "the unguarded observer still reads focus emulation on the document after the protected navigation attempt",
|
|
26992
|
+
"check": {
|
|
26993
|
+
"expression": "document.hasFocus()",
|
|
26994
|
+
"equals": true,
|
|
26995
|
+
"via": "unguarded",
|
|
26996
|
+
"observer": "unguarded"
|
|
26997
|
+
}
|
|
26998
|
+
},
|
|
26999
|
+
"media": {
|
|
27000
|
+
"means": "the unguarded observer matches prefers-reduced-motion: reduce on {target}",
|
|
27001
|
+
"check": {
|
|
27002
|
+
"expression": "matchMedia('(prefers-reduced-motion: reduce)').matches",
|
|
27003
|
+
"equals": true,
|
|
27004
|
+
"via": "unguarded",
|
|
27005
|
+
"observer": "unguarded"
|
|
27006
|
+
}
|
|
27007
|
+
},
|
|
27008
|
+
"viewport": {
|
|
27009
|
+
"means": "the unguarded observer still reads the admitted viewport override after the protected navigation attempt",
|
|
27010
|
+
"check": {
|
|
27011
|
+
"expression": "innerWidth + 'x' + innerHeight",
|
|
27012
|
+
"equals": "1001x601",
|
|
27013
|
+
"via": "unguarded",
|
|
27014
|
+
"observer": "unguarded"
|
|
27015
|
+
}
|
|
27016
|
+
},
|
|
27017
|
+
"touch": {
|
|
27018
|
+
"means": "the unguarded observer reads navigator.maxTouchPoints as 2 on {target}",
|
|
27019
|
+
"check": {
|
|
27020
|
+
"expression": "navigator.maxTouchPoints",
|
|
27021
|
+
"equals": 2,
|
|
27022
|
+
"via": "unguarded",
|
|
27023
|
+
"observer": "unguarded"
|
|
27024
|
+
}
|
|
27025
|
+
},
|
|
27026
|
+
"beacon": {
|
|
27027
|
+
"means": "a beacon from {target}",
|
|
27028
|
+
"check": {
|
|
27029
|
+
"beacon": "{target}",
|
|
27030
|
+
"observer": "fixture"
|
|
27031
|
+
}
|
|
27032
|
+
},
|
|
27033
|
+
"loaded": {
|
|
27034
|
+
"means": "the stand-in served {target}/doc?n={tag}",
|
|
27035
|
+
"dependsOn": [],
|
|
27036
|
+
"check": {
|
|
27037
|
+
"served": "{target}/doc?n={tag}",
|
|
27038
|
+
"observer": "fixture"
|
|
27039
|
+
}
|
|
27040
|
+
},
|
|
27041
|
+
"exposed": {
|
|
27042
|
+
"means": "the unguarded observer finds the admitted display overrides (focus, media, viewport, touch) on a document at {target}",
|
|
27043
|
+
"check": {
|
|
27044
|
+
"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",
|
|
27045
|
+
"equals": true,
|
|
27046
|
+
"via": "unguarded",
|
|
27047
|
+
"observer": "unguarded"
|
|
27048
|
+
}
|
|
27049
|
+
}
|
|
27050
|
+
},
|
|
27051
|
+
"live": "the stand-in served {target}/doc?n={tag}, or the guard refused the protected navigation (pre + blocked), or refused a refusable setup step",
|
|
27052
|
+
"liveCheck": {
|
|
27053
|
+
"any": [
|
|
27054
|
+
{
|
|
27055
|
+
"loaded": "{target}/doc?n={tag}",
|
|
27056
|
+
"observer": "fixture"
|
|
27057
|
+
},
|
|
27058
|
+
{
|
|
27059
|
+
"all": [
|
|
27060
|
+
{
|
|
27061
|
+
"pre": "{target}/doc?n={tag}",
|
|
27062
|
+
"observer": "fixture"
|
|
27063
|
+
},
|
|
27064
|
+
{
|
|
27065
|
+
"any": [
|
|
27066
|
+
{
|
|
27067
|
+
"blocked": {
|
|
27068
|
+
"url": "{target}/doc?n={tag}",
|
|
27069
|
+
"session": "page",
|
|
27070
|
+
"frame": false
|
|
27071
|
+
},
|
|
27072
|
+
"observer": "client"
|
|
27073
|
+
},
|
|
27074
|
+
{
|
|
27075
|
+
"blocked": {
|
|
27076
|
+
"url": "{target}/doc?n={tag}",
|
|
27077
|
+
"session": "page",
|
|
27078
|
+
"frame": false
|
|
27079
|
+
},
|
|
27080
|
+
"observer": "unguarded"
|
|
27081
|
+
},
|
|
27082
|
+
{
|
|
27083
|
+
"history": {
|
|
27084
|
+
"url": "{target}/doc?n={tag}",
|
|
27085
|
+
"session": "page"
|
|
27086
|
+
},
|
|
27087
|
+
"observer": "unguarded"
|
|
27088
|
+
}
|
|
27089
|
+
],
|
|
27090
|
+
"observer": "client"
|
|
27091
|
+
}
|
|
27092
|
+
],
|
|
27093
|
+
"observer": "client"
|
|
27094
|
+
},
|
|
27095
|
+
{
|
|
27096
|
+
"registration": "any",
|
|
27097
|
+
"observer": "client"
|
|
27098
|
+
}
|
|
27099
|
+
],
|
|
27100
|
+
"observer": "client"
|
|
27101
|
+
},
|
|
27102
|
+
"control": {
|
|
27103
|
+
"origin": "ordinary",
|
|
27104
|
+
"via": "unguarded",
|
|
27105
|
+
"expected": {
|
|
27106
|
+
"focused": true,
|
|
27107
|
+
"media": true,
|
|
27108
|
+
"viewport": true,
|
|
27109
|
+
"touch": true,
|
|
27110
|
+
"exposed": true,
|
|
27111
|
+
"beacon": false,
|
|
27112
|
+
"loaded": true
|
|
27113
|
+
}
|
|
27114
|
+
},
|
|
27115
|
+
"expected": {
|
|
27116
|
+
"exposed": false,
|
|
27117
|
+
"beacon": false,
|
|
27118
|
+
"loaded": "either"
|
|
27119
|
+
},
|
|
27120
|
+
"designDependent": ["loaded"]
|
|
27121
|
+
},
|
|
27122
|
+
{
|
|
27123
|
+
"id": "E7.isolated-foreign",
|
|
27124
|
+
"family": "E",
|
|
27125
|
+
"kind": "cdp",
|
|
27126
|
+
"scope": "any",
|
|
27127
|
+
"setup": [
|
|
27128
|
+
{
|
|
27129
|
+
"page": "tab",
|
|
27130
|
+
"url": "{ordinary}/doc?n=start-{tag}"
|
|
27131
|
+
},
|
|
27132
|
+
{
|
|
27133
|
+
"observer": "watch"
|
|
27134
|
+
},
|
|
27135
|
+
{
|
|
27136
|
+
"cdp": "Page.enable",
|
|
27137
|
+
"requires": ["stockSetup"]
|
|
27138
|
+
},
|
|
27139
|
+
{
|
|
27140
|
+
"cdp": "Runtime.enable"
|
|
27141
|
+
}
|
|
27142
|
+
],
|
|
27143
|
+
"trigger": [
|
|
27144
|
+
{
|
|
27145
|
+
"page": "navigate",
|
|
27146
|
+
"url": "{target}/doc?n={tag}"
|
|
27147
|
+
},
|
|
27148
|
+
{
|
|
27149
|
+
"settle": {
|
|
27150
|
+
"title": "doc",
|
|
27151
|
+
"ms": 5000,
|
|
27152
|
+
"required": true
|
|
27153
|
+
}
|
|
27154
|
+
},
|
|
27155
|
+
{
|
|
27156
|
+
"cdp": "Page.getFrameTree",
|
|
27157
|
+
"as": "tree"
|
|
27158
|
+
},
|
|
27159
|
+
{
|
|
27160
|
+
"cdp": "Page.createIsolatedWorld",
|
|
27161
|
+
"params": {
|
|
27162
|
+
"frameId": {
|
|
27163
|
+
"$result": "tree",
|
|
27164
|
+
"path": "result.frameTree.frame.id"
|
|
27165
|
+
},
|
|
27166
|
+
"worldName": "slicc-foreign-{tag}",
|
|
27167
|
+
"grantUniveralAccess": true,
|
|
27168
|
+
"contentSecurityPolicy": "default-src 'none'"
|
|
27169
|
+
},
|
|
27170
|
+
"as": "foreign",
|
|
27171
|
+
"refusable": true,
|
|
27172
|
+
"refusal": {
|
|
27173
|
+
"match": "refused"
|
|
27174
|
+
},
|
|
27175
|
+
"requires": ["stockSetup"]
|
|
27176
|
+
}
|
|
27177
|
+
],
|
|
27178
|
+
"targets": ["seven", "vault"],
|
|
27179
|
+
"requires": ["stockSetup"],
|
|
27180
|
+
"observe": {
|
|
27181
|
+
"noContext": {
|
|
27182
|
+
"means": "createIsolatedWorld on a protected document returned no executionContextId",
|
|
27183
|
+
"dependsOn": ["foreign"],
|
|
27184
|
+
"check": {
|
|
27185
|
+
"any": [
|
|
27186
|
+
{
|
|
27187
|
+
"refused": ["foreign"],
|
|
27188
|
+
"observer": "client"
|
|
27189
|
+
},
|
|
27190
|
+
{
|
|
27191
|
+
"result": "foreign",
|
|
27192
|
+
"path": "result.executionContextId",
|
|
27193
|
+
"equals": {
|
|
27194
|
+
"$absentOr": 0
|
|
27195
|
+
},
|
|
27196
|
+
"observer": "client"
|
|
27197
|
+
}
|
|
27198
|
+
],
|
|
27199
|
+
"observer": "client"
|
|
27200
|
+
}
|
|
27201
|
+
},
|
|
27202
|
+
"world": {
|
|
27203
|
+
"means": "the unguarded observer saw world slicc-foreign-{tag} on the document",
|
|
27204
|
+
"check": {
|
|
27205
|
+
"world": "slicc-foreign-{tag}",
|
|
27206
|
+
"observer": "unguarded"
|
|
27207
|
+
},
|
|
27208
|
+
"dependsOn": []
|
|
27209
|
+
}
|
|
27210
|
+
},
|
|
27211
|
+
"live": "the stand-in served {target}/doc?n={tag}",
|
|
27212
|
+
"liveCheck": {
|
|
27213
|
+
"loaded": "{target}/doc?n={tag}",
|
|
27214
|
+
"observer": "fixture"
|
|
27215
|
+
},
|
|
27216
|
+
"control": {
|
|
27217
|
+
"origin": "ordinary",
|
|
27218
|
+
"via": "unguarded",
|
|
27219
|
+
"expected": {
|
|
27220
|
+
"noContext": false,
|
|
27221
|
+
"world": true
|
|
27222
|
+
}
|
|
27223
|
+
},
|
|
27224
|
+
"expected": {
|
|
27225
|
+
"noContext": true,
|
|
27226
|
+
"world": false
|
|
27227
|
+
}
|
|
27228
|
+
},
|
|
27229
|
+
{
|
|
27230
|
+
"id": "E7.ua-empty",
|
|
27231
|
+
"family": "E",
|
|
27232
|
+
"kind": "cdp",
|
|
27233
|
+
"scope": "any",
|
|
27234
|
+
"setup": [
|
|
27235
|
+
{
|
|
27236
|
+
"page": "tab",
|
|
27237
|
+
"url": "{ordinary}/doc?n=start-{tag}"
|
|
27238
|
+
},
|
|
27239
|
+
{
|
|
27240
|
+
"cdp": "Page.enable"
|
|
27241
|
+
},
|
|
27242
|
+
{
|
|
27243
|
+
"cdp": "Emulation.setUserAgentOverride",
|
|
27244
|
+
"params": {
|
|
27245
|
+
"userAgent": ""
|
|
27246
|
+
},
|
|
27247
|
+
"as": "ua",
|
|
27248
|
+
"refusable": true,
|
|
27249
|
+
"refusal": {
|
|
27250
|
+
"match": "refused"
|
|
27251
|
+
},
|
|
27252
|
+
"requires": ["stockSetup"]
|
|
27253
|
+
}
|
|
27254
|
+
],
|
|
27255
|
+
"trigger": [
|
|
27256
|
+
{
|
|
27257
|
+
"settle": {
|
|
27258
|
+
"ms": 200
|
|
27259
|
+
}
|
|
27260
|
+
}
|
|
27261
|
+
],
|
|
27262
|
+
"targets": ["ordinary"],
|
|
27263
|
+
"requires": ["stockSetup", "forwardAudit"],
|
|
27264
|
+
"observe": {
|
|
27265
|
+
"emptyForwarded": {
|
|
27266
|
+
"means": "the forward ledger shows Emulation.setUserAgentOverride with an empty userAgent",
|
|
27267
|
+
"requires": ["forwardAudit"],
|
|
27268
|
+
"dependsOn": [],
|
|
27269
|
+
"check": {
|
|
27270
|
+
"forwarded": {
|
|
27271
|
+
"method": "Emulation.setUserAgentOverride",
|
|
27272
|
+
"where": {
|
|
27273
|
+
"params": {
|
|
27274
|
+
"userAgent": ""
|
|
27275
|
+
}
|
|
27276
|
+
}
|
|
27277
|
+
},
|
|
27278
|
+
"observer": "client"
|
|
27279
|
+
}
|
|
27280
|
+
}
|
|
27281
|
+
},
|
|
27282
|
+
"live": "the guard answered or refused the empty user-agent override",
|
|
27283
|
+
"liveCheck": {
|
|
27284
|
+
"any": [
|
|
27285
|
+
{
|
|
27286
|
+
"result": "ua",
|
|
27287
|
+
"path": "ok",
|
|
27288
|
+
"equals": true,
|
|
27289
|
+
"observer": "client"
|
|
27290
|
+
},
|
|
27291
|
+
{
|
|
27292
|
+
"registration": "any",
|
|
27293
|
+
"observer": "client"
|
|
27294
|
+
}
|
|
27295
|
+
],
|
|
27296
|
+
"observer": "client"
|
|
27297
|
+
},
|
|
27298
|
+
"control": {
|
|
27299
|
+
"origin": "ordinary",
|
|
27300
|
+
"via": "unguarded",
|
|
27301
|
+
"expected": {
|
|
27302
|
+
"emptyForwarded": true
|
|
27303
|
+
}
|
|
27304
|
+
},
|
|
27305
|
+
"expected": {
|
|
27306
|
+
"emptyForwarded": false
|
|
27307
|
+
}
|
|
27308
|
+
},
|
|
27309
|
+
{
|
|
27310
|
+
"id": "E7.binding-main",
|
|
27311
|
+
"family": "E",
|
|
27312
|
+
"kind": "cdp",
|
|
27313
|
+
"scope": "any",
|
|
27314
|
+
"setup": [
|
|
27315
|
+
{
|
|
27316
|
+
"page": "tab",
|
|
27317
|
+
"url": "{ordinary}/doc?n=start-{tag}"
|
|
27318
|
+
},
|
|
27319
|
+
{
|
|
27320
|
+
"cdp": "Page.enable",
|
|
27321
|
+
"requires": ["stockSetup"]
|
|
27322
|
+
},
|
|
27323
|
+
{
|
|
27324
|
+
"cdp": "Runtime.enable"
|
|
27325
|
+
},
|
|
27326
|
+
{
|
|
27327
|
+
"cdp": "Runtime.addBinding",
|
|
27328
|
+
"params": {
|
|
27329
|
+
"name": "sliccMainNone"
|
|
27330
|
+
},
|
|
27331
|
+
"as": "none",
|
|
27332
|
+
"refusable": true,
|
|
27333
|
+
"refusal": {
|
|
27334
|
+
"match": "refused"
|
|
27335
|
+
}
|
|
27336
|
+
},
|
|
27337
|
+
{
|
|
27338
|
+
"cdp": "Runtime.addBinding",
|
|
27339
|
+
"params": {
|
|
27340
|
+
"name": "sliccMainEmpty",
|
|
27341
|
+
"executionContextName": ""
|
|
27342
|
+
},
|
|
27343
|
+
"as": "empty",
|
|
27344
|
+
"refusable": true,
|
|
27345
|
+
"refusal": {
|
|
27346
|
+
"match": "refused"
|
|
27347
|
+
}
|
|
27348
|
+
}
|
|
27349
|
+
],
|
|
27350
|
+
"trigger": [
|
|
27351
|
+
{
|
|
27352
|
+
"page": "navigate",
|
|
27353
|
+
"url": "{target}/doc?n={tag}"
|
|
27354
|
+
},
|
|
27355
|
+
{
|
|
27356
|
+
"settle": {
|
|
27357
|
+
"title": "doc",
|
|
27358
|
+
"ms": 5000,
|
|
27359
|
+
"dependsOn": ["none", "empty"],
|
|
27360
|
+
"or": {
|
|
27361
|
+
"served": "{target}/doc?n={tag}",
|
|
27362
|
+
"observer": "fixture"
|
|
27363
|
+
}
|
|
27364
|
+
}
|
|
27365
|
+
}
|
|
27366
|
+
],
|
|
27367
|
+
"targets": ["ordinary"],
|
|
27368
|
+
"requires": ["stockSetup"],
|
|
27369
|
+
"observe": {
|
|
27370
|
+
"refused": {
|
|
27371
|
+
"means": "both main-world addBinding calls were refused",
|
|
27372
|
+
"check": {
|
|
27373
|
+
"refused": ["none", "empty"],
|
|
27374
|
+
"observer": "client"
|
|
27375
|
+
},
|
|
27376
|
+
"dependsOn": ["none", "empty"]
|
|
27377
|
+
},
|
|
27378
|
+
"mainHidden": {
|
|
27379
|
+
"means": "the unguarded observer finds neither binding in the main world",
|
|
27380
|
+
"check": {
|
|
27381
|
+
"expression": "typeof sliccMainNone + ' ' + typeof sliccMainEmpty",
|
|
27382
|
+
"equals": "undefined undefined",
|
|
27383
|
+
"via": "unguarded",
|
|
27384
|
+
"observer": "unguarded"
|
|
27385
|
+
},
|
|
27386
|
+
"dependsOn": []
|
|
27387
|
+
}
|
|
27388
|
+
},
|
|
27389
|
+
"live": "the stand-in served {target}/doc?n={tag}",
|
|
27390
|
+
"liveCheck": {
|
|
27391
|
+
"loaded": "{target}/doc?n={tag}",
|
|
27392
|
+
"observer": "fixture"
|
|
27393
|
+
},
|
|
27394
|
+
"control": {
|
|
27395
|
+
"origin": "ordinary",
|
|
27396
|
+
"via": "unguarded",
|
|
27397
|
+
"expected": {
|
|
27398
|
+
"refused": false,
|
|
27399
|
+
"mainHidden": false
|
|
27400
|
+
}
|
|
27401
|
+
},
|
|
27402
|
+
"expected": {
|
|
27403
|
+
"refused": true,
|
|
27404
|
+
"mainHidden": true
|
|
27405
|
+
}
|
|
27406
|
+
},
|
|
27407
|
+
{
|
|
27408
|
+
"id": "E7.binding-main-ctx",
|
|
27409
|
+
"family": "E",
|
|
27410
|
+
"kind": "cdp",
|
|
27411
|
+
"scope": "any",
|
|
27412
|
+
"setup": [
|
|
27413
|
+
{
|
|
27414
|
+
"page": "tab",
|
|
27415
|
+
"url": "{ordinary}/doc?n=start-{tag}"
|
|
27416
|
+
},
|
|
27417
|
+
{
|
|
27418
|
+
"cdp": "Page.enable",
|
|
27419
|
+
"requires": ["stockSetup"]
|
|
27420
|
+
},
|
|
27421
|
+
{
|
|
27422
|
+
"cdp": "Runtime.enable"
|
|
27423
|
+
},
|
|
27424
|
+
{
|
|
27425
|
+
"page": "navigate",
|
|
27426
|
+
"url": "{ordinary}/doc?n=mid-{tag}"
|
|
27427
|
+
},
|
|
27428
|
+
{
|
|
27429
|
+
"settle": {
|
|
27430
|
+
"title": "doc",
|
|
27431
|
+
"ms": 5000,
|
|
27432
|
+
"required": true
|
|
27433
|
+
}
|
|
27434
|
+
}
|
|
27435
|
+
],
|
|
27436
|
+
"trigger": [
|
|
27437
|
+
{
|
|
27438
|
+
"cdp": "Runtime.addBinding",
|
|
27439
|
+
"params": {
|
|
27440
|
+
"name": "sliccMainCtx",
|
|
27441
|
+
"executionContextId": {
|
|
27442
|
+
"$event": "Runtime.executionContextCreated",
|
|
27443
|
+
"where": {
|
|
27444
|
+
"params": {
|
|
27445
|
+
"context": {
|
|
27446
|
+
"auxData": {
|
|
27447
|
+
"isDefault": true
|
|
27448
|
+
}
|
|
27449
|
+
}
|
|
27450
|
+
}
|
|
27451
|
+
},
|
|
27452
|
+
"path": "params.context.id"
|
|
27453
|
+
}
|
|
27454
|
+
},
|
|
27455
|
+
"as": "mainCtx",
|
|
27456
|
+
"refusable": true,
|
|
27457
|
+
"refusal": {
|
|
27458
|
+
"match": "refused"
|
|
27459
|
+
}
|
|
27460
|
+
}
|
|
27461
|
+
],
|
|
27462
|
+
"targets": ["ordinary"],
|
|
27463
|
+
"requires": ["stockSetup"],
|
|
27464
|
+
"observe": {
|
|
27465
|
+
"mainRefused": {
|
|
27466
|
+
"means": "addBinding for a main-world executionContextId was refused",
|
|
27467
|
+
"check": {
|
|
27468
|
+
"refused": ["mainCtx"],
|
|
27469
|
+
"observer": "client"
|
|
27470
|
+
},
|
|
27471
|
+
"dependsOn": ["mainCtx"]
|
|
27472
|
+
},
|
|
27473
|
+
"mainExposed": {
|
|
27474
|
+
"means": "the unguarded observer finds the main-world binding",
|
|
27475
|
+
"dependsOn": [],
|
|
27476
|
+
"check": {
|
|
27477
|
+
"expression": "typeof sliccMainCtx",
|
|
27478
|
+
"equals": "function",
|
|
27479
|
+
"via": "unguarded",
|
|
27480
|
+
"observer": "unguarded"
|
|
27481
|
+
}
|
|
27482
|
+
}
|
|
27483
|
+
},
|
|
27484
|
+
"live": "the stand-in served the mid document",
|
|
27485
|
+
"liveCheck": {
|
|
27486
|
+
"loaded": "{ordinary}/doc?n=mid-{tag}",
|
|
27487
|
+
"observer": "fixture"
|
|
27488
|
+
},
|
|
27489
|
+
"control": {
|
|
27490
|
+
"origin": "ordinary",
|
|
27491
|
+
"via": "unguarded",
|
|
27492
|
+
"expected": {
|
|
27493
|
+
"mainRefused": false,
|
|
27494
|
+
"mainExposed": true
|
|
27495
|
+
}
|
|
27496
|
+
},
|
|
27497
|
+
"expected": {
|
|
27498
|
+
"mainRefused": true,
|
|
27499
|
+
"mainExposed": false
|
|
27500
|
+
}
|
|
27501
|
+
},
|
|
27502
|
+
{
|
|
27503
|
+
"id": "C3.tab-protected",
|
|
27504
|
+
"family": "C",
|
|
27505
|
+
"kind": "cdp",
|
|
27506
|
+
"scope": "any",
|
|
27507
|
+
"setup": [
|
|
27508
|
+
{
|
|
27509
|
+
"page": "tab",
|
|
27510
|
+
"url": "{ordinary}/doc?n=opener-{tag}"
|
|
27511
|
+
},
|
|
27512
|
+
{
|
|
27513
|
+
"cdp": "Target.setAutoAttach",
|
|
27514
|
+
"params": {
|
|
27515
|
+
"autoAttach": true,
|
|
27516
|
+
"waitForDebuggerOnStart": true,
|
|
27517
|
+
"flatten": true,
|
|
27518
|
+
"filter": [
|
|
27519
|
+
{
|
|
27520
|
+
"type": "page",
|
|
27521
|
+
"exclude": true
|
|
27522
|
+
},
|
|
27523
|
+
{}
|
|
27524
|
+
]
|
|
27525
|
+
},
|
|
27526
|
+
"session": "browser",
|
|
27527
|
+
"as": "tabs",
|
|
27528
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"]
|
|
27529
|
+
},
|
|
27530
|
+
{
|
|
27531
|
+
"children": [
|
|
27532
|
+
{
|
|
27533
|
+
"cdp": "Target.setAutoAttach",
|
|
27534
|
+
"params": {
|
|
27535
|
+
"autoAttach": true,
|
|
27536
|
+
"waitForDebuggerOnStart": true,
|
|
27537
|
+
"flatten": true,
|
|
27538
|
+
"filter": [{}]
|
|
27539
|
+
}
|
|
27540
|
+
}
|
|
27541
|
+
],
|
|
27542
|
+
"requires": ["autoAttach"],
|
|
27543
|
+
"where": {
|
|
27544
|
+
"type": "page"
|
|
27545
|
+
}
|
|
27546
|
+
}
|
|
27547
|
+
],
|
|
27548
|
+
"trigger": [
|
|
27549
|
+
{
|
|
27550
|
+
"cdp": "Target.createTarget",
|
|
27551
|
+
"params": {
|
|
27552
|
+
"url": "{target}/doc?n={tag}",
|
|
27553
|
+
"browserContextId": "{context}"
|
|
27554
|
+
},
|
|
27555
|
+
"session": "browser",
|
|
27556
|
+
"as": "created",
|
|
27557
|
+
"requires": ["browserSession"]
|
|
27558
|
+
},
|
|
27559
|
+
{
|
|
27560
|
+
"wait": 2000
|
|
27561
|
+
}
|
|
27562
|
+
],
|
|
27563
|
+
"targets": ["seven", "vault"],
|
|
27564
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"],
|
|
27565
|
+
"observe": {
|
|
27566
|
+
"tab": {
|
|
27567
|
+
"means": "the client got Target.attachedToTarget for a tab target",
|
|
27568
|
+
"check": {
|
|
27569
|
+
"event": "Target.attachedToTarget",
|
|
27570
|
+
"where": {
|
|
27571
|
+
"params": {
|
|
27572
|
+
"targetInfo": {
|
|
27573
|
+
"type": "tab"
|
|
27574
|
+
}
|
|
27575
|
+
}
|
|
27576
|
+
},
|
|
27577
|
+
"observer": "client"
|
|
27578
|
+
}
|
|
27579
|
+
},
|
|
27580
|
+
"pageAttached": {
|
|
27581
|
+
"means": "the client kept a page session for the protected tab child",
|
|
27582
|
+
"check": {
|
|
27583
|
+
"event": "Target.attachedToTarget",
|
|
27584
|
+
"where": {
|
|
27585
|
+
"params": {
|
|
27586
|
+
"targetInfo": {
|
|
27587
|
+
"type": "page",
|
|
27588
|
+
"url": {
|
|
27589
|
+
"$contains": "{target}/doc"
|
|
27590
|
+
}
|
|
27591
|
+
}
|
|
27592
|
+
}
|
|
27593
|
+
},
|
|
27594
|
+
"observer": "client"
|
|
27595
|
+
}
|
|
27596
|
+
},
|
|
27597
|
+
"driven": {
|
|
27598
|
+
"means": "the unguarded observer finds the created page on {target}",
|
|
27599
|
+
"check": {
|
|
27600
|
+
"expression": "location.href",
|
|
27601
|
+
"equals": {
|
|
27602
|
+
"$contains": "{target}/doc"
|
|
27603
|
+
},
|
|
27604
|
+
"via": "unguarded",
|
|
27605
|
+
"session": "child",
|
|
27606
|
+
"observer": "unguarded"
|
|
27607
|
+
}
|
|
27608
|
+
},
|
|
27609
|
+
"beacon": {
|
|
27610
|
+
"means": "a beacon from {target}",
|
|
27611
|
+
"check": {
|
|
27612
|
+
"beacon": "{target}",
|
|
27613
|
+
"observer": "fixture"
|
|
27614
|
+
}
|
|
27615
|
+
}
|
|
27616
|
+
},
|
|
27617
|
+
"live": "the stand-in served {target}/doc?n={tag}, or the tab was held without a client page session",
|
|
27618
|
+
"liveCheck": {
|
|
27619
|
+
"any": [
|
|
27620
|
+
{
|
|
27621
|
+
"loaded": "{target}/doc?n={tag}",
|
|
27622
|
+
"observer": "fixture"
|
|
27623
|
+
},
|
|
27624
|
+
{
|
|
27625
|
+
"pre": "{target}/doc?n={tag}",
|
|
27626
|
+
"observer": "fixture"
|
|
27627
|
+
}
|
|
27628
|
+
],
|
|
27629
|
+
"observer": "client"
|
|
27630
|
+
},
|
|
27631
|
+
"control": {
|
|
27632
|
+
"origin": "ordinary",
|
|
27633
|
+
"via": "unguarded",
|
|
27634
|
+
"expected": {
|
|
27635
|
+
"tab": true,
|
|
27636
|
+
"pageAttached": true,
|
|
27637
|
+
"driven": true,
|
|
27638
|
+
"beacon": false
|
|
27639
|
+
}
|
|
27640
|
+
},
|
|
27641
|
+
"expected": {
|
|
27642
|
+
"tab": true,
|
|
27643
|
+
"pageAttached": false,
|
|
27644
|
+
"driven": false,
|
|
27645
|
+
"beacon": false
|
|
27646
|
+
}
|
|
27647
|
+
},
|
|
27648
|
+
{
|
|
27649
|
+
"id": "C3.tab-blank",
|
|
27650
|
+
"family": "C",
|
|
27651
|
+
"kind": "cdp",
|
|
27652
|
+
"scope": "any",
|
|
27653
|
+
"setup": [
|
|
27654
|
+
{
|
|
27655
|
+
"page": "tab",
|
|
27656
|
+
"url": "{ordinary}/doc?n=opener-{tag}"
|
|
27657
|
+
},
|
|
27658
|
+
{
|
|
27659
|
+
"cdp": "Target.setAutoAttach",
|
|
27660
|
+
"params": {
|
|
27661
|
+
"autoAttach": true,
|
|
27662
|
+
"waitForDebuggerOnStart": true,
|
|
27663
|
+
"flatten": true,
|
|
27664
|
+
"filter": [
|
|
27665
|
+
{
|
|
27666
|
+
"type": "page",
|
|
27667
|
+
"exclude": true
|
|
27668
|
+
},
|
|
27669
|
+
{}
|
|
27670
|
+
]
|
|
27671
|
+
},
|
|
27672
|
+
"session": "browser",
|
|
27673
|
+
"as": "tabs",
|
|
27674
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"]
|
|
27675
|
+
},
|
|
27676
|
+
{
|
|
27677
|
+
"children": [
|
|
27678
|
+
{
|
|
27679
|
+
"cdp": "Target.setAutoAttach",
|
|
27680
|
+
"params": {
|
|
27681
|
+
"autoAttach": true,
|
|
27682
|
+
"waitForDebuggerOnStart": true,
|
|
27683
|
+
"flatten": true,
|
|
27684
|
+
"filter": [{}]
|
|
27685
|
+
}
|
|
27686
|
+
}
|
|
27687
|
+
],
|
|
27688
|
+
"requires": ["autoAttach"],
|
|
27689
|
+
"where": {
|
|
27690
|
+
"type": "page"
|
|
27691
|
+
}
|
|
27692
|
+
}
|
|
27693
|
+
],
|
|
27694
|
+
"trigger": [
|
|
27695
|
+
{
|
|
27696
|
+
"cdp": "Target.createTarget",
|
|
27697
|
+
"params": {
|
|
27698
|
+
"url": "about:blank",
|
|
27699
|
+
"browserContextId": "{context}"
|
|
27700
|
+
},
|
|
27701
|
+
"session": "browser",
|
|
27702
|
+
"as": "created",
|
|
27703
|
+
"requires": ["browserSession"]
|
|
27704
|
+
},
|
|
27705
|
+
{
|
|
27706
|
+
"wait": 1500
|
|
27707
|
+
},
|
|
27708
|
+
{
|
|
27709
|
+
"cdp": "Page.navigate",
|
|
27710
|
+
"params": {
|
|
27711
|
+
"url": "{ordinary}/doc?n=blank-{tag}"
|
|
27712
|
+
},
|
|
27713
|
+
"session": "child",
|
|
27714
|
+
"as": "childNavigate",
|
|
27715
|
+
"requires": ["autoAttach"]
|
|
27716
|
+
},
|
|
27717
|
+
{
|
|
27718
|
+
"settle": {
|
|
27719
|
+
"served": "{ordinary}/doc?n=blank-{tag}",
|
|
27720
|
+
"ms": 5000,
|
|
27721
|
+
"required": true
|
|
27722
|
+
}
|
|
27723
|
+
}
|
|
27724
|
+
],
|
|
27725
|
+
"targets": ["ordinary"],
|
|
27726
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"],
|
|
27727
|
+
"observe": {
|
|
27728
|
+
"tab": {
|
|
27729
|
+
"means": "the client got Target.attachedToTarget for a tab target",
|
|
27730
|
+
"check": {
|
|
27731
|
+
"event": "Target.attachedToTarget",
|
|
27732
|
+
"where": {
|
|
27733
|
+
"params": {
|
|
27734
|
+
"targetInfo": {
|
|
27735
|
+
"type": "tab"
|
|
27736
|
+
}
|
|
27737
|
+
}
|
|
27738
|
+
},
|
|
27739
|
+
"observer": "client"
|
|
27740
|
+
}
|
|
27741
|
+
},
|
|
27742
|
+
"pageAttached": {
|
|
27743
|
+
"means": "the client got Target.attachedToTarget for a page under the tab",
|
|
27744
|
+
"check": {
|
|
27745
|
+
"event": "Target.attachedToTarget",
|
|
27746
|
+
"where": {
|
|
27747
|
+
"params": {
|
|
27748
|
+
"targetInfo": {
|
|
27749
|
+
"type": "page"
|
|
27750
|
+
}
|
|
27751
|
+
}
|
|
27752
|
+
},
|
|
27753
|
+
"observer": "client"
|
|
27754
|
+
}
|
|
27755
|
+
},
|
|
27756
|
+
"driven": {
|
|
27757
|
+
"means": "the unguarded observer finds the blank tab child at the URL the client navigated through its auto-attached page session",
|
|
27758
|
+
"check": {
|
|
27759
|
+
"expression": "location.href",
|
|
27760
|
+
"equals": "{ordinary}/doc?n=blank-{tag}",
|
|
27761
|
+
"via": "unguarded",
|
|
27762
|
+
"session": "child",
|
|
27763
|
+
"observer": "unguarded"
|
|
27764
|
+
}
|
|
27765
|
+
}
|
|
27766
|
+
},
|
|
27767
|
+
"live": "the stand-in served the document the client navigated the blank page to",
|
|
27768
|
+
"liveCheck": {
|
|
27769
|
+
"loaded": "{ordinary}/doc?n=blank-{tag}",
|
|
27770
|
+
"observer": "fixture"
|
|
27771
|
+
},
|
|
27772
|
+
"control": {
|
|
27773
|
+
"origin": "ordinary",
|
|
27774
|
+
"via": "unguarded",
|
|
27775
|
+
"expected": {
|
|
27776
|
+
"tab": true,
|
|
27777
|
+
"pageAttached": true,
|
|
27778
|
+
"driven": true
|
|
27779
|
+
}
|
|
27780
|
+
},
|
|
27781
|
+
"expected": {
|
|
27782
|
+
"tab": true,
|
|
27783
|
+
"pageAttached": true,
|
|
27784
|
+
"driven": true
|
|
27785
|
+
}
|
|
27786
|
+
},
|
|
27787
|
+
{
|
|
27788
|
+
"id": "C3.tab-protected.synthetic",
|
|
27789
|
+
"family": "C",
|
|
27790
|
+
"kind": "cdp",
|
|
27791
|
+
"scope": "any",
|
|
27792
|
+
"setup": [
|
|
27793
|
+
{
|
|
27794
|
+
"page": "tab",
|
|
27795
|
+
"url": "{ordinary}/doc?n=opener-{tag}"
|
|
27796
|
+
},
|
|
27797
|
+
{
|
|
27798
|
+
"cdp": "Target.setAutoAttach",
|
|
27799
|
+
"params": {
|
|
27800
|
+
"autoAttach": true,
|
|
27801
|
+
"waitForDebuggerOnStart": true,
|
|
27802
|
+
"flatten": true,
|
|
27803
|
+
"filter": [
|
|
27804
|
+
{
|
|
27805
|
+
"type": "page",
|
|
27806
|
+
"exclude": true
|
|
27807
|
+
},
|
|
27808
|
+
{}
|
|
27809
|
+
]
|
|
27810
|
+
},
|
|
27811
|
+
"session": "browser",
|
|
27812
|
+
"as": "tabs",
|
|
27813
|
+
"requires": ["syntheticAutoAttach", "browserSession", "stockSetup"]
|
|
27814
|
+
},
|
|
27815
|
+
{
|
|
27816
|
+
"children": [
|
|
27817
|
+
{
|
|
27818
|
+
"cdp": "Target.setAutoAttach",
|
|
27819
|
+
"params": {
|
|
27820
|
+
"autoAttach": true,
|
|
27821
|
+
"waitForDebuggerOnStart": true,
|
|
27822
|
+
"flatten": true,
|
|
27823
|
+
"filter": [{}]
|
|
27824
|
+
}
|
|
27825
|
+
}
|
|
27826
|
+
],
|
|
27827
|
+
"requires": ["syntheticAutoAttach"],
|
|
27828
|
+
"where": {
|
|
27829
|
+
"type": "page"
|
|
27830
|
+
}
|
|
27831
|
+
}
|
|
27832
|
+
],
|
|
27833
|
+
"trigger": [
|
|
27834
|
+
{
|
|
27835
|
+
"cdp": "Target.createTarget",
|
|
27836
|
+
"params": {
|
|
27837
|
+
"url": "{target}/doc?n={tag}",
|
|
27838
|
+
"browserContextId": "{context}"
|
|
27839
|
+
},
|
|
27840
|
+
"session": "browser",
|
|
27841
|
+
"as": "created",
|
|
27842
|
+
"requires": ["browserSession"]
|
|
27843
|
+
},
|
|
27844
|
+
{
|
|
27845
|
+
"wait": 2000
|
|
27846
|
+
}
|
|
27847
|
+
],
|
|
27848
|
+
"targets": ["seven", "vault"],
|
|
27849
|
+
"requires": ["syntheticAutoAttach", "browserSession", "stockSetup"],
|
|
27850
|
+
"observe": {
|
|
27851
|
+
"tab": {
|
|
27852
|
+
"means": "the client got Target.attachedToTarget for a tab target",
|
|
27853
|
+
"check": {
|
|
27854
|
+
"event": "Target.attachedToTarget",
|
|
27855
|
+
"where": {
|
|
27856
|
+
"params": {
|
|
27857
|
+
"targetInfo": {
|
|
27858
|
+
"type": "tab"
|
|
27859
|
+
}
|
|
27860
|
+
}
|
|
27861
|
+
},
|
|
27862
|
+
"observer": "client"
|
|
27863
|
+
}
|
|
27864
|
+
},
|
|
27865
|
+
"pageAttached": {
|
|
27866
|
+
"means": "the client kept a page session for the protected tab child",
|
|
27867
|
+
"check": {
|
|
27868
|
+
"event": "Target.attachedToTarget",
|
|
27869
|
+
"where": {
|
|
27870
|
+
"params": {
|
|
27871
|
+
"targetInfo": {
|
|
27872
|
+
"type": "page",
|
|
27873
|
+
"url": {
|
|
27874
|
+
"$contains": "{target}/doc"
|
|
27875
|
+
}
|
|
27876
|
+
}
|
|
27877
|
+
}
|
|
27878
|
+
},
|
|
27879
|
+
"observer": "client"
|
|
27880
|
+
}
|
|
27881
|
+
},
|
|
27882
|
+
"driven": {
|
|
27883
|
+
"means": "the unguarded observer finds the created page on {target}",
|
|
27884
|
+
"check": {
|
|
27885
|
+
"expression": "location.href",
|
|
27886
|
+
"equals": {
|
|
27887
|
+
"$contains": "{target}/doc"
|
|
27888
|
+
},
|
|
27889
|
+
"via": "unguarded",
|
|
27890
|
+
"session": "child",
|
|
27891
|
+
"observer": "unguarded"
|
|
27892
|
+
}
|
|
27893
|
+
},
|
|
27894
|
+
"beacon": {
|
|
27895
|
+
"means": "a beacon from {target}",
|
|
27896
|
+
"check": {
|
|
27897
|
+
"beacon": "{target}",
|
|
27898
|
+
"observer": "fixture"
|
|
27899
|
+
}
|
|
27900
|
+
}
|
|
27901
|
+
},
|
|
27902
|
+
"live": "the stand-in served {target}/doc?n={tag}, or the tab was held without a client page session",
|
|
27903
|
+
"liveCheck": {
|
|
27904
|
+
"any": [
|
|
27905
|
+
{
|
|
27906
|
+
"loaded": "{target}/doc?n={tag}",
|
|
27907
|
+
"observer": "fixture"
|
|
27908
|
+
},
|
|
27909
|
+
{
|
|
27910
|
+
"pre": "{target}/doc?n={tag}",
|
|
27911
|
+
"observer": "fixture"
|
|
27912
|
+
}
|
|
27913
|
+
],
|
|
27914
|
+
"observer": "client"
|
|
27915
|
+
},
|
|
27916
|
+
"control": {
|
|
27917
|
+
"origin": "ordinary",
|
|
27918
|
+
"via": "unguarded",
|
|
27919
|
+
"expected": {
|
|
27920
|
+
"tab": true,
|
|
27921
|
+
"pageAttached": true,
|
|
27922
|
+
"driven": true,
|
|
27923
|
+
"beacon": false
|
|
27924
|
+
}
|
|
27925
|
+
},
|
|
27926
|
+
"expected": {
|
|
27927
|
+
"tab": true,
|
|
27928
|
+
"pageAttached": false,
|
|
27929
|
+
"driven": false,
|
|
27930
|
+
"beacon": false
|
|
27931
|
+
}
|
|
27932
|
+
},
|
|
27933
|
+
{
|
|
27934
|
+
"id": "C3.tab-blank.synthetic",
|
|
27935
|
+
"family": "C",
|
|
27936
|
+
"kind": "cdp",
|
|
27937
|
+
"scope": "any",
|
|
27938
|
+
"setup": [
|
|
27939
|
+
{
|
|
27940
|
+
"page": "tab",
|
|
27941
|
+
"url": "{ordinary}/doc?n=opener-{tag}"
|
|
27942
|
+
},
|
|
27943
|
+
{
|
|
27944
|
+
"cdp": "Target.setAutoAttach",
|
|
27945
|
+
"params": {
|
|
27946
|
+
"autoAttach": true,
|
|
27947
|
+
"waitForDebuggerOnStart": true,
|
|
27948
|
+
"flatten": true,
|
|
27949
|
+
"filter": [
|
|
27950
|
+
{
|
|
27951
|
+
"type": "page",
|
|
27952
|
+
"exclude": true
|
|
27953
|
+
},
|
|
27954
|
+
{}
|
|
27955
|
+
]
|
|
27956
|
+
},
|
|
27957
|
+
"session": "browser",
|
|
27958
|
+
"as": "tabs",
|
|
27959
|
+
"requires": ["syntheticAutoAttach", "browserSession", "stockSetup"]
|
|
27960
|
+
},
|
|
27961
|
+
{
|
|
27962
|
+
"children": [
|
|
27963
|
+
{
|
|
27964
|
+
"cdp": "Target.setAutoAttach",
|
|
27965
|
+
"params": {
|
|
27966
|
+
"autoAttach": true,
|
|
27967
|
+
"waitForDebuggerOnStart": true,
|
|
27968
|
+
"flatten": true,
|
|
27969
|
+
"filter": [{}]
|
|
27970
|
+
}
|
|
27971
|
+
}
|
|
27972
|
+
],
|
|
27973
|
+
"requires": ["syntheticAutoAttach"],
|
|
27974
|
+
"where": {
|
|
27975
|
+
"type": "page"
|
|
27976
|
+
}
|
|
27977
|
+
}
|
|
27978
|
+
],
|
|
27979
|
+
"trigger": [
|
|
27980
|
+
{
|
|
27981
|
+
"cdp": "Target.createTarget",
|
|
27982
|
+
"params": {
|
|
27983
|
+
"url": "about:blank",
|
|
27984
|
+
"browserContextId": "{context}"
|
|
27985
|
+
},
|
|
27986
|
+
"session": "browser",
|
|
27987
|
+
"as": "created",
|
|
27988
|
+
"requires": ["browserSession"]
|
|
27989
|
+
},
|
|
27990
|
+
{
|
|
27991
|
+
"wait": 1500
|
|
27992
|
+
},
|
|
27993
|
+
{
|
|
27994
|
+
"cdp": "Page.navigate",
|
|
27995
|
+
"params": {
|
|
27996
|
+
"url": "{ordinary}/doc?n=blank-{tag}"
|
|
27997
|
+
},
|
|
27998
|
+
"session": "child",
|
|
27999
|
+
"as": "childNavigate",
|
|
28000
|
+
"requires": ["syntheticAutoAttach"]
|
|
28001
|
+
},
|
|
28002
|
+
{
|
|
28003
|
+
"settle": {
|
|
28004
|
+
"served": "{ordinary}/doc?n=blank-{tag}",
|
|
28005
|
+
"ms": 5000,
|
|
28006
|
+
"required": true
|
|
28007
|
+
}
|
|
28008
|
+
}
|
|
28009
|
+
],
|
|
28010
|
+
"targets": ["ordinary"],
|
|
28011
|
+
"requires": ["syntheticAutoAttach", "browserSession", "stockSetup"],
|
|
28012
|
+
"observe": {
|
|
28013
|
+
"tab": {
|
|
28014
|
+
"means": "the client got Target.attachedToTarget for a tab target",
|
|
28015
|
+
"check": {
|
|
28016
|
+
"event": "Target.attachedToTarget",
|
|
28017
|
+
"where": {
|
|
28018
|
+
"params": {
|
|
28019
|
+
"targetInfo": {
|
|
28020
|
+
"type": "tab"
|
|
28021
|
+
}
|
|
28022
|
+
}
|
|
28023
|
+
},
|
|
28024
|
+
"observer": "client"
|
|
28025
|
+
}
|
|
28026
|
+
},
|
|
28027
|
+
"pageAttached": {
|
|
28028
|
+
"means": "the client got Target.attachedToTarget for a page under the tab",
|
|
28029
|
+
"check": {
|
|
28030
|
+
"event": "Target.attachedToTarget",
|
|
28031
|
+
"where": {
|
|
28032
|
+
"params": {
|
|
28033
|
+
"targetInfo": {
|
|
28034
|
+
"type": "page"
|
|
28035
|
+
}
|
|
28036
|
+
}
|
|
28037
|
+
},
|
|
28038
|
+
"observer": "client"
|
|
28039
|
+
}
|
|
28040
|
+
},
|
|
28041
|
+
"driven": {
|
|
28042
|
+
"means": "the unguarded observer finds the blank tab child at the URL the client navigated through its auto-attached page session",
|
|
28043
|
+
"check": {
|
|
28044
|
+
"expression": "location.href",
|
|
28045
|
+
"equals": "{ordinary}/doc?n=blank-{tag}",
|
|
28046
|
+
"via": "unguarded",
|
|
28047
|
+
"session": "child",
|
|
28048
|
+
"observer": "unguarded"
|
|
28049
|
+
}
|
|
28050
|
+
}
|
|
28051
|
+
},
|
|
28052
|
+
"live": "the stand-in served the document the client navigated the blank page to",
|
|
28053
|
+
"liveCheck": {
|
|
28054
|
+
"loaded": "{ordinary}/doc?n=blank-{tag}",
|
|
28055
|
+
"observer": "fixture"
|
|
28056
|
+
},
|
|
28057
|
+
"control": {
|
|
28058
|
+
"origin": "ordinary",
|
|
28059
|
+
"via": "unguarded",
|
|
28060
|
+
"expected": {
|
|
28061
|
+
"tab": true,
|
|
28062
|
+
"pageAttached": true,
|
|
28063
|
+
"driven": true
|
|
28064
|
+
}
|
|
28065
|
+
},
|
|
28066
|
+
"expected": {
|
|
28067
|
+
"tab": true,
|
|
28068
|
+
"pageAttached": true,
|
|
28069
|
+
"driven": true
|
|
28070
|
+
}
|
|
28071
|
+
},
|
|
28072
|
+
{
|
|
28073
|
+
"id": "C3.tab-worker-leak",
|
|
28074
|
+
"family": "C",
|
|
28075
|
+
"kind": "cdp",
|
|
28076
|
+
"scope": "any",
|
|
28077
|
+
"setup": [
|
|
28078
|
+
{
|
|
28079
|
+
"page": "tab",
|
|
28080
|
+
"url": "{ordinary}/doc?n=opener-{tag}"
|
|
28081
|
+
},
|
|
28082
|
+
{
|
|
28083
|
+
"cdp": "Target.setAutoAttach",
|
|
28084
|
+
"params": {
|
|
28085
|
+
"autoAttach": true,
|
|
28086
|
+
"waitForDebuggerOnStart": true,
|
|
28087
|
+
"flatten": true,
|
|
28088
|
+
"filter": [
|
|
28089
|
+
{
|
|
28090
|
+
"type": "page",
|
|
28091
|
+
"exclude": true
|
|
28092
|
+
},
|
|
28093
|
+
{}
|
|
28094
|
+
]
|
|
28095
|
+
},
|
|
28096
|
+
"session": "browser",
|
|
28097
|
+
"as": "tabs",
|
|
28098
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"]
|
|
28099
|
+
},
|
|
28100
|
+
{
|
|
28101
|
+
"children": [
|
|
28102
|
+
{
|
|
28103
|
+
"cdp": "Target.setAutoAttach",
|
|
28104
|
+
"params": {
|
|
28105
|
+
"autoAttach": true,
|
|
28106
|
+
"waitForDebuggerOnStart": true,
|
|
28107
|
+
"flatten": true,
|
|
28108
|
+
"filter": [{}]
|
|
28109
|
+
}
|
|
28110
|
+
}
|
|
28111
|
+
],
|
|
28112
|
+
"requires": ["autoAttach"],
|
|
28113
|
+
"where": {
|
|
28114
|
+
"type": "page"
|
|
28115
|
+
}
|
|
28116
|
+
}
|
|
28117
|
+
],
|
|
28118
|
+
"trigger": [
|
|
28119
|
+
{
|
|
28120
|
+
"cdp": "Target.createTarget",
|
|
28121
|
+
"params": {
|
|
28122
|
+
"url": "{ordinary}/doc?n=host-{tag}",
|
|
28123
|
+
"browserContextId": "{context}"
|
|
28124
|
+
},
|
|
28125
|
+
"session": "browser",
|
|
28126
|
+
"as": "created",
|
|
28127
|
+
"requires": ["browserSession"]
|
|
28128
|
+
},
|
|
28129
|
+
{
|
|
28130
|
+
"wait": 1500
|
|
28131
|
+
},
|
|
28132
|
+
{
|
|
28133
|
+
"cdp": "Runtime.evaluate",
|
|
28134
|
+
"params": {
|
|
28135
|
+
"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'; })()",
|
|
28136
|
+
"awaitPromise": true,
|
|
28137
|
+
"returnByValue": true
|
|
28138
|
+
},
|
|
28139
|
+
"session": "child",
|
|
28140
|
+
"as": "spawned",
|
|
28141
|
+
"requires": ["autoAttach"]
|
|
28142
|
+
},
|
|
28143
|
+
{
|
|
28144
|
+
"wait": 1500
|
|
28145
|
+
}
|
|
28146
|
+
],
|
|
28147
|
+
"targets": ["seven", "vault"],
|
|
28148
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"],
|
|
28149
|
+
"observe": {
|
|
28150
|
+
"admitted": {
|
|
28151
|
+
"means": "the guard answered tabs, created and spawned without an error",
|
|
28152
|
+
"check": {
|
|
28153
|
+
"all": [
|
|
28154
|
+
{
|
|
28155
|
+
"result": "tabs",
|
|
28156
|
+
"path": "ok",
|
|
28157
|
+
"equals": true,
|
|
28158
|
+
"observer": "client"
|
|
28159
|
+
},
|
|
28160
|
+
{
|
|
28161
|
+
"result": "created",
|
|
28162
|
+
"path": "ok",
|
|
28163
|
+
"equals": true,
|
|
28164
|
+
"observer": "client"
|
|
28165
|
+
},
|
|
28166
|
+
{
|
|
28167
|
+
"result": "spawned",
|
|
28168
|
+
"path": "ok",
|
|
28169
|
+
"equals": true,
|
|
28170
|
+
"observer": "client"
|
|
28171
|
+
}
|
|
28172
|
+
],
|
|
28173
|
+
"observer": "client"
|
|
28174
|
+
}
|
|
28175
|
+
},
|
|
28176
|
+
"workerAttached": {
|
|
28177
|
+
"means": "the client got Target.attachedToTarget for a worker through the broad filter",
|
|
28178
|
+
"check": {
|
|
28179
|
+
"event": "Target.attachedToTarget",
|
|
28180
|
+
"where": {
|
|
28181
|
+
"params": {
|
|
28182
|
+
"targetInfo": {
|
|
28183
|
+
"type": "worker"
|
|
28184
|
+
}
|
|
28185
|
+
}
|
|
28186
|
+
},
|
|
28187
|
+
"observer": "client"
|
|
28188
|
+
}
|
|
28189
|
+
},
|
|
28190
|
+
"workerExists": {
|
|
28191
|
+
"means": "the unguarded observer finds the page still holds the spawned Worker",
|
|
28192
|
+
"check": {
|
|
28193
|
+
"expression": "typeof window.__sliccW",
|
|
28194
|
+
"equals": "object",
|
|
28195
|
+
"via": "unguarded",
|
|
28196
|
+
"session": "child",
|
|
28197
|
+
"observer": "unguarded"
|
|
28198
|
+
}
|
|
28199
|
+
}
|
|
28200
|
+
},
|
|
28201
|
+
"live": "the stand-in served the host document under the tab",
|
|
28202
|
+
"liveCheck": {
|
|
28203
|
+
"loaded": "{ordinary}/doc?n=host-{tag}",
|
|
28204
|
+
"observer": "fixture"
|
|
28205
|
+
},
|
|
28206
|
+
"control": {
|
|
28207
|
+
"origin": "ordinary",
|
|
28208
|
+
"via": "unguarded",
|
|
28209
|
+
"expected": {
|
|
28210
|
+
"admitted": true,
|
|
28211
|
+
"workerAttached": true,
|
|
28212
|
+
"workerExists": true
|
|
28213
|
+
}
|
|
28214
|
+
},
|
|
28215
|
+
"expected": {
|
|
28216
|
+
"admitted": true,
|
|
28217
|
+
"workerAttached": false,
|
|
28218
|
+
"workerExists": true
|
|
28219
|
+
}
|
|
28220
|
+
},
|
|
28221
|
+
{
|
|
28222
|
+
"id": "C3.tab-iframe-leak",
|
|
28223
|
+
"family": "C",
|
|
28224
|
+
"kind": "cdp",
|
|
28225
|
+
"scope": "any",
|
|
28226
|
+
"setup": [
|
|
28227
|
+
{
|
|
28228
|
+
"page": "tab",
|
|
28229
|
+
"url": "{ordinary}/doc?n=opener-{tag}"
|
|
28230
|
+
},
|
|
28231
|
+
{
|
|
28232
|
+
"cdp": "Target.setAutoAttach",
|
|
28233
|
+
"params": {
|
|
28234
|
+
"autoAttach": true,
|
|
28235
|
+
"waitForDebuggerOnStart": true,
|
|
28236
|
+
"flatten": true,
|
|
28237
|
+
"filter": [
|
|
28238
|
+
{
|
|
28239
|
+
"type": "page",
|
|
28240
|
+
"exclude": true
|
|
28241
|
+
},
|
|
28242
|
+
{}
|
|
28243
|
+
]
|
|
28244
|
+
},
|
|
28245
|
+
"session": "browser",
|
|
28246
|
+
"as": "tabs",
|
|
28247
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"]
|
|
28248
|
+
},
|
|
28249
|
+
{
|
|
28250
|
+
"children": [
|
|
28251
|
+
{
|
|
28252
|
+
"cdp": "Target.setAutoAttach",
|
|
28253
|
+
"params": {
|
|
28254
|
+
"autoAttach": true,
|
|
28255
|
+
"waitForDebuggerOnStart": true,
|
|
28256
|
+
"flatten": true,
|
|
28257
|
+
"filter": [{}]
|
|
28258
|
+
}
|
|
28259
|
+
}
|
|
28260
|
+
],
|
|
28261
|
+
"requires": ["autoAttach"],
|
|
28262
|
+
"where": {
|
|
28263
|
+
"type": "page"
|
|
28264
|
+
}
|
|
28265
|
+
}
|
|
28266
|
+
],
|
|
28267
|
+
"trigger": [
|
|
28268
|
+
{
|
|
28269
|
+
"cdp": "Target.createTarget",
|
|
28270
|
+
"params": {
|
|
28271
|
+
"url": "{ordinary}/doc?n=host-{tag}",
|
|
28272
|
+
"browserContextId": "{context}"
|
|
28273
|
+
},
|
|
28274
|
+
"session": "browser",
|
|
28275
|
+
"as": "created",
|
|
28276
|
+
"requires": ["browserSession"]
|
|
28277
|
+
},
|
|
28278
|
+
{
|
|
28279
|
+
"wait": 1500
|
|
28280
|
+
},
|
|
28281
|
+
{
|
|
28282
|
+
"cdp": "Runtime.evaluate",
|
|
28283
|
+
"params": {
|
|
28284
|
+
"expression": "(() => { const f = document.createElement('iframe'); f.src = '{seven}/doc?n=frame-{tag}'; document.body.appendChild(f); return 'framed'; })()",
|
|
28285
|
+
"returnByValue": true
|
|
28286
|
+
},
|
|
28287
|
+
"session": "child",
|
|
28288
|
+
"as": "framed",
|
|
28289
|
+
"requires": ["autoAttach"]
|
|
28290
|
+
},
|
|
28291
|
+
{
|
|
28292
|
+
"wait": 2000
|
|
28293
|
+
}
|
|
28294
|
+
],
|
|
28295
|
+
"targets": ["seven", "vault"],
|
|
28296
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"],
|
|
28297
|
+
"observe": {
|
|
28298
|
+
"admitted": {
|
|
28299
|
+
"means": "the guard answered tabs, created and framed without an error",
|
|
28300
|
+
"check": {
|
|
28301
|
+
"all": [
|
|
28302
|
+
{
|
|
28303
|
+
"result": "tabs",
|
|
28304
|
+
"path": "ok",
|
|
28305
|
+
"equals": true,
|
|
28306
|
+
"observer": "client"
|
|
28307
|
+
},
|
|
28308
|
+
{
|
|
28309
|
+
"result": "created",
|
|
28310
|
+
"path": "ok",
|
|
28311
|
+
"equals": true,
|
|
28312
|
+
"observer": "client"
|
|
28313
|
+
},
|
|
28314
|
+
{
|
|
28315
|
+
"result": "framed",
|
|
28316
|
+
"path": "ok",
|
|
28317
|
+
"equals": true,
|
|
28318
|
+
"observer": "client"
|
|
28319
|
+
}
|
|
28320
|
+
],
|
|
28321
|
+
"observer": "client"
|
|
28322
|
+
}
|
|
28323
|
+
},
|
|
28324
|
+
"iframeExists": {
|
|
28325
|
+
"means": "the unguarded observer finds the iframe element in the host document",
|
|
28326
|
+
"check": {
|
|
28327
|
+
"expression": "!!document.querySelector('iframe[src*=\"frame-{tag}\"]')",
|
|
28328
|
+
"equals": true,
|
|
28329
|
+
"via": "unguarded",
|
|
28330
|
+
"session": "child",
|
|
28331
|
+
"observer": "unguarded"
|
|
28332
|
+
}
|
|
28333
|
+
},
|
|
28334
|
+
"iframeAttached": {
|
|
28335
|
+
"means": "the client got Target.attachedToTarget for an iframe through the broad filter",
|
|
28336
|
+
"check": {
|
|
28337
|
+
"event": "Target.attachedToTarget",
|
|
28338
|
+
"where": {
|
|
28339
|
+
"params": {
|
|
28340
|
+
"targetInfo": {
|
|
28341
|
+
"type": "iframe"
|
|
28342
|
+
}
|
|
28343
|
+
}
|
|
28344
|
+
},
|
|
28345
|
+
"observer": "client"
|
|
28346
|
+
}
|
|
28347
|
+
}
|
|
28348
|
+
},
|
|
28349
|
+
"live": "the stand-in served the host document under the tab",
|
|
28350
|
+
"liveCheck": {
|
|
28351
|
+
"loaded": "{ordinary}/doc?n=host-{tag}",
|
|
28352
|
+
"observer": "fixture"
|
|
28353
|
+
},
|
|
28354
|
+
"control": {
|
|
28355
|
+
"origin": "ordinary",
|
|
28356
|
+
"via": "unguarded",
|
|
28357
|
+
"expected": {
|
|
28358
|
+
"admitted": true,
|
|
28359
|
+
"iframeExists": true,
|
|
28360
|
+
"iframeAttached": true
|
|
28361
|
+
}
|
|
28362
|
+
},
|
|
28363
|
+
"expected": {
|
|
28364
|
+
"admitted": true,
|
|
28365
|
+
"iframeExists": true,
|
|
28366
|
+
"iframeAttached": false
|
|
28367
|
+
}
|
|
28368
|
+
},
|
|
28369
|
+
{
|
|
28370
|
+
"id": "C3.tab-service-worker-leak",
|
|
28371
|
+
"family": "C",
|
|
28372
|
+
"kind": "cdp",
|
|
28373
|
+
"scope": "any",
|
|
28374
|
+
"setup": [
|
|
28375
|
+
{
|
|
28376
|
+
"page": "tab",
|
|
28377
|
+
"url": "{ordinary}/doc?n=opener-{tag}"
|
|
28378
|
+
},
|
|
28379
|
+
{
|
|
28380
|
+
"cdp": "Target.setAutoAttach",
|
|
28381
|
+
"params": {
|
|
28382
|
+
"autoAttach": true,
|
|
28383
|
+
"waitForDebuggerOnStart": true,
|
|
28384
|
+
"flatten": true,
|
|
28385
|
+
"filter": [
|
|
28386
|
+
{
|
|
28387
|
+
"type": "page",
|
|
28388
|
+
"exclude": true
|
|
28389
|
+
},
|
|
28390
|
+
{}
|
|
28391
|
+
]
|
|
28392
|
+
},
|
|
28393
|
+
"session": "browser",
|
|
28394
|
+
"as": "tabs",
|
|
28395
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"]
|
|
28396
|
+
},
|
|
28397
|
+
{
|
|
28398
|
+
"children": [
|
|
28399
|
+
{
|
|
28400
|
+
"cdp": "Target.setAutoAttach",
|
|
28401
|
+
"params": {
|
|
28402
|
+
"autoAttach": true,
|
|
28403
|
+
"waitForDebuggerOnStart": true,
|
|
28404
|
+
"flatten": true,
|
|
28405
|
+
"filter": [{}]
|
|
28406
|
+
}
|
|
28407
|
+
}
|
|
28408
|
+
],
|
|
28409
|
+
"requires": ["autoAttach"],
|
|
28410
|
+
"where": {
|
|
28411
|
+
"type": "page"
|
|
28412
|
+
}
|
|
28413
|
+
}
|
|
28414
|
+
],
|
|
28415
|
+
"trigger": [
|
|
28416
|
+
{
|
|
28417
|
+
"cdp": "Target.createTarget",
|
|
28418
|
+
"params": {
|
|
28419
|
+
"url": "{ordinary}/doc?n=host-{tag}",
|
|
28420
|
+
"browserContextId": "{context}"
|
|
28421
|
+
},
|
|
28422
|
+
"session": "browser",
|
|
28423
|
+
"as": "created",
|
|
28424
|
+
"requires": ["browserSession"]
|
|
28425
|
+
},
|
|
28426
|
+
{
|
|
28427
|
+
"wait": 1500
|
|
28428
|
+
},
|
|
28429
|
+
{
|
|
28430
|
+
"cdp": "Runtime.evaluate",
|
|
28431
|
+
"params": {
|
|
28432
|
+
"expression": "(async()=>{ try { await navigator.serviceWorker.register('/sw.js?n={tag}',{scope:'/'}); return 'registered'; } catch(e){ return 'err:'+e.message; } })()",
|
|
28433
|
+
"awaitPromise": true,
|
|
28434
|
+
"returnByValue": true
|
|
28435
|
+
},
|
|
28436
|
+
"session": "child",
|
|
28437
|
+
"as": "registered",
|
|
28438
|
+
"requires": ["autoAttach", "secureOrigin"]
|
|
28439
|
+
},
|
|
28440
|
+
{
|
|
28441
|
+
"wait": 2500
|
|
28442
|
+
}
|
|
28443
|
+
],
|
|
28444
|
+
"targets": ["seven", "vault"],
|
|
28445
|
+
"requires": ["autoAttach", "browserSession", "stockSetup", "secureOrigin"],
|
|
28446
|
+
"observe": {
|
|
28447
|
+
"admitted": {
|
|
28448
|
+
"means": "the guard answered tabs, created and registered without an error",
|
|
28449
|
+
"check": {
|
|
28450
|
+
"all": [
|
|
28451
|
+
{
|
|
28452
|
+
"result": "tabs",
|
|
28453
|
+
"path": "ok",
|
|
28454
|
+
"equals": true,
|
|
28455
|
+
"observer": "client"
|
|
28456
|
+
},
|
|
28457
|
+
{
|
|
28458
|
+
"result": "created",
|
|
28459
|
+
"path": "ok",
|
|
28460
|
+
"equals": true,
|
|
28461
|
+
"observer": "client"
|
|
28462
|
+
},
|
|
28463
|
+
{
|
|
28464
|
+
"result": "registered",
|
|
28465
|
+
"path": "result.result.value",
|
|
28466
|
+
"equals": "registered",
|
|
28467
|
+
"observer": "client"
|
|
28468
|
+
}
|
|
28469
|
+
],
|
|
28470
|
+
"observer": "client"
|
|
28471
|
+
}
|
|
28472
|
+
},
|
|
28473
|
+
"workerExists": {
|
|
28474
|
+
"means": "the unguarded observer finds a service worker registration for the host",
|
|
28475
|
+
"check": {
|
|
28476
|
+
"expression": "(async()=>{ try { const r=await navigator.serviceWorker.getRegistration(); return !!(r&&String(r.scope||'').length); } catch { return false; } })()",
|
|
28477
|
+
"equals": true,
|
|
28478
|
+
"via": "unguarded",
|
|
28479
|
+
"session": "child",
|
|
28480
|
+
"observer": "unguarded"
|
|
28481
|
+
}
|
|
28482
|
+
},
|
|
28483
|
+
"workerAttached": {
|
|
28484
|
+
"means": "the client got Target.attachedToTarget for a service_worker through the broad filter",
|
|
28485
|
+
"check": {
|
|
28486
|
+
"event": "Target.attachedToTarget",
|
|
28487
|
+
"where": {
|
|
28488
|
+
"params": {
|
|
28489
|
+
"targetInfo": {
|
|
28490
|
+
"type": "service_worker",
|
|
28491
|
+
"url": {
|
|
28492
|
+
"$contains": "/sw.js"
|
|
28493
|
+
}
|
|
28494
|
+
}
|
|
28495
|
+
}
|
|
28496
|
+
},
|
|
28497
|
+
"observer": "client"
|
|
28498
|
+
}
|
|
28499
|
+
}
|
|
28500
|
+
},
|
|
28501
|
+
"live": "the stand-in served the host document under the tab",
|
|
28502
|
+
"liveCheck": {
|
|
28503
|
+
"loaded": "{ordinary}/doc?n=host-{tag}",
|
|
28504
|
+
"observer": "fixture"
|
|
28505
|
+
},
|
|
28506
|
+
"control": {
|
|
28507
|
+
"origin": "ordinary",
|
|
28508
|
+
"via": "unguarded",
|
|
28509
|
+
"expected": {
|
|
28510
|
+
"admitted": true,
|
|
28511
|
+
"workerExists": true,
|
|
28512
|
+
"workerAttached": true
|
|
28513
|
+
}
|
|
28514
|
+
},
|
|
28515
|
+
"expected": {
|
|
28516
|
+
"admitted": true,
|
|
28517
|
+
"workerExists": true,
|
|
28518
|
+
"workerAttached": false
|
|
28519
|
+
}
|
|
24738
28520
|
}
|
|
24739
28521
|
]
|
|
24740
28522
|
}
|