@ai-ecoverse/slicc-browsers 1.21.0 → 1.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/guard-vectors.json +935 -54
- package/package.json +2 -2
- package/schema/guard-vectors.schema.json +21 -0
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ The browser knowledge that SLICC's tools share. SLICC drives a real Chromium bro
|
|
|
7
7
|
- which origins browser control must **never** touch, starting with seven's own origin and the vault;
|
|
8
8
|
- how to prove that a CDP guard really keeps a client away from them.
|
|
9
9
|
|
|
10
|
-
These programs can't share code, so they share data: one catalog, four sets
|
|
10
|
+
These programs can't share code, so they share data: one catalog, four vector sets and schemas, as a Go module, Rust crate and npm package at one version.
|
|
11
11
|
|
|
12
12
|
| who | uses it for |
|
|
13
13
|
| --- | --- |
|
package/guard-vectors.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"setVersion": "1.21.
|
|
3
|
+
"setVersion": "1.21.1",
|
|
4
4
|
"sources": [
|
|
5
5
|
{
|
|
6
6
|
"repo": "ai-ecoverse/slicc-cli",
|
|
@@ -26267,7 +26267,7 @@
|
|
|
26267
26267
|
{
|
|
26268
26268
|
"cdp": "Page.addScriptToEvaluateOnNewDocument",
|
|
26269
26269
|
"params": {
|
|
26270
|
-
"source": "// slicc
|
|
26270
|
+
"source": "// slicc
|
|
26271
26271
|
"worldName": "slicc-bound-ls-{tag}"
|
|
26272
26272
|
},
|
|
26273
26273
|
"as": "boundLs",
|
|
@@ -26279,7 +26279,7 @@
|
|
|
26279
26279
|
{
|
|
26280
26280
|
"cdp": "Page.addScriptToEvaluateOnNewDocument",
|
|
26281
26281
|
"params": {
|
|
26282
|
-
"source": "// slicc
|
|
26282
|
+
"source": "// slicc
|
|
26283
26283
|
"worldName": "slicc-bound-ps-{tag}"
|
|
26284
26284
|
},
|
|
26285
26285
|
"as": "boundPs",
|
|
@@ -26315,7 +26315,7 @@
|
|
|
26315
26315
|
{
|
|
26316
26316
|
"cdp": "Page.addScriptToEvaluateOnNewDocument",
|
|
26317
26317
|
"params": {
|
|
26318
|
-
"source": "
|
|
26318
|
+
"source": "\ufefffetch(new URL('/doc?n=bound-bom-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-bom-{tag}\n",
|
|
26319
26319
|
"worldName": "slicc-bound-bom-{tag}"
|
|
26320
26320
|
},
|
|
26321
26321
|
"as": "boundBom",
|
|
@@ -26528,7 +26528,12 @@
|
|
|
26528
26528
|
"trigger": [
|
|
26529
26529
|
{
|
|
26530
26530
|
"page": "navigate",
|
|
26531
|
-
"url": "{target}/doc?n={tag}"
|
|
26531
|
+
"url": "{target}/doc?n={tag}",
|
|
26532
|
+
"as": "nav",
|
|
26533
|
+
"refusable": true,
|
|
26534
|
+
"refusal": {
|
|
26535
|
+
"match": "refused"
|
|
26536
|
+
}
|
|
26532
26537
|
},
|
|
26533
26538
|
{
|
|
26534
26539
|
"settle": {
|
|
@@ -26569,6 +26574,10 @@
|
|
|
26569
26574
|
"live": "the stand-in served {target}/doc?n={tag}, or the guard refused the protected navigation (pre + blocked), or refused a refusable setup step",
|
|
26570
26575
|
"liveCheck": {
|
|
26571
26576
|
"any": [
|
|
26577
|
+
{
|
|
26578
|
+
"refused": ["nav"],
|
|
26579
|
+
"observer": "client"
|
|
26580
|
+
},
|
|
26572
26581
|
{
|
|
26573
26582
|
"loaded": "{target}/doc?n={tag}",
|
|
26574
26583
|
"observer": "fixture"
|
|
@@ -26631,6 +26640,137 @@
|
|
|
26631
26640
|
},
|
|
26632
26641
|
"designDependent": ["loaded"]
|
|
26633
26642
|
},
|
|
26643
|
+
{
|
|
26644
|
+
"id": "E7.init-world-carry.script",
|
|
26645
|
+
"family": "E",
|
|
26646
|
+
"kind": "cdp",
|
|
26647
|
+
"scope": "any",
|
|
26648
|
+
"setup": [
|
|
26649
|
+
{
|
|
26650
|
+
"page": "tab",
|
|
26651
|
+
"url": "{ordinary}/doc?n=start-{tag}"
|
|
26652
|
+
},
|
|
26653
|
+
{
|
|
26654
|
+
"observer": "watch"
|
|
26655
|
+
},
|
|
26656
|
+
{
|
|
26657
|
+
"cdp": "Page.enable"
|
|
26658
|
+
},
|
|
26659
|
+
{
|
|
26660
|
+
"cdp": "Runtime.enable"
|
|
26661
|
+
},
|
|
26662
|
+
{
|
|
26663
|
+
"cdp": "Page.addScriptToEvaluateOnNewDocument",
|
|
26664
|
+
"params": {
|
|
26665
|
+
"source": "",
|
|
26666
|
+
"worldName": "slicc-carry-{tag}"
|
|
26667
|
+
},
|
|
26668
|
+
"as": "world",
|
|
26669
|
+
"requires": ["stockSetup"]
|
|
26670
|
+
}
|
|
26671
|
+
],
|
|
26672
|
+
"trigger": [
|
|
26673
|
+
{
|
|
26674
|
+
"page": "href",
|
|
26675
|
+
"url": "{target}/doc?n={tag}"
|
|
26676
|
+
},
|
|
26677
|
+
{
|
|
26678
|
+
"settle": {
|
|
26679
|
+
"title": "doc",
|
|
26680
|
+
"ms": 5000,
|
|
26681
|
+
"or": {
|
|
26682
|
+
"served": "{target}/doc?n={tag}",
|
|
26683
|
+
"observer": "fixture"
|
|
26684
|
+
}
|
|
26685
|
+
}
|
|
26686
|
+
},
|
|
26687
|
+
{
|
|
26688
|
+
"settle": {
|
|
26689
|
+
"ms": 500
|
|
26690
|
+
}
|
|
26691
|
+
}
|
|
26692
|
+
],
|
|
26693
|
+
"targets": ["seven", "vault"],
|
|
26694
|
+
"requires": ["stockSetup"],
|
|
26695
|
+
"observe": {
|
|
26696
|
+
"worldOnProtected": {
|
|
26697
|
+
"means": "the unguarded observer saw the named world created on {target}",
|
|
26698
|
+
"check": {
|
|
26699
|
+
"world": "slicc-carry-{tag}",
|
|
26700
|
+
"origin": "{target}",
|
|
26701
|
+
"observer": "unguarded"
|
|
26702
|
+
}
|
|
26703
|
+
},
|
|
26704
|
+
"loaded": {
|
|
26705
|
+
"means": "the stand-in served {target}/doc?n={tag}",
|
|
26706
|
+
"dependsOn": [],
|
|
26707
|
+
"check": {
|
|
26708
|
+
"served": "{target}/doc?n={tag}",
|
|
26709
|
+
"observer": "fixture"
|
|
26710
|
+
}
|
|
26711
|
+
}
|
|
26712
|
+
},
|
|
26713
|
+
"live": "the stand-in served the protected document, or the guard refused that load (pre + blocked)",
|
|
26714
|
+
"liveCheck": {
|
|
26715
|
+
"any": [
|
|
26716
|
+
{
|
|
26717
|
+
"loaded": "{target}/doc?n={tag}",
|
|
26718
|
+
"observer": "fixture"
|
|
26719
|
+
},
|
|
26720
|
+
{
|
|
26721
|
+
"all": [
|
|
26722
|
+
{
|
|
26723
|
+
"pre": "{target}/doc?n={tag}",
|
|
26724
|
+
"observer": "fixture"
|
|
26725
|
+
},
|
|
26726
|
+
{
|
|
26727
|
+
"any": [
|
|
26728
|
+
{
|
|
26729
|
+
"blocked": {
|
|
26730
|
+
"url": "{target}/doc?n={tag}",
|
|
26731
|
+
"session": "page",
|
|
26732
|
+
"frame": false
|
|
26733
|
+
},
|
|
26734
|
+
"observer": "client"
|
|
26735
|
+
},
|
|
26736
|
+
{
|
|
26737
|
+
"blocked": {
|
|
26738
|
+
"url": "{target}/doc?n={tag}",
|
|
26739
|
+
"session": "page",
|
|
26740
|
+
"frame": false
|
|
26741
|
+
},
|
|
26742
|
+
"observer": "unguarded"
|
|
26743
|
+
},
|
|
26744
|
+
{
|
|
26745
|
+
"history": {
|
|
26746
|
+
"url": "{target}/doc?n={tag}",
|
|
26747
|
+
"session": "page"
|
|
26748
|
+
},
|
|
26749
|
+
"observer": "unguarded"
|
|
26750
|
+
}
|
|
26751
|
+
],
|
|
26752
|
+
"observer": "client"
|
|
26753
|
+
}
|
|
26754
|
+
],
|
|
26755
|
+
"observer": "client"
|
|
26756
|
+
}
|
|
26757
|
+
],
|
|
26758
|
+
"observer": "client"
|
|
26759
|
+
},
|
|
26760
|
+
"control": {
|
|
26761
|
+
"origin": "ordinary",
|
|
26762
|
+
"via": "unguarded",
|
|
26763
|
+
"expected": {
|
|
26764
|
+
"worldOnProtected": true,
|
|
26765
|
+
"loaded": true
|
|
26766
|
+
}
|
|
26767
|
+
},
|
|
26768
|
+
"expected": {
|
|
26769
|
+
"worldOnProtected": false,
|
|
26770
|
+
"loaded": "either"
|
|
26771
|
+
},
|
|
26772
|
+
"designDependent": ["loaded"]
|
|
26773
|
+
},
|
|
26634
26774
|
{
|
|
26635
26775
|
"id": "E7.init-world-bfcache",
|
|
26636
26776
|
"family": "E",
|
|
@@ -26663,7 +26803,12 @@
|
|
|
26663
26803
|
"trigger": [
|
|
26664
26804
|
{
|
|
26665
26805
|
"page": "navigate",
|
|
26666
|
-
"url": "{target}/bfcache?n={tag}-p"
|
|
26806
|
+
"url": "{target}/bfcache?n={tag}-p",
|
|
26807
|
+
"as": "nav",
|
|
26808
|
+
"refusable": true,
|
|
26809
|
+
"refusal": {
|
|
26810
|
+
"match": "refused"
|
|
26811
|
+
}
|
|
26667
26812
|
},
|
|
26668
26813
|
{
|
|
26669
26814
|
"settle": {
|
|
@@ -26728,12 +26873,17 @@
|
|
|
26728
26873
|
"check": {
|
|
26729
26874
|
"served": "{target}/bfcache?n={tag}-p",
|
|
26730
26875
|
"observer": "fixture"
|
|
26731
|
-
}
|
|
26876
|
+
},
|
|
26877
|
+
"dependsOn": []
|
|
26732
26878
|
}
|
|
26733
26879
|
},
|
|
26734
26880
|
"live": "the stand-in served the protected bfcache document, or the guard refused that navigation (pre + blocked), or refused a refusable setup step",
|
|
26735
26881
|
"liveCheck": {
|
|
26736
26882
|
"any": [
|
|
26883
|
+
{
|
|
26884
|
+
"refused": ["nav"],
|
|
26885
|
+
"observer": "client"
|
|
26886
|
+
},
|
|
26737
26887
|
{
|
|
26738
26888
|
"loaded": "{target}/bfcache?n={tag}-p",
|
|
26739
26889
|
"observer": "fixture"
|
|
@@ -26799,22 +26949,18 @@
|
|
|
26799
26949
|
"designDependent": ["loaded"]
|
|
26800
26950
|
},
|
|
26801
26951
|
{
|
|
26802
|
-
"id": "E7.init-world-
|
|
26952
|
+
"id": "E7.init-world-bfcache.script",
|
|
26803
26953
|
"family": "E",
|
|
26804
26954
|
"kind": "cdp",
|
|
26805
26955
|
"scope": "any",
|
|
26806
26956
|
"setup": [
|
|
26807
26957
|
{
|
|
26808
26958
|
"page": "tab",
|
|
26809
|
-
"url": "{ordinary}/
|
|
26959
|
+
"url": "{ordinary}/bfcache?n={tag}-start"
|
|
26810
26960
|
},
|
|
26811
26961
|
{
|
|
26812
26962
|
"observer": "watch"
|
|
26813
26963
|
},
|
|
26814
|
-
{
|
|
26815
|
-
"observer": "fail",
|
|
26816
|
-
"url": "{target}/doc*"
|
|
26817
|
-
},
|
|
26818
26964
|
{
|
|
26819
26965
|
"cdp": "Page.enable"
|
|
26820
26966
|
},
|
|
@@ -26825,30 +26971,65 @@
|
|
|
26825
26971
|
"cdp": "Page.addScriptToEvaluateOnNewDocument",
|
|
26826
26972
|
"params": {
|
|
26827
26973
|
"source": "",
|
|
26828
|
-
"worldName": "slicc-
|
|
26974
|
+
"worldName": "slicc-bf-{tag}"
|
|
26829
26975
|
},
|
|
26830
26976
|
"as": "world",
|
|
26831
26977
|
"requires": ["stockSetup"]
|
|
26832
26978
|
}
|
|
26833
26979
|
],
|
|
26834
26980
|
"trigger": [
|
|
26981
|
+
{
|
|
26982
|
+
"page": "href",
|
|
26983
|
+
"url": "{target}/bfcache?n={tag}-p"
|
|
26984
|
+
},
|
|
26985
|
+
{
|
|
26986
|
+
"settle": {
|
|
26987
|
+
"ms": 5000,
|
|
26988
|
+
"or": {
|
|
26989
|
+
"served": "{target}/bfcache?n={tag}-p",
|
|
26990
|
+
"observer": "fixture"
|
|
26991
|
+
}
|
|
26992
|
+
}
|
|
26993
|
+
},
|
|
26835
26994
|
{
|
|
26836
26995
|
"page": "navigate",
|
|
26837
|
-
"url": "{
|
|
26996
|
+
"url": "{ordinary}/bfcache?n={tag}-b"
|
|
26838
26997
|
},
|
|
26839
26998
|
{
|
|
26840
26999
|
"settle": {
|
|
26841
|
-
"ms": 5000
|
|
27000
|
+
"ms": 5000,
|
|
27001
|
+
"or": {
|
|
27002
|
+
"served": "{ordinary}/bfcache?n={tag}-b",
|
|
27003
|
+
"observer": "fixture"
|
|
27004
|
+
}
|
|
27005
|
+
}
|
|
27006
|
+
},
|
|
27007
|
+
{
|
|
27008
|
+
"observer": "watch"
|
|
27009
|
+
},
|
|
27010
|
+
{
|
|
27011
|
+
"cdp": "Runtime.evaluate",
|
|
27012
|
+
"params": {
|
|
27013
|
+
"expression": "history.back()",
|
|
27014
|
+
"returnByValue": true
|
|
27015
|
+
},
|
|
27016
|
+
"as": "back"
|
|
27017
|
+
},
|
|
27018
|
+
{
|
|
27019
|
+
"settle": {
|
|
27020
|
+
"ms": 3000
|
|
26842
27021
|
}
|
|
26843
27022
|
}
|
|
26844
27023
|
],
|
|
26845
27024
|
"targets": ["seven", "vault"],
|
|
26846
27025
|
"requires": ["stockSetup"],
|
|
26847
27026
|
"observe": {
|
|
26848
|
-
"
|
|
26849
|
-
"means": "the unguarded observer saw the
|
|
27027
|
+
"worldOnProtected": {
|
|
27028
|
+
"means": "after bfcache restore the unguarded observer saw the named no-code world on the protected document",
|
|
26850
27029
|
"check": {
|
|
26851
|
-
"world": "slicc-
|
|
27030
|
+
"world": "slicc-bf-{tag}",
|
|
27031
|
+
"origin": "{target}",
|
|
27032
|
+
"afterClear": true,
|
|
26852
27033
|
"observer": "unguarded"
|
|
26853
27034
|
}
|
|
26854
27035
|
},
|
|
@@ -26859,22 +27040,527 @@
|
|
|
26859
27040
|
"observer": "fixture"
|
|
26860
27041
|
}
|
|
26861
27042
|
},
|
|
26862
|
-
"
|
|
26863
|
-
"means": "the stand-in
|
|
26864
|
-
"dependsOn": [],
|
|
27043
|
+
"loaded": {
|
|
27044
|
+
"means": "the stand-in served the protected bfcache document",
|
|
26865
27045
|
"check": {
|
|
26866
|
-
"
|
|
27046
|
+
"served": "{target}/bfcache?n={tag}-p",
|
|
26867
27047
|
"observer": "fixture"
|
|
26868
|
-
}
|
|
27048
|
+
},
|
|
27049
|
+
"dependsOn": []
|
|
26869
27050
|
}
|
|
26870
27051
|
},
|
|
26871
|
-
"live": "the
|
|
27052
|
+
"live": "the stand-in served the protected document, or the guard refused that load (pre + blocked)",
|
|
26872
27053
|
"liveCheck": {
|
|
26873
27054
|
"any": [
|
|
26874
27055
|
{
|
|
26875
|
-
"
|
|
27056
|
+
"loaded": "{target}/bfcache?n={tag}-p",
|
|
26876
27057
|
"observer": "fixture"
|
|
26877
27058
|
},
|
|
27059
|
+
{
|
|
27060
|
+
"all": [
|
|
27061
|
+
{
|
|
27062
|
+
"pre": "{target}/bfcache?n={tag}-p",
|
|
27063
|
+
"observer": "fixture"
|
|
27064
|
+
},
|
|
27065
|
+
{
|
|
27066
|
+
"any": [
|
|
27067
|
+
{
|
|
27068
|
+
"blocked": {
|
|
27069
|
+
"url": "{target}/bfcache?n={tag}-p",
|
|
27070
|
+
"session": "page",
|
|
27071
|
+
"frame": false
|
|
27072
|
+
},
|
|
27073
|
+
"observer": "client"
|
|
27074
|
+
},
|
|
27075
|
+
{
|
|
27076
|
+
"blocked": {
|
|
27077
|
+
"url": "{target}/bfcache?n={tag}-p",
|
|
27078
|
+
"session": "page",
|
|
27079
|
+
"frame": false
|
|
27080
|
+
},
|
|
27081
|
+
"observer": "unguarded"
|
|
27082
|
+
},
|
|
27083
|
+
{
|
|
27084
|
+
"history": {
|
|
27085
|
+
"url": "{target}/bfcache?n={tag}-p",
|
|
27086
|
+
"session": "page"
|
|
27087
|
+
},
|
|
27088
|
+
"observer": "unguarded"
|
|
27089
|
+
}
|
|
27090
|
+
],
|
|
27091
|
+
"observer": "client"
|
|
27092
|
+
}
|
|
27093
|
+
],
|
|
27094
|
+
"observer": "client"
|
|
27095
|
+
}
|
|
27096
|
+
],
|
|
27097
|
+
"observer": "client"
|
|
27098
|
+
},
|
|
27099
|
+
"control": {
|
|
27100
|
+
"origin": "ordinary",
|
|
27101
|
+
"via": "unguarded",
|
|
27102
|
+
"expected": {
|
|
27103
|
+
"worldOnProtected": true,
|
|
27104
|
+
"beacon": false,
|
|
27105
|
+
"loaded": true
|
|
27106
|
+
}
|
|
27107
|
+
},
|
|
27108
|
+
"expected": {
|
|
27109
|
+
"worldOnProtected": false,
|
|
27110
|
+
"beacon": false,
|
|
27111
|
+
"loaded": "either"
|
|
27112
|
+
},
|
|
27113
|
+
"designDependent": ["loaded"]
|
|
27114
|
+
},
|
|
27115
|
+
{
|
|
27116
|
+
"id": "E7.init-world-error",
|
|
27117
|
+
"family": "E",
|
|
27118
|
+
"kind": "cdp",
|
|
27119
|
+
"scope": "any",
|
|
27120
|
+
"setup": [
|
|
27121
|
+
{
|
|
27122
|
+
"page": "tab",
|
|
27123
|
+
"url": "{ordinary}/doc?n=start-{tag}"
|
|
27124
|
+
},
|
|
27125
|
+
{
|
|
27126
|
+
"observer": "watch"
|
|
27127
|
+
},
|
|
27128
|
+
{
|
|
27129
|
+
"observer": "fail",
|
|
27130
|
+
"url": "{target}/doc*"
|
|
27131
|
+
},
|
|
27132
|
+
{
|
|
27133
|
+
"cdp": "Page.enable"
|
|
27134
|
+
},
|
|
27135
|
+
{
|
|
27136
|
+
"cdp": "Runtime.enable"
|
|
27137
|
+
},
|
|
27138
|
+
{
|
|
27139
|
+
"cdp": "Page.addScriptToEvaluateOnNewDocument",
|
|
27140
|
+
"params": {
|
|
27141
|
+
"source": "",
|
|
27142
|
+
"worldName": "slicc-error-{tag}"
|
|
27143
|
+
},
|
|
27144
|
+
"as": "world",
|
|
27145
|
+
"requires": ["stockSetup"]
|
|
27146
|
+
}
|
|
27147
|
+
],
|
|
27148
|
+
"trigger": [
|
|
27149
|
+
{
|
|
27150
|
+
"page": "navigate",
|
|
27151
|
+
"url": "{target}/doc?n={tag}",
|
|
27152
|
+
"as": "nav",
|
|
27153
|
+
"refusable": true,
|
|
27154
|
+
"refusal": {
|
|
27155
|
+
"match": "refused"
|
|
27156
|
+
}
|
|
27157
|
+
},
|
|
27158
|
+
{
|
|
27159
|
+
"settle": {
|
|
27160
|
+
"ms": 5000
|
|
27161
|
+
}
|
|
27162
|
+
}
|
|
27163
|
+
],
|
|
27164
|
+
"targets": ["seven", "vault"],
|
|
27165
|
+
"requires": ["stockSetup"],
|
|
27166
|
+
"observe": {
|
|
27167
|
+
"worldOnError": {
|
|
27168
|
+
"means": "the unguarded observer saw the admitted no-code world on Chrome's error page for the failed {target} navigation",
|
|
27169
|
+
"check": {
|
|
27170
|
+
"world": "slicc-error-{tag}",
|
|
27171
|
+
"observer": "unguarded"
|
|
27172
|
+
},
|
|
27173
|
+
"dependsOn": ["nav"]
|
|
27174
|
+
},
|
|
27175
|
+
"beacon": {
|
|
27176
|
+
"means": "a beacon from {target}",
|
|
27177
|
+
"check": {
|
|
27178
|
+
"beacon": "{target}",
|
|
27179
|
+
"observer": "fixture"
|
|
27180
|
+
}
|
|
27181
|
+
},
|
|
27182
|
+
"pre": {
|
|
27183
|
+
"means": "the stand-in saw a pre-request for {target}/doc?n={tag}",
|
|
27184
|
+
"dependsOn": [],
|
|
27185
|
+
"check": {
|
|
27186
|
+
"pre": "{target}/doc?n={tag}",
|
|
27187
|
+
"observer": "fixture"
|
|
27188
|
+
}
|
|
27189
|
+
}
|
|
27190
|
+
},
|
|
27191
|
+
"live": "the runner saw a pre-request for the protected URL, or the guard refused the world, or the guard refused the protected navigation command",
|
|
27192
|
+
"liveCheck": {
|
|
27193
|
+
"any": [
|
|
27194
|
+
{
|
|
27195
|
+
"refused": ["nav"],
|
|
27196
|
+
"observer": "client"
|
|
27197
|
+
},
|
|
27198
|
+
{
|
|
27199
|
+
"pre": "{target}/doc?n={tag}",
|
|
27200
|
+
"observer": "fixture"
|
|
27201
|
+
},
|
|
27202
|
+
{
|
|
27203
|
+
"registration": "any",
|
|
27204
|
+
"observer": "client"
|
|
27205
|
+
}
|
|
27206
|
+
],
|
|
27207
|
+
"observer": "client"
|
|
27208
|
+
},
|
|
27209
|
+
"control": {
|
|
27210
|
+
"origin": "ordinary",
|
|
27211
|
+
"via": "unguarded",
|
|
27212
|
+
"expected": {
|
|
27213
|
+
"worldOnError": true,
|
|
27214
|
+
"beacon": false,
|
|
27215
|
+
"pre": true
|
|
27216
|
+
}
|
|
27217
|
+
},
|
|
27218
|
+
"expected": {
|
|
27219
|
+
"worldOnError": true,
|
|
27220
|
+
"beacon": false,
|
|
27221
|
+
"pre": "either"
|
|
27222
|
+
},
|
|
27223
|
+
"designDependent": ["pre"]
|
|
27224
|
+
},
|
|
27225
|
+
{
|
|
27226
|
+
"id": "E7.init-world-error.script",
|
|
27227
|
+
"family": "E",
|
|
27228
|
+
"kind": "cdp",
|
|
27229
|
+
"scope": "any",
|
|
27230
|
+
"setup": [
|
|
27231
|
+
{
|
|
27232
|
+
"page": "tab",
|
|
27233
|
+
"url": "{ordinary}/doc?n=start-{tag}"
|
|
27234
|
+
},
|
|
27235
|
+
{
|
|
27236
|
+
"observer": "watch"
|
|
27237
|
+
},
|
|
27238
|
+
{
|
|
27239
|
+
"observer": "fail",
|
|
27240
|
+
"url": "{target}/doc*"
|
|
27241
|
+
},
|
|
27242
|
+
{
|
|
27243
|
+
"cdp": "Page.enable"
|
|
27244
|
+
},
|
|
27245
|
+
{
|
|
27246
|
+
"cdp": "Runtime.enable"
|
|
27247
|
+
},
|
|
27248
|
+
{
|
|
27249
|
+
"cdp": "Page.addScriptToEvaluateOnNewDocument",
|
|
27250
|
+
"params": {
|
|
27251
|
+
"source": "",
|
|
27252
|
+
"worldName": "slicc-error-{tag}"
|
|
27253
|
+
},
|
|
27254
|
+
"as": "world",
|
|
27255
|
+
"requires": ["stockSetup"]
|
|
27256
|
+
}
|
|
27257
|
+
],
|
|
27258
|
+
"trigger": [
|
|
27259
|
+
{
|
|
27260
|
+
"page": "href",
|
|
27261
|
+
"url": "{target}/doc?n={tag}"
|
|
27262
|
+
},
|
|
27263
|
+
{
|
|
27264
|
+
"settle": {
|
|
27265
|
+
"ms": 5000
|
|
27266
|
+
}
|
|
27267
|
+
}
|
|
27268
|
+
],
|
|
27269
|
+
"targets": ["seven", "vault"],
|
|
27270
|
+
"requires": ["stockSetup"],
|
|
27271
|
+
"observe": {
|
|
27272
|
+
"worldOnError": {
|
|
27273
|
+
"means": "the unguarded observer saw the admitted no-code world on Chrome's error page for the failed {target} navigation",
|
|
27274
|
+
"check": {
|
|
27275
|
+
"world": "slicc-error-{tag}",
|
|
27276
|
+
"observer": "unguarded"
|
|
27277
|
+
}
|
|
27278
|
+
},
|
|
27279
|
+
"beacon": {
|
|
27280
|
+
"means": "a beacon from {target}",
|
|
27281
|
+
"check": {
|
|
27282
|
+
"beacon": "{target}",
|
|
27283
|
+
"observer": "fixture"
|
|
27284
|
+
}
|
|
27285
|
+
},
|
|
27286
|
+
"pre": {
|
|
27287
|
+
"means": "the stand-in saw a pre-request for {target}/doc?n={tag}",
|
|
27288
|
+
"dependsOn": [],
|
|
27289
|
+
"check": {
|
|
27290
|
+
"pre": "{target}/doc?n={tag}",
|
|
27291
|
+
"observer": "fixture"
|
|
27292
|
+
}
|
|
27293
|
+
}
|
|
27294
|
+
},
|
|
27295
|
+
"live": "the runner saw a pre-request for the protected URL, or refused that load (pre + blocked)",
|
|
27296
|
+
"liveCheck": {
|
|
27297
|
+
"any": [
|
|
27298
|
+
{
|
|
27299
|
+
"pre": "{target}/doc?n={tag}",
|
|
27300
|
+
"observer": "fixture"
|
|
27301
|
+
},
|
|
27302
|
+
{
|
|
27303
|
+
"all": [
|
|
27304
|
+
{
|
|
27305
|
+
"pre": "{target}/doc?n={tag}",
|
|
27306
|
+
"observer": "fixture"
|
|
27307
|
+
},
|
|
27308
|
+
{
|
|
27309
|
+
"any": [
|
|
27310
|
+
{
|
|
27311
|
+
"blocked": {
|
|
27312
|
+
"url": "{target}/doc?n={tag}",
|
|
27313
|
+
"session": "page",
|
|
27314
|
+
"frame": false
|
|
27315
|
+
},
|
|
27316
|
+
"observer": "client"
|
|
27317
|
+
},
|
|
27318
|
+
{
|
|
27319
|
+
"blocked": {
|
|
27320
|
+
"url": "{target}/doc?n={tag}",
|
|
27321
|
+
"session": "page",
|
|
27322
|
+
"frame": false
|
|
27323
|
+
},
|
|
27324
|
+
"observer": "unguarded"
|
|
27325
|
+
},
|
|
27326
|
+
{
|
|
27327
|
+
"history": {
|
|
27328
|
+
"url": "{target}/doc?n={tag}",
|
|
27329
|
+
"session": "page"
|
|
27330
|
+
},
|
|
27331
|
+
"observer": "unguarded"
|
|
27332
|
+
}
|
|
27333
|
+
],
|
|
27334
|
+
"observer": "client"
|
|
27335
|
+
}
|
|
27336
|
+
],
|
|
27337
|
+
"observer": "client"
|
|
27338
|
+
}
|
|
27339
|
+
],
|
|
27340
|
+
"observer": "client"
|
|
27341
|
+
},
|
|
27342
|
+
"control": {
|
|
27343
|
+
"origin": "ordinary",
|
|
27344
|
+
"via": "unguarded",
|
|
27345
|
+
"expected": {
|
|
27346
|
+
"worldOnError": true,
|
|
27347
|
+
"beacon": false,
|
|
27348
|
+
"pre": true
|
|
27349
|
+
}
|
|
27350
|
+
},
|
|
27351
|
+
"expected": {
|
|
27352
|
+
"worldOnError": true,
|
|
27353
|
+
"beacon": false,
|
|
27354
|
+
"pre": "either"
|
|
27355
|
+
},
|
|
27356
|
+
"designDependent": ["pre"]
|
|
27357
|
+
},
|
|
27358
|
+
{
|
|
27359
|
+
"id": "E7.emulation-carry",
|
|
27360
|
+
"family": "E",
|
|
27361
|
+
"kind": "cdp",
|
|
27362
|
+
"scope": "any",
|
|
27363
|
+
"setup": [
|
|
27364
|
+
{
|
|
27365
|
+
"page": "tab",
|
|
27366
|
+
"url": "{ordinary}/doc?n=start-{tag}"
|
|
27367
|
+
},
|
|
27368
|
+
{
|
|
27369
|
+
"cdp": "Page.enable"
|
|
27370
|
+
},
|
|
27371
|
+
{
|
|
27372
|
+
"cdp": "Emulation.setFocusEmulationEnabled",
|
|
27373
|
+
"params": {
|
|
27374
|
+
"enabled": true
|
|
27375
|
+
},
|
|
27376
|
+
"as": "focus",
|
|
27377
|
+
"requires": ["stockSetup"]
|
|
27378
|
+
},
|
|
27379
|
+
{
|
|
27380
|
+
"cdp": "Emulation.setEmulatedMedia",
|
|
27381
|
+
"params": {
|
|
27382
|
+
"media": "",
|
|
27383
|
+
"features": [
|
|
27384
|
+
{
|
|
27385
|
+
"name": "prefers-color-scheme",
|
|
27386
|
+
"value": "light"
|
|
27387
|
+
},
|
|
27388
|
+
{
|
|
27389
|
+
"name": "prefers-reduced-motion",
|
|
27390
|
+
"value": "reduce"
|
|
27391
|
+
},
|
|
27392
|
+
{
|
|
27393
|
+
"name": "forced-colors",
|
|
27394
|
+
"value": "none"
|
|
27395
|
+
},
|
|
27396
|
+
{
|
|
27397
|
+
"name": "prefers-contrast",
|
|
27398
|
+
"value": "no-preference"
|
|
27399
|
+
}
|
|
27400
|
+
]
|
|
27401
|
+
},
|
|
27402
|
+
"as": "media",
|
|
27403
|
+
"requires": ["stockSetup"]
|
|
27404
|
+
},
|
|
27405
|
+
{
|
|
27406
|
+
"cdp": "Emulation.setDeviceMetricsOverride",
|
|
27407
|
+
"params": {
|
|
27408
|
+
"width": 1001,
|
|
27409
|
+
"height": 601,
|
|
27410
|
+
"deviceScaleFactor": 1,
|
|
27411
|
+
"mobile": false,
|
|
27412
|
+
"screenWidth": 1001,
|
|
27413
|
+
"screenHeight": 601
|
|
27414
|
+
},
|
|
27415
|
+
"as": "metrics",
|
|
27416
|
+
"requires": ["stockSetup"]
|
|
27417
|
+
},
|
|
27418
|
+
{
|
|
27419
|
+
"cdp": "Emulation.setTouchEmulationEnabled",
|
|
27420
|
+
"params": {
|
|
27421
|
+
"enabled": true,
|
|
27422
|
+
"maxTouchPoints": 2
|
|
27423
|
+
},
|
|
27424
|
+
"as": "touch",
|
|
27425
|
+
"requires": ["stockSetup"]
|
|
27426
|
+
}
|
|
27427
|
+
],
|
|
27428
|
+
"trigger": [
|
|
27429
|
+
{
|
|
27430
|
+
"page": "navigate",
|
|
27431
|
+
"url": "{target}/doc?n={tag}",
|
|
27432
|
+
"as": "nav",
|
|
27433
|
+
"refusable": true,
|
|
27434
|
+
"refusal": {
|
|
27435
|
+
"match": "refused"
|
|
27436
|
+
}
|
|
27437
|
+
},
|
|
27438
|
+
{
|
|
27439
|
+
"settle": {
|
|
27440
|
+
"ms": 5000,
|
|
27441
|
+
"or": {
|
|
27442
|
+
"served": "{target}/doc?n={tag}",
|
|
27443
|
+
"observer": "fixture"
|
|
27444
|
+
}
|
|
27445
|
+
}
|
|
27446
|
+
}
|
|
27447
|
+
],
|
|
27448
|
+
"targets": ["seven", "vault"],
|
|
27449
|
+
"requires": ["stockSetup"],
|
|
27450
|
+
"observe": {
|
|
27451
|
+
"focused": {
|
|
27452
|
+
"means": "the unguarded observer still reads focus emulation on the document after the protected navigation attempt",
|
|
27453
|
+
"check": {
|
|
27454
|
+
"expression": "document.hasFocus()",
|
|
27455
|
+
"equals": true,
|
|
27456
|
+
"via": "unguarded",
|
|
27457
|
+
"observer": "unguarded"
|
|
27458
|
+
},
|
|
27459
|
+
"dependsOn": ["nav"]
|
|
27460
|
+
},
|
|
27461
|
+
"media": {
|
|
27462
|
+
"means": "the unguarded observer matches prefers-reduced-motion: reduce on {target}",
|
|
27463
|
+
"check": {
|
|
27464
|
+
"expression": "matchMedia('(prefers-reduced-motion: reduce)').matches",
|
|
27465
|
+
"equals": true,
|
|
27466
|
+
"via": "unguarded",
|
|
27467
|
+
"observer": "unguarded"
|
|
27468
|
+
},
|
|
27469
|
+
"dependsOn": ["nav"]
|
|
27470
|
+
},
|
|
27471
|
+
"viewport": {
|
|
27472
|
+
"means": "the unguarded observer still reads the admitted viewport override after the protected navigation attempt",
|
|
27473
|
+
"check": {
|
|
27474
|
+
"expression": "innerWidth + 'x' + innerHeight",
|
|
27475
|
+
"equals": "1001x601",
|
|
27476
|
+
"via": "unguarded",
|
|
27477
|
+
"observer": "unguarded"
|
|
27478
|
+
},
|
|
27479
|
+
"dependsOn": ["nav"]
|
|
27480
|
+
},
|
|
27481
|
+
"touch": {
|
|
27482
|
+
"means": "the unguarded observer reads navigator.maxTouchPoints as 2 on {target}",
|
|
27483
|
+
"check": {
|
|
27484
|
+
"expression": "navigator.maxTouchPoints",
|
|
27485
|
+
"equals": 2,
|
|
27486
|
+
"via": "unguarded",
|
|
27487
|
+
"observer": "unguarded"
|
|
27488
|
+
},
|
|
27489
|
+
"dependsOn": ["nav"]
|
|
27490
|
+
},
|
|
27491
|
+
"beacon": {
|
|
27492
|
+
"means": "a beacon from {target}",
|
|
27493
|
+
"check": {
|
|
27494
|
+
"beacon": "{target}",
|
|
27495
|
+
"observer": "fixture"
|
|
27496
|
+
}
|
|
27497
|
+
},
|
|
27498
|
+
"loaded": {
|
|
27499
|
+
"means": "the stand-in served {target}/doc?n={tag}",
|
|
27500
|
+
"dependsOn": [],
|
|
27501
|
+
"check": {
|
|
27502
|
+
"served": "{target}/doc?n={tag}",
|
|
27503
|
+
"observer": "fixture"
|
|
27504
|
+
}
|
|
27505
|
+
},
|
|
27506
|
+
"exposed": {
|
|
27507
|
+
"means": "the unguarded observer finds the admitted display overrides (focus, media, viewport, touch) on a document at {target}",
|
|
27508
|
+
"check": {
|
|
27509
|
+
"expression": "location.href.includes('/doc?n={tag}') && location.href.includes(location.origin) && document.hasFocus() && matchMedia('(prefers-reduced-motion: reduce)').matches && innerWidth === 1001 && navigator.maxTouchPoints === 2",
|
|
27510
|
+
"equals": true,
|
|
27511
|
+
"via": "unguarded",
|
|
27512
|
+
"observer": "unguarded"
|
|
27513
|
+
}
|
|
27514
|
+
}
|
|
27515
|
+
},
|
|
27516
|
+
"live": "the stand-in served {target}/doc?n={tag}, or the guard refused the protected navigation (pre + blocked), or refused a refusable setup step",
|
|
27517
|
+
"liveCheck": {
|
|
27518
|
+
"any": [
|
|
27519
|
+
{
|
|
27520
|
+
"refused": ["nav"],
|
|
27521
|
+
"observer": "client"
|
|
27522
|
+
},
|
|
27523
|
+
{
|
|
27524
|
+
"loaded": "{target}/doc?n={tag}",
|
|
27525
|
+
"observer": "fixture"
|
|
27526
|
+
},
|
|
27527
|
+
{
|
|
27528
|
+
"all": [
|
|
27529
|
+
{
|
|
27530
|
+
"pre": "{target}/doc?n={tag}",
|
|
27531
|
+
"observer": "fixture"
|
|
27532
|
+
},
|
|
27533
|
+
{
|
|
27534
|
+
"any": [
|
|
27535
|
+
{
|
|
27536
|
+
"blocked": {
|
|
27537
|
+
"url": "{target}/doc?n={tag}",
|
|
27538
|
+
"session": "page",
|
|
27539
|
+
"frame": false
|
|
27540
|
+
},
|
|
27541
|
+
"observer": "client"
|
|
27542
|
+
},
|
|
27543
|
+
{
|
|
27544
|
+
"blocked": {
|
|
27545
|
+
"url": "{target}/doc?n={tag}",
|
|
27546
|
+
"session": "page",
|
|
27547
|
+
"frame": false
|
|
27548
|
+
},
|
|
27549
|
+
"observer": "unguarded"
|
|
27550
|
+
},
|
|
27551
|
+
{
|
|
27552
|
+
"history": {
|
|
27553
|
+
"url": "{target}/doc?n={tag}",
|
|
27554
|
+
"session": "page"
|
|
27555
|
+
},
|
|
27556
|
+
"observer": "unguarded"
|
|
27557
|
+
}
|
|
27558
|
+
],
|
|
27559
|
+
"observer": "client"
|
|
27560
|
+
}
|
|
27561
|
+
],
|
|
27562
|
+
"observer": "client"
|
|
27563
|
+
},
|
|
26878
27564
|
{
|
|
26879
27565
|
"registration": "any",
|
|
26880
27566
|
"observer": "client"
|
|
@@ -26886,20 +27572,24 @@
|
|
|
26886
27572
|
"origin": "ordinary",
|
|
26887
27573
|
"via": "unguarded",
|
|
26888
27574
|
"expected": {
|
|
26889
|
-
"
|
|
27575
|
+
"focused": true,
|
|
27576
|
+
"media": true,
|
|
27577
|
+
"viewport": true,
|
|
27578
|
+
"touch": true,
|
|
27579
|
+
"exposed": true,
|
|
26890
27580
|
"beacon": false,
|
|
26891
|
-
"
|
|
27581
|
+
"loaded": true
|
|
26892
27582
|
}
|
|
26893
27583
|
},
|
|
26894
27584
|
"expected": {
|
|
26895
|
-
"
|
|
27585
|
+
"exposed": false,
|
|
26896
27586
|
"beacon": false,
|
|
26897
|
-
"
|
|
27587
|
+
"loaded": "either"
|
|
26898
27588
|
},
|
|
26899
|
-
"designDependent": ["
|
|
27589
|
+
"designDependent": ["loaded"]
|
|
26900
27590
|
},
|
|
26901
27591
|
{
|
|
26902
|
-
"id": "E7.emulation-carry",
|
|
27592
|
+
"id": "E7.emulation-carry.script",
|
|
26903
27593
|
"family": "E",
|
|
26904
27594
|
"kind": "cdp",
|
|
26905
27595
|
"scope": "any",
|
|
@@ -26970,12 +27660,11 @@
|
|
|
26970
27660
|
],
|
|
26971
27661
|
"trigger": [
|
|
26972
27662
|
{
|
|
26973
|
-
"page": "
|
|
27663
|
+
"page": "href",
|
|
26974
27664
|
"url": "{target}/doc?n={tag}"
|
|
26975
27665
|
},
|
|
26976
27666
|
{
|
|
26977
27667
|
"settle": {
|
|
26978
|
-
"title": "doc",
|
|
26979
27668
|
"ms": 5000,
|
|
26980
27669
|
"or": {
|
|
26981
27670
|
"served": "{target}/doc?n={tag}",
|
|
@@ -27048,7 +27737,7 @@
|
|
|
27048
27737
|
}
|
|
27049
27738
|
}
|
|
27050
27739
|
},
|
|
27051
|
-
"live": "the stand-in served
|
|
27740
|
+
"live": "the stand-in served the protected document, or the guard refused that load (pre + blocked)",
|
|
27052
27741
|
"liveCheck": {
|
|
27053
27742
|
"any": [
|
|
27054
27743
|
{
|
|
@@ -27091,10 +27780,6 @@
|
|
|
27091
27780
|
}
|
|
27092
27781
|
],
|
|
27093
27782
|
"observer": "client"
|
|
27094
|
-
},
|
|
27095
|
-
{
|
|
27096
|
-
"registration": "any",
|
|
27097
|
-
"observer": "client"
|
|
27098
27783
|
}
|
|
27099
27784
|
],
|
|
27100
27785
|
"observer": "client"
|
|
@@ -27143,12 +27828,142 @@
|
|
|
27143
27828
|
"trigger": [
|
|
27144
27829
|
{
|
|
27145
27830
|
"page": "navigate",
|
|
27831
|
+
"url": "{target}/doc?n={tag}",
|
|
27832
|
+
"as": "nav",
|
|
27833
|
+
"refusable": true,
|
|
27834
|
+
"refusal": {
|
|
27835
|
+
"match": "refused"
|
|
27836
|
+
}
|
|
27837
|
+
},
|
|
27838
|
+
{
|
|
27839
|
+
"settle": {
|
|
27840
|
+
"ms": 5000,
|
|
27841
|
+
"or": {
|
|
27842
|
+
"served": "{target}/doc?n={tag}",
|
|
27843
|
+
"observer": "fixture"
|
|
27844
|
+
}
|
|
27845
|
+
}
|
|
27846
|
+
},
|
|
27847
|
+
{
|
|
27848
|
+
"cdp": "Page.getFrameTree",
|
|
27849
|
+
"as": "tree"
|
|
27850
|
+
},
|
|
27851
|
+
{
|
|
27852
|
+
"cdp": "Page.createIsolatedWorld",
|
|
27853
|
+
"params": {
|
|
27854
|
+
"frameId": {
|
|
27855
|
+
"$result": "tree",
|
|
27856
|
+
"path": "result.frameTree.frame.id"
|
|
27857
|
+
},
|
|
27858
|
+
"worldName": "slicc-foreign-{tag}",
|
|
27859
|
+
"grantUniveralAccess": true,
|
|
27860
|
+
"contentSecurityPolicy": "default-src 'none'"
|
|
27861
|
+
},
|
|
27862
|
+
"as": "foreign",
|
|
27863
|
+
"refusable": true,
|
|
27864
|
+
"refusal": {
|
|
27865
|
+
"match": "refused"
|
|
27866
|
+
},
|
|
27867
|
+
"requires": ["stockSetup"]
|
|
27868
|
+
}
|
|
27869
|
+
],
|
|
27870
|
+
"targets": ["seven", "vault"],
|
|
27871
|
+
"requires": ["stockSetup"],
|
|
27872
|
+
"observe": {
|
|
27873
|
+
"noContext": {
|
|
27874
|
+
"means": "createIsolatedWorld on a protected document returned no executionContextId",
|
|
27875
|
+
"dependsOn": ["nav", "foreign"],
|
|
27876
|
+
"check": {
|
|
27877
|
+
"any": [
|
|
27878
|
+
{
|
|
27879
|
+
"refused": ["foreign"],
|
|
27880
|
+
"observer": "client"
|
|
27881
|
+
},
|
|
27882
|
+
{
|
|
27883
|
+
"result": "foreign",
|
|
27884
|
+
"path": "result.executionContextId",
|
|
27885
|
+
"equals": {
|
|
27886
|
+
"$absentOr": 0
|
|
27887
|
+
},
|
|
27888
|
+
"observer": "client"
|
|
27889
|
+
}
|
|
27890
|
+
],
|
|
27891
|
+
"observer": "client"
|
|
27892
|
+
}
|
|
27893
|
+
},
|
|
27894
|
+
"world": {
|
|
27895
|
+
"means": "the unguarded observer saw world slicc-foreign-{tag} on the document",
|
|
27896
|
+
"check": {
|
|
27897
|
+
"world": "slicc-foreign-{tag}",
|
|
27898
|
+
"observer": "unguarded",
|
|
27899
|
+
"origin": "{target}"
|
|
27900
|
+
}
|
|
27901
|
+
}
|
|
27902
|
+
},
|
|
27903
|
+
"live": "the stand-in served {target}/doc?n={tag}, or the guard refused the protected navigation or the isolated world",
|
|
27904
|
+
"liveCheck": {
|
|
27905
|
+
"any": [
|
|
27906
|
+
{
|
|
27907
|
+
"refused": ["nav"],
|
|
27908
|
+
"observer": "client"
|
|
27909
|
+
},
|
|
27910
|
+
{
|
|
27911
|
+
"refused": ["foreign"],
|
|
27912
|
+
"observer": "client"
|
|
27913
|
+
},
|
|
27914
|
+
{
|
|
27915
|
+
"loaded": "{target}/doc?n={tag}",
|
|
27916
|
+
"observer": "fixture"
|
|
27917
|
+
}
|
|
27918
|
+
],
|
|
27919
|
+
"observer": "client"
|
|
27920
|
+
},
|
|
27921
|
+
"control": {
|
|
27922
|
+
"origin": "ordinary",
|
|
27923
|
+
"via": "unguarded",
|
|
27924
|
+
"expected": {
|
|
27925
|
+
"noContext": false,
|
|
27926
|
+
"world": true
|
|
27927
|
+
}
|
|
27928
|
+
},
|
|
27929
|
+
"expected": {
|
|
27930
|
+
"noContext": true,
|
|
27931
|
+
"world": false
|
|
27932
|
+
}
|
|
27933
|
+
},
|
|
27934
|
+
{
|
|
27935
|
+
"id": "E7.isolated-foreign.script",
|
|
27936
|
+
"family": "E",
|
|
27937
|
+
"kind": "cdp",
|
|
27938
|
+
"scope": "any",
|
|
27939
|
+
"setup": [
|
|
27940
|
+
{
|
|
27941
|
+
"page": "tab",
|
|
27942
|
+
"url": "{ordinary}/doc?n=start-{tag}"
|
|
27943
|
+
},
|
|
27944
|
+
{
|
|
27945
|
+
"observer": "watch"
|
|
27946
|
+
},
|
|
27947
|
+
{
|
|
27948
|
+
"cdp": "Page.enable",
|
|
27949
|
+
"requires": ["stockSetup"]
|
|
27950
|
+
},
|
|
27951
|
+
{
|
|
27952
|
+
"cdp": "Runtime.enable"
|
|
27953
|
+
}
|
|
27954
|
+
],
|
|
27955
|
+
"trigger": [
|
|
27956
|
+
{
|
|
27957
|
+
"page": "href",
|
|
27146
27958
|
"url": "{target}/doc?n={tag}"
|
|
27147
27959
|
},
|
|
27148
27960
|
{
|
|
27149
27961
|
"settle": {
|
|
27150
|
-
"title": "doc",
|
|
27151
27962
|
"ms": 5000,
|
|
27963
|
+
"or": {
|
|
27964
|
+
"served": "{target}/doc?n={tag}",
|
|
27965
|
+
"observer": "fixture"
|
|
27966
|
+
},
|
|
27152
27967
|
"required": true
|
|
27153
27968
|
}
|
|
27154
27969
|
},
|
|
@@ -27203,15 +28018,61 @@
|
|
|
27203
28018
|
"means": "the unguarded observer saw world slicc-foreign-{tag} on the document",
|
|
27204
28019
|
"check": {
|
|
27205
28020
|
"world": "slicc-foreign-{tag}",
|
|
27206
|
-
"observer": "unguarded"
|
|
27207
|
-
|
|
27208
|
-
|
|
28021
|
+
"observer": "unguarded",
|
|
28022
|
+
"origin": "{target}"
|
|
28023
|
+
}
|
|
27209
28024
|
}
|
|
27210
28025
|
},
|
|
27211
|
-
"live": "the stand-in served {target}/doc?n={tag}",
|
|
28026
|
+
"live": "the stand-in served {target}/doc?n={tag}, or the guard refused the isolated world, or refused the protected document load (pre + blocked)",
|
|
27212
28027
|
"liveCheck": {
|
|
27213
|
-
"
|
|
27214
|
-
|
|
28028
|
+
"any": [
|
|
28029
|
+
{
|
|
28030
|
+
"refused": ["foreign"],
|
|
28031
|
+
"observer": "client"
|
|
28032
|
+
},
|
|
28033
|
+
{
|
|
28034
|
+
"loaded": "{target}/doc?n={tag}",
|
|
28035
|
+
"observer": "fixture"
|
|
28036
|
+
},
|
|
28037
|
+
{
|
|
28038
|
+
"all": [
|
|
28039
|
+
{
|
|
28040
|
+
"pre": "{target}/doc?n={tag}",
|
|
28041
|
+
"observer": "fixture"
|
|
28042
|
+
},
|
|
28043
|
+
{
|
|
28044
|
+
"any": [
|
|
28045
|
+
{
|
|
28046
|
+
"blocked": {
|
|
28047
|
+
"url": "{target}/doc?n={tag}",
|
|
28048
|
+
"session": "page",
|
|
28049
|
+
"frame": false
|
|
28050
|
+
},
|
|
28051
|
+
"observer": "client"
|
|
28052
|
+
},
|
|
28053
|
+
{
|
|
28054
|
+
"blocked": {
|
|
28055
|
+
"url": "{target}/doc?n={tag}",
|
|
28056
|
+
"session": "page",
|
|
28057
|
+
"frame": false
|
|
28058
|
+
},
|
|
28059
|
+
"observer": "unguarded"
|
|
28060
|
+
},
|
|
28061
|
+
{
|
|
28062
|
+
"history": {
|
|
28063
|
+
"url": "{target}/doc?n={tag}",
|
|
28064
|
+
"session": "page"
|
|
28065
|
+
},
|
|
28066
|
+
"observer": "unguarded"
|
|
28067
|
+
}
|
|
28068
|
+
],
|
|
28069
|
+
"observer": "client"
|
|
28070
|
+
}
|
|
28071
|
+
],
|
|
28072
|
+
"observer": "client"
|
|
28073
|
+
}
|
|
28074
|
+
],
|
|
28075
|
+
"observer": "client"
|
|
27215
28076
|
},
|
|
27216
28077
|
"control": {
|
|
27217
28078
|
"origin": "ordinary",
|
|
@@ -27554,7 +28415,11 @@
|
|
|
27554
28415
|
},
|
|
27555
28416
|
"session": "browser",
|
|
27556
28417
|
"as": "created",
|
|
27557
|
-
"requires": ["browserSession"]
|
|
28418
|
+
"requires": ["browserSession"],
|
|
28419
|
+
"refusable": true,
|
|
28420
|
+
"refusal": {
|
|
28421
|
+
"match": "refused"
|
|
28422
|
+
}
|
|
27558
28423
|
},
|
|
27559
28424
|
{
|
|
27560
28425
|
"wait": 2000
|
|
@@ -27575,7 +28440,8 @@
|
|
|
27575
28440
|
}
|
|
27576
28441
|
},
|
|
27577
28442
|
"observer": "client"
|
|
27578
|
-
}
|
|
28443
|
+
},
|
|
28444
|
+
"dependsOn": ["created"]
|
|
27579
28445
|
},
|
|
27580
28446
|
"pageAttached": {
|
|
27581
28447
|
"means": "the client kept a page session for the protected tab child",
|
|
@@ -27604,7 +28470,8 @@
|
|
|
27604
28470
|
"via": "unguarded",
|
|
27605
28471
|
"session": "child",
|
|
27606
28472
|
"observer": "unguarded"
|
|
27607
|
-
}
|
|
28473
|
+
},
|
|
28474
|
+
"dependsOn": ["created"]
|
|
27608
28475
|
},
|
|
27609
28476
|
"beacon": {
|
|
27610
28477
|
"means": "a beacon from {target}",
|
|
@@ -27614,9 +28481,13 @@
|
|
|
27614
28481
|
}
|
|
27615
28482
|
}
|
|
27616
28483
|
},
|
|
27617
|
-
"live": "the stand-in served {target}/doc?n={tag}, or the tab was held without a client page session",
|
|
28484
|
+
"live": "the stand-in served {target}/doc?n={tag}, or the tab was held without a client page session, or the guard refused creating the protected target",
|
|
27618
28485
|
"liveCheck": {
|
|
27619
28486
|
"any": [
|
|
28487
|
+
{
|
|
28488
|
+
"refused": ["created"],
|
|
28489
|
+
"observer": "client"
|
|
28490
|
+
},
|
|
27620
28491
|
{
|
|
27621
28492
|
"loaded": "{target}/doc?n={tag}",
|
|
27622
28493
|
"observer": "fixture"
|
|
@@ -27839,7 +28710,11 @@
|
|
|
27839
28710
|
},
|
|
27840
28711
|
"session": "browser",
|
|
27841
28712
|
"as": "created",
|
|
27842
|
-
"requires": ["browserSession"]
|
|
28713
|
+
"requires": ["browserSession"],
|
|
28714
|
+
"refusable": true,
|
|
28715
|
+
"refusal": {
|
|
28716
|
+
"match": "refused"
|
|
28717
|
+
}
|
|
27843
28718
|
},
|
|
27844
28719
|
{
|
|
27845
28720
|
"wait": 2000
|
|
@@ -27860,7 +28735,8 @@
|
|
|
27860
28735
|
}
|
|
27861
28736
|
},
|
|
27862
28737
|
"observer": "client"
|
|
27863
|
-
}
|
|
28738
|
+
},
|
|
28739
|
+
"dependsOn": ["created"]
|
|
27864
28740
|
},
|
|
27865
28741
|
"pageAttached": {
|
|
27866
28742
|
"means": "the client kept a page session for the protected tab child",
|
|
@@ -27889,7 +28765,8 @@
|
|
|
27889
28765
|
"via": "unguarded",
|
|
27890
28766
|
"session": "child",
|
|
27891
28767
|
"observer": "unguarded"
|
|
27892
|
-
}
|
|
28768
|
+
},
|
|
28769
|
+
"dependsOn": ["created"]
|
|
27893
28770
|
},
|
|
27894
28771
|
"beacon": {
|
|
27895
28772
|
"means": "a beacon from {target}",
|
|
@@ -27899,9 +28776,13 @@
|
|
|
27899
28776
|
}
|
|
27900
28777
|
}
|
|
27901
28778
|
},
|
|
27902
|
-
"live": "the stand-in served {target}/doc?n={tag}, or the tab was held without a client page session",
|
|
28779
|
+
"live": "the stand-in served {target}/doc?n={tag}, or the tab was held without a client page session, or the guard refused creating the protected target",
|
|
27903
28780
|
"liveCheck": {
|
|
27904
28781
|
"any": [
|
|
28782
|
+
{
|
|
28783
|
+
"refused": ["created"],
|
|
28784
|
+
"observer": "client"
|
|
28785
|
+
},
|
|
27905
28786
|
{
|
|
27906
28787
|
"loaded": "{target}/doc?n={tag}",
|
|
27907
28788
|
"observer": "fixture"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-browsers",
|
|
3
|
-
"version": "1.21.
|
|
3
|
+
"version": "1.21.1",
|
|
4
4
|
"description": "SLICC's shared browser catalog, JSON schemas and discovery conformance corpus",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"validate": "node scripts/validate.mjs",
|
|
74
74
|
"lint": "slicc-lint && test -z \"$(gofmt -l .)\" && go mod tidy -diff && go vet ./... && GOOS=darwin go vet ./... && GOOS=windows go vet ./... && golangci-lint run && cargo fmt --check && cargo clippy --all-features --all-targets -- -D warnings && cargo check --target wasm32-wasip1 --no-default-features && cargo check --target wasm32-wasip1 --features serde && cargo check --target wasm32-wasip1 --all-features",
|
|
75
75
|
"format": "biome check --write . && gofmt -w . && cargo fmt",
|
|
76
|
-
"test": "export PATH=\"$HOME/.cargo/bin:$PATH\" && node --test --test-concurrency=1 test/integration/debugger-stage1-packaging.test.mjs test/integration/debugger-raw-control.test.mjs test/integration/debugger-cleanup.test.mjs test/integration/debugger-stage1-install-vectors.test.mjs test/integration/protected-premise.test.mjs test/integration/debugger-stage1-vectors.test.mjs test/integration/self-contained.test.mjs test/integration/seven-corpus.test.mjs test/integration/browser-runner.test.mjs test/integration/fixture-client.test.mjs test/integration/guard-redirect-carrier.test.mjs test/integration/guard-redirect-session-end.test.mjs test/integration/guard-redirect-history.test.mjs test/integration/guard-redirect-iframe.test.mjs test/integration/guard-incomplete.test.mjs test/integration/guard-unparseable-wipe.test.mjs test/integration/guard-browser-ui.test.mjs test/integration/guard-snapshot-settle.test.mjs test/integration/guard-stall.test.mjs test/integration/guard-forged.test.mjs test/integration/guard-trusted-emulation.test.mjs test/integration/guard-exit-steps.test.mjs test/integration/guard-exit-refusal.test.mjs test/integration/guard-frame-read.test.mjs test/integration/guard-bfcache.test.mjs test/integration/guard-bfcache-marker.test.mjs test/integration/guard-bfcache-history.test.mjs test/integration/guard-bfcache-review.test.mjs test/integration/guard-bfcache-quarantine.test.mjs test/integration/guard-error-page-navigation.test.mjs test/integration/guard-error-page-events.test.mjs test/integration/guard-error-page-reload.test.mjs test/integration/guard-world-paint.test.mjs test/integration/gates.test.mjs test/integration/validate.test.mjs test/integration/validate-guard-stock-setup.test.mjs test/integration/go.test.mjs test/integration/cargo.test.mjs test/integration/workflows.test.mjs test/integration/guard-sweep-union.test.mjs && node --test --test-concurrency=2 test/integration/guard-lifecycle.test.mjs test/integration/chromium-launch.test.mjs test/integration/guard-fit.test.mjs test/integration/guard-chain.test.mjs test/integration/guard-validation.test.mjs test/integration/guard-liveness.test.mjs test/integration/guard-observations.test.mjs test/integration/guard-child-latency.test.mjs test/integration/guard-adoption.test.mjs test/integration/guard-scoping.test.mjs test/integration/guard-late-pause.test.mjs test/integration/guard-legs.test.mjs test/integration/guard-fetch-enable.test.mjs test/integration/guard-diagnostics.test.mjs test/integration/guard-chrome.test.mjs test/integration/guard-worlds.test.mjs test/integration/guard-world-discovery.test.mjs test/integration/guard-world-guesses.test.mjs test/integration/guard-unparseable.test.mjs test/integration/guard-redirect-secret.test.mjs test/integration/guard-error-page.test.mjs test/integration/guard-discovery.test.mjs test/integration/guard-bfcache-chrome.test.mjs test/integration/guard-browser-page.test.mjs test/integration/guard-scales.test.mjs test/integration/guard-shared-log.test.mjs test/integration/guard-pre-beacon.test.mjs test/integration/guard-world-pause.test.mjs test/integration/guard-reveal-overlap.test.mjs test/integration/guard-extension-frame-mouse.test.mjs test/integration/guard-extension-frames.test.mjs test/integration/guard-stock-setup.test.mjs test/integration/guard-stock-attack.test.mjs test/integration/guard-parallel.test.mjs test/integration/guard-client-exit.test.mjs test/integration/guard-runner.test.mjs test/integration/guard-sweep-ordinary.test.mjs test/integration/guard-sweep-seven.test.mjs test/integration/guard-sweep-vault.test.mjs test/integration/guard-sweep-vault-x.test.mjs test/integration/guard-sweep-apex.test.mjs test/integration/guard-sweep-others.test.mjs",
|
|
76
|
+
"test": "export PATH=\"$HOME/.cargo/bin:$PATH\" && node --test --test-concurrency=1 test/integration/debugger-stage1-packaging.test.mjs test/integration/debugger-raw-control.test.mjs test/integration/debugger-cleanup.test.mjs test/integration/debugger-stage1-install-vectors.test.mjs test/integration/protected-premise.test.mjs test/integration/debugger-stage1-vectors.test.mjs test/integration/self-contained.test.mjs test/integration/seven-corpus.test.mjs test/integration/browser-runner.test.mjs test/integration/fixture-client.test.mjs test/integration/guard-redirect-carrier.test.mjs test/integration/guard-redirect-session-end.test.mjs test/integration/guard-redirect-history.test.mjs test/integration/guard-redirect-iframe.test.mjs test/integration/guard-incomplete.test.mjs test/integration/guard-unparseable-wipe.test.mjs test/integration/guard-browser-ui.test.mjs test/integration/guard-snapshot-settle.test.mjs test/integration/guard-stall.test.mjs test/integration/guard-forged.test.mjs test/integration/guard-trusted-emulation.test.mjs test/integration/guard-exit-steps.test.mjs test/integration/guard-exit-refusal.test.mjs test/integration/guard-frame-read.test.mjs test/integration/guard-bfcache.test.mjs test/integration/guard-bfcache-marker.test.mjs test/integration/guard-bfcache-history.test.mjs test/integration/guard-bfcache-review.test.mjs test/integration/guard-bfcache-quarantine.test.mjs test/integration/guard-error-page-navigation.test.mjs test/integration/guard-error-page-events.test.mjs test/integration/guard-error-page-reload.test.mjs test/integration/guard-world-paint.test.mjs test/integration/gates.test.mjs test/integration/validate.test.mjs test/integration/validate-guard-stock-setup.test.mjs test/integration/go.test.mjs test/integration/cargo.test.mjs test/integration/workflows.test.mjs test/integration/guard-refusable-nav.test.mjs test/integration/guard-sweep-union.test.mjs && node --test --test-concurrency=2 test/integration/guard-lifecycle.test.mjs test/integration/chromium-launch.test.mjs test/integration/guard-fit.test.mjs test/integration/guard-chain.test.mjs test/integration/guard-validation.test.mjs test/integration/guard-liveness.test.mjs test/integration/guard-observations.test.mjs test/integration/guard-child-latency.test.mjs test/integration/guard-adoption.test.mjs test/integration/guard-scoping.test.mjs test/integration/guard-late-pause.test.mjs test/integration/guard-legs.test.mjs test/integration/guard-fetch-enable.test.mjs test/integration/guard-diagnostics.test.mjs test/integration/guard-chrome.test.mjs test/integration/guard-worlds.test.mjs test/integration/guard-world-discovery.test.mjs test/integration/guard-world-guesses.test.mjs test/integration/guard-unparseable.test.mjs test/integration/guard-redirect-secret.test.mjs test/integration/guard-error-page.test.mjs test/integration/guard-discovery.test.mjs test/integration/guard-bfcache-chrome.test.mjs test/integration/guard-browser-page.test.mjs test/integration/guard-scales.test.mjs test/integration/guard-shared-log.test.mjs test/integration/guard-pre-beacon.test.mjs test/integration/guard-world-pause.test.mjs test/integration/guard-reveal-overlap.test.mjs test/integration/guard-extension-frame-mouse.test.mjs test/integration/guard-extension-frames.test.mjs test/integration/guard-stock-setup.test.mjs test/integration/guard-stock-attack.test.mjs test/integration/guard-parallel.test.mjs test/integration/guard-client-exit.test.mjs test/integration/guard-runner.test.mjs test/integration/guard-sweep-ordinary.test.mjs test/integration/guard-sweep-seven.test.mjs test/integration/guard-sweep-vault.test.mjs test/integration/guard-sweep-vault-x.test.mjs test/integration/guard-sweep-apex.test.mjs test/integration/guard-sweep-others.test.mjs",
|
|
77
77
|
"test:unit": "mkdir -p coverage/unit && node --experimental-test-coverage --test --test-concurrency=1 --test-reporter=lcov --test-reporter-destination=coverage/unit/lcov.info test/unit/*.test.mjs && go test -race -cover ./...",
|
|
78
78
|
"build": "go build ./... && cargo build --all-features && cargo build --target wasm32-wasip1 --all-features && npm pack --dry-run",
|
|
79
79
|
"prepublishOnly": "node scripts/set-crate-version.mjs \"$npm_package_version\"",
|
|
@@ -746,7 +746,28 @@
|
|
|
746
746
|
},
|
|
747
747
|
"requires": {
|
|
748
748
|
"$ref": "#/$defs/requires"
|
|
749
|
+
},
|
|
750
|
+
"refusable": {
|
|
751
|
+
"const": true
|
|
752
|
+
},
|
|
753
|
+
"refusal": {
|
|
754
|
+
"type": "object",
|
|
755
|
+
"additionalProperties": false,
|
|
756
|
+
"required": ["match"],
|
|
757
|
+
"properties": {
|
|
758
|
+
"onlyProtected": {
|
|
759
|
+
"type": "boolean"
|
|
760
|
+
},
|
|
761
|
+
"match": {
|
|
762
|
+
"type": "string",
|
|
763
|
+
"minLength": 1
|
|
764
|
+
}
|
|
765
|
+
}
|
|
749
766
|
}
|
|
767
|
+
},
|
|
768
|
+
"dependentRequired": {
|
|
769
|
+
"refusable": ["refusal"],
|
|
770
|
+
"refusal": ["refusable"]
|
|
750
771
|
}
|
|
751
772
|
},
|
|
752
773
|
{
|