@ai-ecoverse/slicc-browsers 1.7.2 → 1.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "setVersion": "1.7.2",
3
+ "setVersion": "1.7.3",
4
4
  "sources": [
5
5
  {
6
6
  "repo": "ai-ecoverse/slicc-cli",
@@ -170,6 +170,43 @@
170
170
  "check": {
171
171
  "detached": "page",
172
172
  "observer": "client"
173
+ },
174
+ "eitherWhen": {
175
+ "all": [
176
+ {
177
+ "pre": "{target}/doc?n={tag}",
178
+ "observer": "fixture"
179
+ },
180
+ {
181
+ "any": [
182
+ {
183
+ "blocked": {
184
+ "url": "{target}/doc?n={tag}",
185
+ "session": "page",
186
+ "frame": false
187
+ },
188
+ "observer": "client"
189
+ },
190
+ {
191
+ "blocked": {
192
+ "url": "{target}/doc?n={tag}",
193
+ "session": "page",
194
+ "frame": false
195
+ },
196
+ "observer": "unguarded"
197
+ },
198
+ {
199
+ "history": {
200
+ "url": "{target}/doc?n={tag}",
201
+ "session": "page"
202
+ },
203
+ "observer": "unguarded"
204
+ }
205
+ ],
206
+ "observer": "client"
207
+ }
208
+ ],
209
+ "observer": "client"
173
210
  }
174
211
  }
175
212
  },
@@ -190,7 +227,7 @@
190
227
  "loaded": "either",
191
228
  "detached": true
192
229
  },
193
- "designDependent": ["loaded"],
230
+ "designDependent": ["loaded", "detached"],
194
231
  "liveCheck": {
195
232
  "any": [
196
233
  {
@@ -220,6 +257,13 @@
220
257
  "frame": false
221
258
  },
222
259
  "observer": "unguarded"
260
+ },
261
+ {
262
+ "history": {
263
+ "url": "{target}/doc?n={tag}",
264
+ "session": "page"
265
+ },
266
+ "observer": "unguarded"
223
267
  }
224
268
  ],
225
269
  "observer": "client"
@@ -342,61 +386,8 @@
342
386
  "check": {
343
387
  "detached": "page",
344
388
  "observer": "client"
345
- }
346
- },
347
- "hopped": {
348
- "means": "every hop in the chain was served",
349
- "dependsOn": [],
350
- "check": {
351
- "hops": [
352
- {
353
- "origin": "{ordinary}",
354
- "code": 301
355
- },
356
- {
357
- "origin": "{cross}",
358
- "code": 302
359
- },
360
- {
361
- "origin": "{ordinary}",
362
- "code": 303
363
- }
364
- ],
365
- "to": "{target}/doc?n={tag}",
366
- "observer": "fixture"
367
- }
368
- }
369
- },
370
- "live": "the runner's own CDP sees {target}'s document load (title, marker or URL), or the guard returned its refusal for a refusable step",
371
- "control": {
372
- "origin": "ordinary",
373
- "via": "guard",
374
- "expected": {
375
- "allowedBeacon": true,
376
- "beacon": true,
377
- "loaded": true,
378
- "detached": false,
379
- "hopped": true
380
- }
381
- },
382
- "expected": {
383
- "allowedBeacon": true,
384
- "beacon": false,
385
- "loaded": "either",
386
- "detached": true,
387
- "hopped": true
388
- },
389
- "observable": {
390
- "own": false
391
- },
392
- "designDependent": ["loaded"],
393
- "liveCheck": {
394
- "any": [
395
- {
396
- "loaded": "{target}/doc?n={tag}",
397
- "observer": "fixture"
398
389
  },
399
- {
390
+ "eitherWhen": {
400
391
  "all": [
401
392
  {
402
393
  "pre": {
@@ -547,150 +538,97 @@
547
538
  "frame": false
548
539
  },
549
540
  "observer": "unguarded"
541
+ },
542
+ {
543
+ "history": {
544
+ "anyOf": [
545
+ {
546
+ "hops": [
547
+ {
548
+ "origin": "{ordinary}",
549
+ "code": 301
550
+ },
551
+ {
552
+ "origin": "{cross}",
553
+ "code": 302
554
+ },
555
+ {
556
+ "origin": "{ordinary}",
557
+ "code": 303
558
+ }
559
+ ],
560
+ "to": "{target}/doc?n={tag}",
561
+ "index": 0
562
+ },
563
+ {
564
+ "hops": [
565
+ {
566
+ "origin": "{ordinary}",
567
+ "code": 301
568
+ },
569
+ {
570
+ "origin": "{cross}",
571
+ "code": 302
572
+ },
573
+ {
574
+ "origin": "{ordinary}",
575
+ "code": 303
576
+ }
577
+ ],
578
+ "to": "{target}/doc?n={tag}",
579
+ "index": 1
580
+ },
581
+ {
582
+ "hops": [
583
+ {
584
+ "origin": "{ordinary}",
585
+ "code": 301
586
+ },
587
+ {
588
+ "origin": "{cross}",
589
+ "code": 302
590
+ },
591
+ {
592
+ "origin": "{ordinary}",
593
+ "code": 303
594
+ }
595
+ ],
596
+ "to": "{target}/doc?n={tag}",
597
+ "index": 2
598
+ },
599
+ "{target}/doc?n={tag}"
600
+ ],
601
+ "session": "page"
602
+ },
603
+ "observer": "unguarded"
550
604
  }
551
605
  ],
552
606
  "observer": "client"
553
607
  }
554
608
  ],
555
609
  "observer": "client"
556
- },
557
- {
558
- "registration": "any",
559
- "observer": "client"
560
- }
561
- ],
562
- "observer": "client"
563
- }
564
- },
565
- {
566
- "id": "C2.chain-307-308-302",
567
- "family": "C",
568
- "kind": "cdp",
569
- "scope": "any",
570
- "setup": [
571
- {
572
- "text": "an allowed tab with an init script that beacons its origin"
573
- },
574
- {
575
- "page": "tab",
576
- "url": "{ordinary}/doc?n=start"
577
- },
578
- {
579
- "cdp": "Page.enable"
580
- },
581
- {
582
- "cdp": "Page.addScriptToEvaluateOnNewDocument",
583
- "params": {
584
- "source": "{beacon}"
585
- },
586
- "refusable": true,
587
- "refusal": {
588
- "match": "refused"
589
- }
590
- },
591
- {
592
- "cdp": "Page.setBypassCSP",
593
- "params": {
594
- "enabled": true
595
- },
596
- "refusable": true,
597
- "refusal": {
598
- "match": "refused"
599
610
  }
600
611
  },
601
- {
602
- "page": "navigate",
603
- "url": "{ordinary}/doc?n=next-{tag}"
604
- }
605
- ],
606
- "trigger": [
607
- {
608
- "page": "href",
609
- "url": "{target}/doc?n={tag}",
610
- "hops": [
611
- {
612
- "origin": "{ordinary}",
613
- "code": 307
614
- },
615
- {
616
- "origin": "{cross}",
617
- "code": 308
618
- },
619
- {
620
- "origin": "{ordinary}",
621
- "code": 302
622
- }
623
- ]
624
- },
625
- {
626
- "settle": {
627
- "beacon": "{target}"
628
- }
629
- }
630
- ],
631
- "targets": ["seven", "vault", "vault-x", "apex", "own"],
632
- "observe": {
633
- "allowedBeacon": {
634
- "means": "a beacon from {ordinary}",
635
- "dependsOn": ["refused.3"],
612
+ "hopped": {
613
+ "means": "every hop in the chain was served",
614
+ "dependsOn": [],
636
615
  "check": {
637
- "any": [
616
+ "hops": [
638
617
  {
639
- "beacon": "{ordinary}",
640
- "observer": "fixture"
618
+ "origin": "{ordinary}",
619
+ "code": 301
641
620
  },
642
621
  {
643
- "beacon": "{ordinary-same-site}",
644
- "observer": "fixture"
622
+ "origin": "{cross}",
623
+ "code": 302
624
+ },
625
+ {
626
+ "origin": "{ordinary}",
627
+ "code": 303
645
628
  }
646
629
  ],
647
- "observer": "client"
648
- }
649
- },
650
- "beacon": {
651
- "means": "a beacon from {target}",
652
- "dependsOn": ["refused.3"],
653
- "check": {
654
- "beacon": "{target}",
655
- "observer": "fixture"
656
- }
657
- },
658
- "loaded": {
659
- "means": "the stand-in served {target}/doc?n={tag}",
660
- "dependsOn": [],
661
- "check": {
662
- "served": "{target}/doc?n={tag}",
663
- "observer": "fixture"
664
- }
665
- },
666
- "detached": {
667
- "means": "the page session was detached",
668
- "dependsOn": ["refused.3", "refused.4"],
669
- "check": {
670
- "detached": "page",
671
- "observer": "client"
672
- }
673
- },
674
- "hopped": {
675
- "means": "every hop in the chain was served",
676
- "dependsOn": [],
677
- "check": {
678
- "hops": [
679
- {
680
- "origin": "{ordinary}",
681
- "code": 307
682
- },
683
- {
684
- "origin": "{cross}",
685
- "code": 308
686
- },
687
- {
688
- "origin": "{ordinary}",
689
- "code": 302
690
- }
691
- ],
692
- "to": "{target}/doc?n={tag}",
693
- "observer": "fixture"
630
+ "to": "{target}/doc?n={tag}",
631
+ "observer": "fixture"
694
632
  }
695
633
  }
696
634
  },
@@ -716,7 +654,7 @@
716
654
  "observable": {
717
655
  "own": false
718
656
  },
719
- "designDependent": ["loaded"],
657
+ "designDependent": ["loaded", "detached"],
720
658
  "liveCheck": {
721
659
  "any": [
722
660
  {
@@ -730,15 +668,15 @@
730
668
  "hops": [
731
669
  {
732
670
  "origin": "{ordinary}",
733
- "code": 307
671
+ "code": 301
734
672
  },
735
673
  {
736
674
  "origin": "{cross}",
737
- "code": 308
675
+ "code": 302
738
676
  },
739
677
  {
740
678
  "origin": "{ordinary}",
741
- "code": 302
679
+ "code": 303
742
680
  }
743
681
  ],
744
682
  "to": "{target}/doc?n={tag}"
@@ -754,15 +692,15 @@
754
692
  "hops": [
755
693
  {
756
694
  "origin": "{ordinary}",
757
- "code": 307
695
+ "code": 301
758
696
  },
759
697
  {
760
698
  "origin": "{cross}",
761
- "code": 308
699
+ "code": 302
762
700
  },
763
701
  {
764
702
  "origin": "{ordinary}",
765
- "code": 302
703
+ "code": 303
766
704
  }
767
705
  ],
768
706
  "to": "{target}/doc?n={tag}",
@@ -772,15 +710,15 @@
772
710
  "hops": [
773
711
  {
774
712
  "origin": "{ordinary}",
775
- "code": 307
713
+ "code": 301
776
714
  },
777
715
  {
778
716
  "origin": "{cross}",
779
- "code": 308
717
+ "code": 302
780
718
  },
781
719
  {
782
720
  "origin": "{ordinary}",
783
- "code": 302
721
+ "code": 303
784
722
  }
785
723
  ],
786
724
  "to": "{target}/doc?n={tag}",
@@ -790,15 +728,15 @@
790
728
  "hops": [
791
729
  {
792
730
  "origin": "{ordinary}",
793
- "code": 307
731
+ "code": 301
794
732
  },
795
733
  {
796
734
  "origin": "{cross}",
797
- "code": 308
735
+ "code": 302
798
736
  },
799
737
  {
800
738
  "origin": "{ordinary}",
801
- "code": 302
739
+ "code": 303
802
740
  }
803
741
  ],
804
742
  "to": "{target}/doc?n={tag}",
@@ -818,15 +756,15 @@
818
756
  "hops": [
819
757
  {
820
758
  "origin": "{ordinary}",
821
- "code": 307
759
+ "code": 301
822
760
  },
823
761
  {
824
762
  "origin": "{cross}",
825
- "code": 308
763
+ "code": 302
826
764
  },
827
765
  {
828
766
  "origin": "{ordinary}",
829
- "code": 302
767
+ "code": 303
830
768
  }
831
769
  ],
832
770
  "to": "{target}/doc?n={tag}",
@@ -836,15 +774,15 @@
836
774
  "hops": [
837
775
  {
838
776
  "origin": "{ordinary}",
839
- "code": 307
777
+ "code": 301
840
778
  },
841
779
  {
842
780
  "origin": "{cross}",
843
- "code": 308
781
+ "code": 302
844
782
  },
845
783
  {
846
784
  "origin": "{ordinary}",
847
- "code": 302
785
+ "code": 303
848
786
  }
849
787
  ],
850
788
  "to": "{target}/doc?n={tag}",
@@ -854,15 +792,15 @@
854
792
  "hops": [
855
793
  {
856
794
  "origin": "{ordinary}",
857
- "code": 307
795
+ "code": 301
858
796
  },
859
797
  {
860
798
  "origin": "{cross}",
861
- "code": 308
799
+ "code": 302
862
800
  },
863
801
  {
864
802
  "origin": "{ordinary}",
865
- "code": 302
803
+ "code": 303
866
804
  }
867
805
  ],
868
806
  "to": "{target}/doc?n={tag}",
@@ -874,6 +812,69 @@
874
812
  "frame": false
875
813
  },
876
814
  "observer": "unguarded"
815
+ },
816
+ {
817
+ "history": {
818
+ "anyOf": [
819
+ {
820
+ "hops": [
821
+ {
822
+ "origin": "{ordinary}",
823
+ "code": 301
824
+ },
825
+ {
826
+ "origin": "{cross}",
827
+ "code": 302
828
+ },
829
+ {
830
+ "origin": "{ordinary}",
831
+ "code": 303
832
+ }
833
+ ],
834
+ "to": "{target}/doc?n={tag}",
835
+ "index": 0
836
+ },
837
+ {
838
+ "hops": [
839
+ {
840
+ "origin": "{ordinary}",
841
+ "code": 301
842
+ },
843
+ {
844
+ "origin": "{cross}",
845
+ "code": 302
846
+ },
847
+ {
848
+ "origin": "{ordinary}",
849
+ "code": 303
850
+ }
851
+ ],
852
+ "to": "{target}/doc?n={tag}",
853
+ "index": 1
854
+ },
855
+ {
856
+ "hops": [
857
+ {
858
+ "origin": "{ordinary}",
859
+ "code": 301
860
+ },
861
+ {
862
+ "origin": "{cross}",
863
+ "code": 302
864
+ },
865
+ {
866
+ "origin": "{ordinary}",
867
+ "code": 303
868
+ }
869
+ ],
870
+ "to": "{target}/doc?n={tag}",
871
+ "index": 2
872
+ },
873
+ "{target}/doc?n={tag}"
874
+ ],
875
+ "session": "page"
876
+ },
877
+ "observer": "unguarded"
877
878
  }
878
879
  ],
879
880
  "observer": "client"
@@ -890,7 +891,7 @@
890
891
  }
891
892
  },
892
893
  {
893
- "id": "C2.chain-303-301-308",
894
+ "id": "C2.chain-307-308-302",
894
895
  "family": "C",
895
896
  "kind": "cdp",
896
897
  "scope": "any",
@@ -935,17 +936,17 @@
935
936
  "page": "href",
936
937
  "url": "{target}/doc?n={tag}",
937
938
  "hops": [
938
- {
939
- "origin": "{cross}",
940
- "code": 303
941
- },
942
939
  {
943
940
  "origin": "{ordinary}",
944
- "code": 301
941
+ "code": 307
945
942
  },
946
943
  {
947
944
  "origin": "{cross}",
948
945
  "code": 308
946
+ },
947
+ {
948
+ "origin": "{ordinary}",
949
+ "code": 302
949
950
  }
950
951
  ]
951
952
  },
@@ -996,76 +997,23 @@
996
997
  "check": {
997
998
  "detached": "page",
998
999
  "observer": "client"
999
- }
1000
- },
1001
- "hopped": {
1002
- "means": "every hop in the chain was served",
1003
- "dependsOn": [],
1004
- "check": {
1005
- "hops": [
1006
- {
1007
- "origin": "{cross}",
1008
- "code": 303
1009
- },
1010
- {
1011
- "origin": "{ordinary}",
1012
- "code": 301
1013
- },
1014
- {
1015
- "origin": "{cross}",
1016
- "code": 308
1017
- }
1018
- ],
1019
- "to": "{target}/doc?n={tag}",
1020
- "observer": "fixture"
1021
- }
1022
- }
1023
- },
1024
- "live": "the runner's own CDP sees {target}'s document load (title, marker or URL), or the guard returned its refusal for a refusable step",
1025
- "control": {
1026
- "origin": "ordinary",
1027
- "via": "guard",
1028
- "expected": {
1029
- "allowedBeacon": true,
1030
- "beacon": true,
1031
- "loaded": true,
1032
- "detached": false,
1033
- "hopped": true
1034
- }
1035
- },
1036
- "expected": {
1037
- "allowedBeacon": true,
1038
- "beacon": false,
1039
- "loaded": "either",
1040
- "detached": true,
1041
- "hopped": true
1042
- },
1043
- "observable": {
1044
- "own": false
1045
- },
1046
- "designDependent": ["loaded"],
1047
- "liveCheck": {
1048
- "any": [
1049
- {
1050
- "loaded": "{target}/doc?n={tag}",
1051
- "observer": "fixture"
1052
1000
  },
1053
- {
1001
+ "eitherWhen": {
1054
1002
  "all": [
1055
1003
  {
1056
1004
  "pre": {
1057
1005
  "hops": [
1058
- {
1059
- "origin": "{cross}",
1060
- "code": 303
1061
- },
1062
1006
  {
1063
1007
  "origin": "{ordinary}",
1064
- "code": 301
1008
+ "code": 307
1065
1009
  },
1066
1010
  {
1067
1011
  "origin": "{cross}",
1068
1012
  "code": 308
1013
+ },
1014
+ {
1015
+ "origin": "{ordinary}",
1016
+ "code": 302
1069
1017
  }
1070
1018
  ],
1071
1019
  "to": "{target}/doc?n={tag}"
@@ -1079,17 +1027,17 @@
1079
1027
  "anyOf": [
1080
1028
  {
1081
1029
  "hops": [
1082
- {
1083
- "origin": "{cross}",
1084
- "code": 303
1085
- },
1086
1030
  {
1087
1031
  "origin": "{ordinary}",
1088
- "code": 301
1032
+ "code": 307
1089
1033
  },
1090
1034
  {
1091
1035
  "origin": "{cross}",
1092
1036
  "code": 308
1037
+ },
1038
+ {
1039
+ "origin": "{ordinary}",
1040
+ "code": 302
1093
1041
  }
1094
1042
  ],
1095
1043
  "to": "{target}/doc?n={tag}",
@@ -1097,17 +1045,17 @@
1097
1045
  },
1098
1046
  {
1099
1047
  "hops": [
1100
- {
1101
- "origin": "{cross}",
1102
- "code": 303
1103
- },
1104
1048
  {
1105
1049
  "origin": "{ordinary}",
1106
- "code": 301
1050
+ "code": 307
1107
1051
  },
1108
1052
  {
1109
1053
  "origin": "{cross}",
1110
1054
  "code": 308
1055
+ },
1056
+ {
1057
+ "origin": "{ordinary}",
1058
+ "code": 302
1111
1059
  }
1112
1060
  ],
1113
1061
  "to": "{target}/doc?n={tag}",
@@ -1115,17 +1063,17 @@
1115
1063
  },
1116
1064
  {
1117
1065
  "hops": [
1118
- {
1119
- "origin": "{cross}",
1120
- "code": 303
1121
- },
1122
1066
  {
1123
1067
  "origin": "{ordinary}",
1124
- "code": 301
1068
+ "code": 307
1125
1069
  },
1126
1070
  {
1127
1071
  "origin": "{cross}",
1128
1072
  "code": 308
1073
+ },
1074
+ {
1075
+ "origin": "{ordinary}",
1076
+ "code": 302
1129
1077
  }
1130
1078
  ],
1131
1079
  "to": "{target}/doc?n={tag}",
@@ -1143,17 +1091,17 @@
1143
1091
  "anyOf": [
1144
1092
  {
1145
1093
  "hops": [
1146
- {
1147
- "origin": "{cross}",
1148
- "code": 303
1149
- },
1150
1094
  {
1151
1095
  "origin": "{ordinary}",
1152
- "code": 301
1096
+ "code": 307
1153
1097
  },
1154
1098
  {
1155
1099
  "origin": "{cross}",
1156
1100
  "code": 308
1101
+ },
1102
+ {
1103
+ "origin": "{ordinary}",
1104
+ "code": 302
1157
1105
  }
1158
1106
  ],
1159
1107
  "to": "{target}/doc?n={tag}",
@@ -1161,35 +1109,99 @@
1161
1109
  },
1162
1110
  {
1163
1111
  "hops": [
1112
+ {
1113
+ "origin": "{ordinary}",
1114
+ "code": 307
1115
+ },
1164
1116
  {
1165
1117
  "origin": "{cross}",
1166
- "code": 303
1118
+ "code": 308
1167
1119
  },
1168
1120
  {
1169
1121
  "origin": "{ordinary}",
1170
- "code": 301
1122
+ "code": 302
1123
+ }
1124
+ ],
1125
+ "to": "{target}/doc?n={tag}",
1126
+ "index": 1
1127
+ },
1128
+ {
1129
+ "hops": [
1130
+ {
1131
+ "origin": "{ordinary}",
1132
+ "code": 307
1171
1133
  },
1172
1134
  {
1173
1135
  "origin": "{cross}",
1174
1136
  "code": 308
1137
+ },
1138
+ {
1139
+ "origin": "{ordinary}",
1140
+ "code": 302
1175
1141
  }
1176
1142
  ],
1177
1143
  "to": "{target}/doc?n={tag}",
1178
- "index": 1
1144
+ "index": 2
1179
1145
  },
1146
+ "{target}/doc?n={tag}"
1147
+ ],
1148
+ "session": "page",
1149
+ "frame": false
1150
+ },
1151
+ "observer": "unguarded"
1152
+ },
1153
+ {
1154
+ "history": {
1155
+ "anyOf": [
1180
1156
  {
1181
1157
  "hops": [
1158
+ {
1159
+ "origin": "{ordinary}",
1160
+ "code": 307
1161
+ },
1182
1162
  {
1183
1163
  "origin": "{cross}",
1184
- "code": 303
1164
+ "code": 308
1185
1165
  },
1186
1166
  {
1187
1167
  "origin": "{ordinary}",
1188
- "code": 301
1168
+ "code": 302
1169
+ }
1170
+ ],
1171
+ "to": "{target}/doc?n={tag}",
1172
+ "index": 0
1173
+ },
1174
+ {
1175
+ "hops": [
1176
+ {
1177
+ "origin": "{ordinary}",
1178
+ "code": 307
1179
+ },
1180
+ {
1181
+ "origin": "{cross}",
1182
+ "code": 308
1183
+ },
1184
+ {
1185
+ "origin": "{ordinary}",
1186
+ "code": 302
1187
+ }
1188
+ ],
1189
+ "to": "{target}/doc?n={tag}",
1190
+ "index": 1
1191
+ },
1192
+ {
1193
+ "hops": [
1194
+ {
1195
+ "origin": "{ordinary}",
1196
+ "code": 307
1189
1197
  },
1190
1198
  {
1191
1199
  "origin": "{cross}",
1192
1200
  "code": 308
1201
+ },
1202
+ {
1203
+ "origin": "{ordinary}",
1204
+ "code": 302
1193
1205
  }
1194
1206
  ],
1195
1207
  "to": "{target}/doc?n={tag}",
@@ -1197,8 +1209,7 @@
1197
1209
  },
1198
1210
  "{target}/doc?n={tag}"
1199
1211
  ],
1200
- "session": "page",
1201
- "frame": false
1212
+ "session": "page"
1202
1213
  },
1203
1214
  "observer": "unguarded"
1204
1215
  }
@@ -1207,118 +1218,6 @@
1207
1218
  }
1208
1219
  ],
1209
1220
  "observer": "client"
1210
- },
1211
- {
1212
- "registration": "any",
1213
- "observer": "client"
1214
- }
1215
- ],
1216
- "observer": "client"
1217
- }
1218
- },
1219
- {
1220
- "id": "C2.post-307-308",
1221
- "family": "C",
1222
- "kind": "cdp",
1223
- "scope": "any",
1224
- "setup": [
1225
- {
1226
- "text": "an allowed tab with an init script that beacons its origin"
1227
- },
1228
- {
1229
- "page": "tab",
1230
- "url": "{ordinary}/doc?n=start"
1231
- },
1232
- {
1233
- "cdp": "Page.enable"
1234
- },
1235
- {
1236
- "cdp": "Page.addScriptToEvaluateOnNewDocument",
1237
- "params": {
1238
- "source": "{beacon}"
1239
- },
1240
- "refusable": true,
1241
- "refusal": {
1242
- "match": "refused"
1243
- }
1244
- },
1245
- {
1246
- "cdp": "Page.setBypassCSP",
1247
- "params": {
1248
- "enabled": true
1249
- },
1250
- "refusable": true,
1251
- "refusal": {
1252
- "match": "refused"
1253
- }
1254
- },
1255
- {
1256
- "page": "navigate",
1257
- "url": "{ordinary}/doc?n=next-{tag}"
1258
- }
1259
- ],
1260
- "trigger": [
1261
- {
1262
- "page": "post",
1263
- "url": "{target}/doc?n={tag}",
1264
- "hops": [
1265
- {
1266
- "origin": "{ordinary}",
1267
- "code": 307
1268
- },
1269
- {
1270
- "origin": "{cross}",
1271
- "code": 308
1272
- }
1273
- ]
1274
- },
1275
- {
1276
- "settle": {
1277
- "beacon": "{target}"
1278
- }
1279
- }
1280
- ],
1281
- "targets": ["seven", "vault", "vault-x", "apex", "own"],
1282
- "observe": {
1283
- "allowedBeacon": {
1284
- "means": "a beacon from {ordinary}",
1285
- "dependsOn": ["refused.3"],
1286
- "check": {
1287
- "any": [
1288
- {
1289
- "beacon": "{ordinary}",
1290
- "observer": "fixture"
1291
- },
1292
- {
1293
- "beacon": "{ordinary-same-site}",
1294
- "observer": "fixture"
1295
- }
1296
- ],
1297
- "observer": "client"
1298
- }
1299
- },
1300
- "beacon": {
1301
- "means": "a beacon from {target}",
1302
- "dependsOn": ["refused.3"],
1303
- "check": {
1304
- "beacon": "{target}",
1305
- "observer": "fixture"
1306
- }
1307
- },
1308
- "loaded": {
1309
- "means": "the stand-in served {target}/doc?n={tag}",
1310
- "dependsOn": [],
1311
- "check": {
1312
- "served": "{target}/doc?n={tag}",
1313
- "observer": "fixture"
1314
- }
1315
- },
1316
- "detached": {
1317
- "means": "the page session was detached",
1318
- "dependsOn": ["refused.3", "refused.4"],
1319
- "check": {
1320
- "detached": "page",
1321
- "observer": "client"
1322
1221
  }
1323
1222
  },
1324
1223
  "hopped": {
@@ -1333,6 +1232,10 @@
1333
1232
  {
1334
1233
  "origin": "{cross}",
1335
1234
  "code": 308
1235
+ },
1236
+ {
1237
+ "origin": "{ordinary}",
1238
+ "code": 302
1336
1239
  }
1337
1240
  ],
1338
1241
  "to": "{target}/doc?n={tag}",
@@ -1362,7 +1265,7 @@
1362
1265
  "observable": {
1363
1266
  "own": false
1364
1267
  },
1365
- "designDependent": ["loaded"],
1268
+ "designDependent": ["loaded", "detached"],
1366
1269
  "liveCheck": {
1367
1270
  "any": [
1368
1271
  {
@@ -1381,6 +1284,10 @@
1381
1284
  {
1382
1285
  "origin": "{cross}",
1383
1286
  "code": 308
1287
+ },
1288
+ {
1289
+ "origin": "{ordinary}",
1290
+ "code": 302
1384
1291
  }
1385
1292
  ],
1386
1293
  "to": "{target}/doc?n={tag}"
@@ -1401,6 +1308,10 @@
1401
1308
  {
1402
1309
  "origin": "{cross}",
1403
1310
  "code": 308
1311
+ },
1312
+ {
1313
+ "origin": "{ordinary}",
1314
+ "code": 302
1404
1315
  }
1405
1316
  ],
1406
1317
  "to": "{target}/doc?n={tag}",
@@ -1415,11 +1326,33 @@
1415
1326
  {
1416
1327
  "origin": "{cross}",
1417
1328
  "code": 308
1329
+ },
1330
+ {
1331
+ "origin": "{ordinary}",
1332
+ "code": 302
1418
1333
  }
1419
1334
  ],
1420
1335
  "to": "{target}/doc?n={tag}",
1421
1336
  "index": 1
1422
1337
  },
1338
+ {
1339
+ "hops": [
1340
+ {
1341
+ "origin": "{ordinary}",
1342
+ "code": 307
1343
+ },
1344
+ {
1345
+ "origin": "{cross}",
1346
+ "code": 308
1347
+ },
1348
+ {
1349
+ "origin": "{ordinary}",
1350
+ "code": 302
1351
+ }
1352
+ ],
1353
+ "to": "{target}/doc?n={tag}",
1354
+ "index": 2
1355
+ },
1423
1356
  "{target}/doc?n={tag}"
1424
1357
  ],
1425
1358
  "session": "page",
@@ -1439,6 +1372,10 @@
1439
1372
  {
1440
1373
  "origin": "{cross}",
1441
1374
  "code": 308
1375
+ },
1376
+ {
1377
+ "origin": "{ordinary}",
1378
+ "code": 302
1442
1379
  }
1443
1380
  ],
1444
1381
  "to": "{target}/doc?n={tag}",
@@ -1453,18 +1390,1592 @@
1453
1390
  {
1454
1391
  "origin": "{cross}",
1455
1392
  "code": 308
1393
+ },
1394
+ {
1395
+ "origin": "{ordinary}",
1396
+ "code": 302
1456
1397
  }
1457
1398
  ],
1458
1399
  "to": "{target}/doc?n={tag}",
1459
1400
  "index": 1
1460
1401
  },
1402
+ {
1403
+ "hops": [
1404
+ {
1405
+ "origin": "{ordinary}",
1406
+ "code": 307
1407
+ },
1408
+ {
1409
+ "origin": "{cross}",
1410
+ "code": 308
1411
+ },
1412
+ {
1413
+ "origin": "{ordinary}",
1414
+ "code": 302
1415
+ }
1416
+ ],
1417
+ "to": "{target}/doc?n={tag}",
1418
+ "index": 2
1419
+ },
1461
1420
  "{target}/doc?n={tag}"
1462
1421
  ],
1463
1422
  "session": "page",
1464
1423
  "frame": false
1465
1424
  },
1466
1425
  "observer": "unguarded"
1467
- }
1426
+ },
1427
+ {
1428
+ "history": {
1429
+ "anyOf": [
1430
+ {
1431
+ "hops": [
1432
+ {
1433
+ "origin": "{ordinary}",
1434
+ "code": 307
1435
+ },
1436
+ {
1437
+ "origin": "{cross}",
1438
+ "code": 308
1439
+ },
1440
+ {
1441
+ "origin": "{ordinary}",
1442
+ "code": 302
1443
+ }
1444
+ ],
1445
+ "to": "{target}/doc?n={tag}",
1446
+ "index": 0
1447
+ },
1448
+ {
1449
+ "hops": [
1450
+ {
1451
+ "origin": "{ordinary}",
1452
+ "code": 307
1453
+ },
1454
+ {
1455
+ "origin": "{cross}",
1456
+ "code": 308
1457
+ },
1458
+ {
1459
+ "origin": "{ordinary}",
1460
+ "code": 302
1461
+ }
1462
+ ],
1463
+ "to": "{target}/doc?n={tag}",
1464
+ "index": 1
1465
+ },
1466
+ {
1467
+ "hops": [
1468
+ {
1469
+ "origin": "{ordinary}",
1470
+ "code": 307
1471
+ },
1472
+ {
1473
+ "origin": "{cross}",
1474
+ "code": 308
1475
+ },
1476
+ {
1477
+ "origin": "{ordinary}",
1478
+ "code": 302
1479
+ }
1480
+ ],
1481
+ "to": "{target}/doc?n={tag}",
1482
+ "index": 2
1483
+ },
1484
+ "{target}/doc?n={tag}"
1485
+ ],
1486
+ "session": "page"
1487
+ },
1488
+ "observer": "unguarded"
1489
+ }
1490
+ ],
1491
+ "observer": "client"
1492
+ }
1493
+ ],
1494
+ "observer": "client"
1495
+ },
1496
+ {
1497
+ "registration": "any",
1498
+ "observer": "client"
1499
+ }
1500
+ ],
1501
+ "observer": "client"
1502
+ }
1503
+ },
1504
+ {
1505
+ "id": "C2.chain-303-301-308",
1506
+ "family": "C",
1507
+ "kind": "cdp",
1508
+ "scope": "any",
1509
+ "setup": [
1510
+ {
1511
+ "text": "an allowed tab with an init script that beacons its origin"
1512
+ },
1513
+ {
1514
+ "page": "tab",
1515
+ "url": "{ordinary}/doc?n=start"
1516
+ },
1517
+ {
1518
+ "cdp": "Page.enable"
1519
+ },
1520
+ {
1521
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
1522
+ "params": {
1523
+ "source": "{beacon}"
1524
+ },
1525
+ "refusable": true,
1526
+ "refusal": {
1527
+ "match": "refused"
1528
+ }
1529
+ },
1530
+ {
1531
+ "cdp": "Page.setBypassCSP",
1532
+ "params": {
1533
+ "enabled": true
1534
+ },
1535
+ "refusable": true,
1536
+ "refusal": {
1537
+ "match": "refused"
1538
+ }
1539
+ },
1540
+ {
1541
+ "page": "navigate",
1542
+ "url": "{ordinary}/doc?n=next-{tag}"
1543
+ }
1544
+ ],
1545
+ "trigger": [
1546
+ {
1547
+ "page": "href",
1548
+ "url": "{target}/doc?n={tag}",
1549
+ "hops": [
1550
+ {
1551
+ "origin": "{cross}",
1552
+ "code": 303
1553
+ },
1554
+ {
1555
+ "origin": "{ordinary}",
1556
+ "code": 301
1557
+ },
1558
+ {
1559
+ "origin": "{cross}",
1560
+ "code": 308
1561
+ }
1562
+ ]
1563
+ },
1564
+ {
1565
+ "settle": {
1566
+ "beacon": "{target}"
1567
+ }
1568
+ }
1569
+ ],
1570
+ "targets": ["seven", "vault", "vault-x", "apex", "own"],
1571
+ "observe": {
1572
+ "allowedBeacon": {
1573
+ "means": "a beacon from {ordinary}",
1574
+ "dependsOn": ["refused.3"],
1575
+ "check": {
1576
+ "any": [
1577
+ {
1578
+ "beacon": "{ordinary}",
1579
+ "observer": "fixture"
1580
+ },
1581
+ {
1582
+ "beacon": "{ordinary-same-site}",
1583
+ "observer": "fixture"
1584
+ }
1585
+ ],
1586
+ "observer": "client"
1587
+ }
1588
+ },
1589
+ "beacon": {
1590
+ "means": "a beacon from {target}",
1591
+ "dependsOn": ["refused.3"],
1592
+ "check": {
1593
+ "beacon": "{target}",
1594
+ "observer": "fixture"
1595
+ }
1596
+ },
1597
+ "loaded": {
1598
+ "means": "the stand-in served {target}/doc?n={tag}",
1599
+ "dependsOn": [],
1600
+ "check": {
1601
+ "served": "{target}/doc?n={tag}",
1602
+ "observer": "fixture"
1603
+ }
1604
+ },
1605
+ "detached": {
1606
+ "means": "the page session was detached",
1607
+ "dependsOn": ["refused.3", "refused.4"],
1608
+ "check": {
1609
+ "detached": "page",
1610
+ "observer": "client"
1611
+ },
1612
+ "eitherWhen": {
1613
+ "all": [
1614
+ {
1615
+ "pre": {
1616
+ "hops": [
1617
+ {
1618
+ "origin": "{cross}",
1619
+ "code": 303
1620
+ },
1621
+ {
1622
+ "origin": "{ordinary}",
1623
+ "code": 301
1624
+ },
1625
+ {
1626
+ "origin": "{cross}",
1627
+ "code": 308
1628
+ }
1629
+ ],
1630
+ "to": "{target}/doc?n={tag}"
1631
+ },
1632
+ "observer": "fixture"
1633
+ },
1634
+ {
1635
+ "any": [
1636
+ {
1637
+ "blocked": {
1638
+ "anyOf": [
1639
+ {
1640
+ "hops": [
1641
+ {
1642
+ "origin": "{cross}",
1643
+ "code": 303
1644
+ },
1645
+ {
1646
+ "origin": "{ordinary}",
1647
+ "code": 301
1648
+ },
1649
+ {
1650
+ "origin": "{cross}",
1651
+ "code": 308
1652
+ }
1653
+ ],
1654
+ "to": "{target}/doc?n={tag}",
1655
+ "index": 0
1656
+ },
1657
+ {
1658
+ "hops": [
1659
+ {
1660
+ "origin": "{cross}",
1661
+ "code": 303
1662
+ },
1663
+ {
1664
+ "origin": "{ordinary}",
1665
+ "code": 301
1666
+ },
1667
+ {
1668
+ "origin": "{cross}",
1669
+ "code": 308
1670
+ }
1671
+ ],
1672
+ "to": "{target}/doc?n={tag}",
1673
+ "index": 1
1674
+ },
1675
+ {
1676
+ "hops": [
1677
+ {
1678
+ "origin": "{cross}",
1679
+ "code": 303
1680
+ },
1681
+ {
1682
+ "origin": "{ordinary}",
1683
+ "code": 301
1684
+ },
1685
+ {
1686
+ "origin": "{cross}",
1687
+ "code": 308
1688
+ }
1689
+ ],
1690
+ "to": "{target}/doc?n={tag}",
1691
+ "index": 2
1692
+ },
1693
+ "{target}/doc?n={tag}"
1694
+ ],
1695
+ "session": "page",
1696
+ "frame": false
1697
+ },
1698
+ "observer": "client"
1699
+ },
1700
+ {
1701
+ "blocked": {
1702
+ "anyOf": [
1703
+ {
1704
+ "hops": [
1705
+ {
1706
+ "origin": "{cross}",
1707
+ "code": 303
1708
+ },
1709
+ {
1710
+ "origin": "{ordinary}",
1711
+ "code": 301
1712
+ },
1713
+ {
1714
+ "origin": "{cross}",
1715
+ "code": 308
1716
+ }
1717
+ ],
1718
+ "to": "{target}/doc?n={tag}",
1719
+ "index": 0
1720
+ },
1721
+ {
1722
+ "hops": [
1723
+ {
1724
+ "origin": "{cross}",
1725
+ "code": 303
1726
+ },
1727
+ {
1728
+ "origin": "{ordinary}",
1729
+ "code": 301
1730
+ },
1731
+ {
1732
+ "origin": "{cross}",
1733
+ "code": 308
1734
+ }
1735
+ ],
1736
+ "to": "{target}/doc?n={tag}",
1737
+ "index": 1
1738
+ },
1739
+ {
1740
+ "hops": [
1741
+ {
1742
+ "origin": "{cross}",
1743
+ "code": 303
1744
+ },
1745
+ {
1746
+ "origin": "{ordinary}",
1747
+ "code": 301
1748
+ },
1749
+ {
1750
+ "origin": "{cross}",
1751
+ "code": 308
1752
+ }
1753
+ ],
1754
+ "to": "{target}/doc?n={tag}",
1755
+ "index": 2
1756
+ },
1757
+ "{target}/doc?n={tag}"
1758
+ ],
1759
+ "session": "page",
1760
+ "frame": false
1761
+ },
1762
+ "observer": "unguarded"
1763
+ },
1764
+ {
1765
+ "history": {
1766
+ "anyOf": [
1767
+ {
1768
+ "hops": [
1769
+ {
1770
+ "origin": "{cross}",
1771
+ "code": 303
1772
+ },
1773
+ {
1774
+ "origin": "{ordinary}",
1775
+ "code": 301
1776
+ },
1777
+ {
1778
+ "origin": "{cross}",
1779
+ "code": 308
1780
+ }
1781
+ ],
1782
+ "to": "{target}/doc?n={tag}",
1783
+ "index": 0
1784
+ },
1785
+ {
1786
+ "hops": [
1787
+ {
1788
+ "origin": "{cross}",
1789
+ "code": 303
1790
+ },
1791
+ {
1792
+ "origin": "{ordinary}",
1793
+ "code": 301
1794
+ },
1795
+ {
1796
+ "origin": "{cross}",
1797
+ "code": 308
1798
+ }
1799
+ ],
1800
+ "to": "{target}/doc?n={tag}",
1801
+ "index": 1
1802
+ },
1803
+ {
1804
+ "hops": [
1805
+ {
1806
+ "origin": "{cross}",
1807
+ "code": 303
1808
+ },
1809
+ {
1810
+ "origin": "{ordinary}",
1811
+ "code": 301
1812
+ },
1813
+ {
1814
+ "origin": "{cross}",
1815
+ "code": 308
1816
+ }
1817
+ ],
1818
+ "to": "{target}/doc?n={tag}",
1819
+ "index": 2
1820
+ },
1821
+ "{target}/doc?n={tag}"
1822
+ ],
1823
+ "session": "page"
1824
+ },
1825
+ "observer": "unguarded"
1826
+ }
1827
+ ],
1828
+ "observer": "client"
1829
+ }
1830
+ ],
1831
+ "observer": "client"
1832
+ }
1833
+ },
1834
+ "hopped": {
1835
+ "means": "every hop in the chain was served",
1836
+ "dependsOn": [],
1837
+ "check": {
1838
+ "hops": [
1839
+ {
1840
+ "origin": "{cross}",
1841
+ "code": 303
1842
+ },
1843
+ {
1844
+ "origin": "{ordinary}",
1845
+ "code": 301
1846
+ },
1847
+ {
1848
+ "origin": "{cross}",
1849
+ "code": 308
1850
+ }
1851
+ ],
1852
+ "to": "{target}/doc?n={tag}",
1853
+ "observer": "fixture"
1854
+ }
1855
+ }
1856
+ },
1857
+ "live": "the runner's own CDP sees {target}'s document load (title, marker or URL), or the guard returned its refusal for a refusable step",
1858
+ "control": {
1859
+ "origin": "ordinary",
1860
+ "via": "guard",
1861
+ "expected": {
1862
+ "allowedBeacon": true,
1863
+ "beacon": true,
1864
+ "loaded": true,
1865
+ "detached": false,
1866
+ "hopped": true
1867
+ }
1868
+ },
1869
+ "expected": {
1870
+ "allowedBeacon": true,
1871
+ "beacon": false,
1872
+ "loaded": "either",
1873
+ "detached": true,
1874
+ "hopped": true
1875
+ },
1876
+ "observable": {
1877
+ "own": false
1878
+ },
1879
+ "designDependent": ["loaded", "detached"],
1880
+ "liveCheck": {
1881
+ "any": [
1882
+ {
1883
+ "loaded": "{target}/doc?n={tag}",
1884
+ "observer": "fixture"
1885
+ },
1886
+ {
1887
+ "all": [
1888
+ {
1889
+ "pre": {
1890
+ "hops": [
1891
+ {
1892
+ "origin": "{cross}",
1893
+ "code": 303
1894
+ },
1895
+ {
1896
+ "origin": "{ordinary}",
1897
+ "code": 301
1898
+ },
1899
+ {
1900
+ "origin": "{cross}",
1901
+ "code": 308
1902
+ }
1903
+ ],
1904
+ "to": "{target}/doc?n={tag}"
1905
+ },
1906
+ "observer": "fixture"
1907
+ },
1908
+ {
1909
+ "any": [
1910
+ {
1911
+ "blocked": {
1912
+ "anyOf": [
1913
+ {
1914
+ "hops": [
1915
+ {
1916
+ "origin": "{cross}",
1917
+ "code": 303
1918
+ },
1919
+ {
1920
+ "origin": "{ordinary}",
1921
+ "code": 301
1922
+ },
1923
+ {
1924
+ "origin": "{cross}",
1925
+ "code": 308
1926
+ }
1927
+ ],
1928
+ "to": "{target}/doc?n={tag}",
1929
+ "index": 0
1930
+ },
1931
+ {
1932
+ "hops": [
1933
+ {
1934
+ "origin": "{cross}",
1935
+ "code": 303
1936
+ },
1937
+ {
1938
+ "origin": "{ordinary}",
1939
+ "code": 301
1940
+ },
1941
+ {
1942
+ "origin": "{cross}",
1943
+ "code": 308
1944
+ }
1945
+ ],
1946
+ "to": "{target}/doc?n={tag}",
1947
+ "index": 1
1948
+ },
1949
+ {
1950
+ "hops": [
1951
+ {
1952
+ "origin": "{cross}",
1953
+ "code": 303
1954
+ },
1955
+ {
1956
+ "origin": "{ordinary}",
1957
+ "code": 301
1958
+ },
1959
+ {
1960
+ "origin": "{cross}",
1961
+ "code": 308
1962
+ }
1963
+ ],
1964
+ "to": "{target}/doc?n={tag}",
1965
+ "index": 2
1966
+ },
1967
+ "{target}/doc?n={tag}"
1968
+ ],
1969
+ "session": "page",
1970
+ "frame": false
1971
+ },
1972
+ "observer": "client"
1973
+ },
1974
+ {
1975
+ "blocked": {
1976
+ "anyOf": [
1977
+ {
1978
+ "hops": [
1979
+ {
1980
+ "origin": "{cross}",
1981
+ "code": 303
1982
+ },
1983
+ {
1984
+ "origin": "{ordinary}",
1985
+ "code": 301
1986
+ },
1987
+ {
1988
+ "origin": "{cross}",
1989
+ "code": 308
1990
+ }
1991
+ ],
1992
+ "to": "{target}/doc?n={tag}",
1993
+ "index": 0
1994
+ },
1995
+ {
1996
+ "hops": [
1997
+ {
1998
+ "origin": "{cross}",
1999
+ "code": 303
2000
+ },
2001
+ {
2002
+ "origin": "{ordinary}",
2003
+ "code": 301
2004
+ },
2005
+ {
2006
+ "origin": "{cross}",
2007
+ "code": 308
2008
+ }
2009
+ ],
2010
+ "to": "{target}/doc?n={tag}",
2011
+ "index": 1
2012
+ },
2013
+ {
2014
+ "hops": [
2015
+ {
2016
+ "origin": "{cross}",
2017
+ "code": 303
2018
+ },
2019
+ {
2020
+ "origin": "{ordinary}",
2021
+ "code": 301
2022
+ },
2023
+ {
2024
+ "origin": "{cross}",
2025
+ "code": 308
2026
+ }
2027
+ ],
2028
+ "to": "{target}/doc?n={tag}",
2029
+ "index": 2
2030
+ },
2031
+ "{target}/doc?n={tag}"
2032
+ ],
2033
+ "session": "page",
2034
+ "frame": false
2035
+ },
2036
+ "observer": "unguarded"
2037
+ },
2038
+ {
2039
+ "history": {
2040
+ "anyOf": [
2041
+ {
2042
+ "hops": [
2043
+ {
2044
+ "origin": "{cross}",
2045
+ "code": 303
2046
+ },
2047
+ {
2048
+ "origin": "{ordinary}",
2049
+ "code": 301
2050
+ },
2051
+ {
2052
+ "origin": "{cross}",
2053
+ "code": 308
2054
+ }
2055
+ ],
2056
+ "to": "{target}/doc?n={tag}",
2057
+ "index": 0
2058
+ },
2059
+ {
2060
+ "hops": [
2061
+ {
2062
+ "origin": "{cross}",
2063
+ "code": 303
2064
+ },
2065
+ {
2066
+ "origin": "{ordinary}",
2067
+ "code": 301
2068
+ },
2069
+ {
2070
+ "origin": "{cross}",
2071
+ "code": 308
2072
+ }
2073
+ ],
2074
+ "to": "{target}/doc?n={tag}",
2075
+ "index": 1
2076
+ },
2077
+ {
2078
+ "hops": [
2079
+ {
2080
+ "origin": "{cross}",
2081
+ "code": 303
2082
+ },
2083
+ {
2084
+ "origin": "{ordinary}",
2085
+ "code": 301
2086
+ },
2087
+ {
2088
+ "origin": "{cross}",
2089
+ "code": 308
2090
+ }
2091
+ ],
2092
+ "to": "{target}/doc?n={tag}",
2093
+ "index": 2
2094
+ },
2095
+ "{target}/doc?n={tag}"
2096
+ ],
2097
+ "session": "page"
2098
+ },
2099
+ "observer": "unguarded"
2100
+ }
2101
+ ],
2102
+ "observer": "client"
2103
+ }
2104
+ ],
2105
+ "observer": "client"
2106
+ },
2107
+ {
2108
+ "registration": "any",
2109
+ "observer": "client"
2110
+ }
2111
+ ],
2112
+ "observer": "client"
2113
+ }
2114
+ },
2115
+ {
2116
+ "id": "C2.post-307-308",
2117
+ "family": "C",
2118
+ "kind": "cdp",
2119
+ "scope": "any",
2120
+ "setup": [
2121
+ {
2122
+ "text": "an allowed tab with an init script that beacons its origin"
2123
+ },
2124
+ {
2125
+ "page": "tab",
2126
+ "url": "{ordinary}/doc?n=start"
2127
+ },
2128
+ {
2129
+ "cdp": "Page.enable"
2130
+ },
2131
+ {
2132
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
2133
+ "params": {
2134
+ "source": "{beacon}"
2135
+ },
2136
+ "refusable": true,
2137
+ "refusal": {
2138
+ "match": "refused"
2139
+ }
2140
+ },
2141
+ {
2142
+ "cdp": "Page.setBypassCSP",
2143
+ "params": {
2144
+ "enabled": true
2145
+ },
2146
+ "refusable": true,
2147
+ "refusal": {
2148
+ "match": "refused"
2149
+ }
2150
+ },
2151
+ {
2152
+ "page": "navigate",
2153
+ "url": "{ordinary}/doc?n=next-{tag}"
2154
+ }
2155
+ ],
2156
+ "trigger": [
2157
+ {
2158
+ "page": "post",
2159
+ "url": "{target}/doc?n={tag}",
2160
+ "hops": [
2161
+ {
2162
+ "origin": "{ordinary}",
2163
+ "code": 307
2164
+ },
2165
+ {
2166
+ "origin": "{cross}",
2167
+ "code": 308
2168
+ }
2169
+ ]
2170
+ },
2171
+ {
2172
+ "settle": {
2173
+ "beacon": "{target}"
2174
+ }
2175
+ }
2176
+ ],
2177
+ "targets": ["seven", "vault", "vault-x", "apex", "own"],
2178
+ "observe": {
2179
+ "allowedBeacon": {
2180
+ "means": "a beacon from {ordinary}",
2181
+ "dependsOn": ["refused.3"],
2182
+ "check": {
2183
+ "any": [
2184
+ {
2185
+ "beacon": "{ordinary}",
2186
+ "observer": "fixture"
2187
+ },
2188
+ {
2189
+ "beacon": "{ordinary-same-site}",
2190
+ "observer": "fixture"
2191
+ }
2192
+ ],
2193
+ "observer": "client"
2194
+ }
2195
+ },
2196
+ "beacon": {
2197
+ "means": "a beacon from {target}",
2198
+ "dependsOn": ["refused.3"],
2199
+ "check": {
2200
+ "beacon": "{target}",
2201
+ "observer": "fixture"
2202
+ }
2203
+ },
2204
+ "loaded": {
2205
+ "means": "the stand-in served {target}/doc?n={tag}",
2206
+ "dependsOn": [],
2207
+ "check": {
2208
+ "served": "{target}/doc?n={tag}",
2209
+ "observer": "fixture"
2210
+ }
2211
+ },
2212
+ "detached": {
2213
+ "means": "the page session was detached",
2214
+ "dependsOn": ["refused.3", "refused.4"],
2215
+ "check": {
2216
+ "detached": "page",
2217
+ "observer": "client"
2218
+ },
2219
+ "eitherWhen": {
2220
+ "all": [
2221
+ {
2222
+ "pre": {
2223
+ "hops": [
2224
+ {
2225
+ "origin": "{ordinary}",
2226
+ "code": 307
2227
+ },
2228
+ {
2229
+ "origin": "{cross}",
2230
+ "code": 308
2231
+ }
2232
+ ],
2233
+ "to": "{target}/doc?n={tag}"
2234
+ },
2235
+ "observer": "fixture"
2236
+ },
2237
+ {
2238
+ "any": [
2239
+ {
2240
+ "blocked": {
2241
+ "anyOf": [
2242
+ {
2243
+ "hops": [
2244
+ {
2245
+ "origin": "{ordinary}",
2246
+ "code": 307
2247
+ },
2248
+ {
2249
+ "origin": "{cross}",
2250
+ "code": 308
2251
+ }
2252
+ ],
2253
+ "to": "{target}/doc?n={tag}",
2254
+ "index": 0
2255
+ },
2256
+ {
2257
+ "hops": [
2258
+ {
2259
+ "origin": "{ordinary}",
2260
+ "code": 307
2261
+ },
2262
+ {
2263
+ "origin": "{cross}",
2264
+ "code": 308
2265
+ }
2266
+ ],
2267
+ "to": "{target}/doc?n={tag}",
2268
+ "index": 1
2269
+ },
2270
+ "{target}/doc?n={tag}"
2271
+ ],
2272
+ "session": "page",
2273
+ "frame": false
2274
+ },
2275
+ "observer": "client"
2276
+ },
2277
+ {
2278
+ "blocked": {
2279
+ "anyOf": [
2280
+ {
2281
+ "hops": [
2282
+ {
2283
+ "origin": "{ordinary}",
2284
+ "code": 307
2285
+ },
2286
+ {
2287
+ "origin": "{cross}",
2288
+ "code": 308
2289
+ }
2290
+ ],
2291
+ "to": "{target}/doc?n={tag}",
2292
+ "index": 0
2293
+ },
2294
+ {
2295
+ "hops": [
2296
+ {
2297
+ "origin": "{ordinary}",
2298
+ "code": 307
2299
+ },
2300
+ {
2301
+ "origin": "{cross}",
2302
+ "code": 308
2303
+ }
2304
+ ],
2305
+ "to": "{target}/doc?n={tag}",
2306
+ "index": 1
2307
+ },
2308
+ "{target}/doc?n={tag}"
2309
+ ],
2310
+ "session": "page",
2311
+ "frame": false
2312
+ },
2313
+ "observer": "unguarded"
2314
+ },
2315
+ {
2316
+ "history": {
2317
+ "anyOf": [
2318
+ {
2319
+ "hops": [
2320
+ {
2321
+ "origin": "{ordinary}",
2322
+ "code": 307
2323
+ },
2324
+ {
2325
+ "origin": "{cross}",
2326
+ "code": 308
2327
+ }
2328
+ ],
2329
+ "to": "{target}/doc?n={tag}",
2330
+ "index": 0
2331
+ },
2332
+ {
2333
+ "hops": [
2334
+ {
2335
+ "origin": "{ordinary}",
2336
+ "code": 307
2337
+ },
2338
+ {
2339
+ "origin": "{cross}",
2340
+ "code": 308
2341
+ }
2342
+ ],
2343
+ "to": "{target}/doc?n={tag}",
2344
+ "index": 1
2345
+ },
2346
+ "{target}/doc?n={tag}"
2347
+ ],
2348
+ "session": "page"
2349
+ },
2350
+ "observer": "unguarded"
2351
+ }
2352
+ ],
2353
+ "observer": "client"
2354
+ }
2355
+ ],
2356
+ "observer": "client"
2357
+ }
2358
+ },
2359
+ "hopped": {
2360
+ "means": "every hop in the chain was served",
2361
+ "dependsOn": [],
2362
+ "check": {
2363
+ "hops": [
2364
+ {
2365
+ "origin": "{ordinary}",
2366
+ "code": 307
2367
+ },
2368
+ {
2369
+ "origin": "{cross}",
2370
+ "code": 308
2371
+ }
2372
+ ],
2373
+ "to": "{target}/doc?n={tag}",
2374
+ "observer": "fixture"
2375
+ }
2376
+ }
2377
+ },
2378
+ "live": "the runner's own CDP sees {target}'s document load (title, marker or URL), or the guard returned its refusal for a refusable step",
2379
+ "control": {
2380
+ "origin": "ordinary",
2381
+ "via": "guard",
2382
+ "expected": {
2383
+ "allowedBeacon": true,
2384
+ "beacon": true,
2385
+ "loaded": true,
2386
+ "detached": false,
2387
+ "hopped": true
2388
+ }
2389
+ },
2390
+ "expected": {
2391
+ "allowedBeacon": true,
2392
+ "beacon": false,
2393
+ "loaded": "either",
2394
+ "detached": true,
2395
+ "hopped": true
2396
+ },
2397
+ "observable": {
2398
+ "own": false
2399
+ },
2400
+ "designDependent": ["loaded", "detached"],
2401
+ "liveCheck": {
2402
+ "any": [
2403
+ {
2404
+ "loaded": "{target}/doc?n={tag}",
2405
+ "observer": "fixture"
2406
+ },
2407
+ {
2408
+ "all": [
2409
+ {
2410
+ "pre": {
2411
+ "hops": [
2412
+ {
2413
+ "origin": "{ordinary}",
2414
+ "code": 307
2415
+ },
2416
+ {
2417
+ "origin": "{cross}",
2418
+ "code": 308
2419
+ }
2420
+ ],
2421
+ "to": "{target}/doc?n={tag}"
2422
+ },
2423
+ "observer": "fixture"
2424
+ },
2425
+ {
2426
+ "any": [
2427
+ {
2428
+ "blocked": {
2429
+ "anyOf": [
2430
+ {
2431
+ "hops": [
2432
+ {
2433
+ "origin": "{ordinary}",
2434
+ "code": 307
2435
+ },
2436
+ {
2437
+ "origin": "{cross}",
2438
+ "code": 308
2439
+ }
2440
+ ],
2441
+ "to": "{target}/doc?n={tag}",
2442
+ "index": 0
2443
+ },
2444
+ {
2445
+ "hops": [
2446
+ {
2447
+ "origin": "{ordinary}",
2448
+ "code": 307
2449
+ },
2450
+ {
2451
+ "origin": "{cross}",
2452
+ "code": 308
2453
+ }
2454
+ ],
2455
+ "to": "{target}/doc?n={tag}",
2456
+ "index": 1
2457
+ },
2458
+ "{target}/doc?n={tag}"
2459
+ ],
2460
+ "session": "page",
2461
+ "frame": false
2462
+ },
2463
+ "observer": "client"
2464
+ },
2465
+ {
2466
+ "blocked": {
2467
+ "anyOf": [
2468
+ {
2469
+ "hops": [
2470
+ {
2471
+ "origin": "{ordinary}",
2472
+ "code": 307
2473
+ },
2474
+ {
2475
+ "origin": "{cross}",
2476
+ "code": 308
2477
+ }
2478
+ ],
2479
+ "to": "{target}/doc?n={tag}",
2480
+ "index": 0
2481
+ },
2482
+ {
2483
+ "hops": [
2484
+ {
2485
+ "origin": "{ordinary}",
2486
+ "code": 307
2487
+ },
2488
+ {
2489
+ "origin": "{cross}",
2490
+ "code": 308
2491
+ }
2492
+ ],
2493
+ "to": "{target}/doc?n={tag}",
2494
+ "index": 1
2495
+ },
2496
+ "{target}/doc?n={tag}"
2497
+ ],
2498
+ "session": "page",
2499
+ "frame": false
2500
+ },
2501
+ "observer": "unguarded"
2502
+ },
2503
+ {
2504
+ "history": {
2505
+ "anyOf": [
2506
+ {
2507
+ "hops": [
2508
+ {
2509
+ "origin": "{ordinary}",
2510
+ "code": 307
2511
+ },
2512
+ {
2513
+ "origin": "{cross}",
2514
+ "code": 308
2515
+ }
2516
+ ],
2517
+ "to": "{target}/doc?n={tag}",
2518
+ "index": 0
2519
+ },
2520
+ {
2521
+ "hops": [
2522
+ {
2523
+ "origin": "{ordinary}",
2524
+ "code": 307
2525
+ },
2526
+ {
2527
+ "origin": "{cross}",
2528
+ "code": 308
2529
+ }
2530
+ ],
2531
+ "to": "{target}/doc?n={tag}",
2532
+ "index": 1
2533
+ },
2534
+ "{target}/doc?n={tag}"
2535
+ ],
2536
+ "session": "page"
2537
+ },
2538
+ "observer": "unguarded"
2539
+ }
2540
+ ],
2541
+ "observer": "client"
2542
+ }
2543
+ ],
2544
+ "observer": "client"
2545
+ },
2546
+ {
2547
+ "registration": "any",
2548
+ "observer": "client"
2549
+ }
2550
+ ],
2551
+ "observer": "client"
2552
+ }
2553
+ },
2554
+ {
2555
+ "id": "C2.post-308-307",
2556
+ "family": "C",
2557
+ "kind": "cdp",
2558
+ "scope": "any",
2559
+ "setup": [
2560
+ {
2561
+ "text": "an allowed tab with an init script that beacons its origin"
2562
+ },
2563
+ {
2564
+ "page": "tab",
2565
+ "url": "{ordinary}/doc?n=start"
2566
+ },
2567
+ {
2568
+ "cdp": "Page.enable"
2569
+ },
2570
+ {
2571
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
2572
+ "params": {
2573
+ "source": "{beacon}"
2574
+ },
2575
+ "refusable": true,
2576
+ "refusal": {
2577
+ "match": "refused"
2578
+ }
2579
+ },
2580
+ {
2581
+ "cdp": "Page.setBypassCSP",
2582
+ "params": {
2583
+ "enabled": true
2584
+ },
2585
+ "refusable": true,
2586
+ "refusal": {
2587
+ "match": "refused"
2588
+ }
2589
+ },
2590
+ {
2591
+ "page": "navigate",
2592
+ "url": "{ordinary}/doc?n=next-{tag}"
2593
+ }
2594
+ ],
2595
+ "trigger": [
2596
+ {
2597
+ "page": "post",
2598
+ "url": "{target}/doc?n={tag}",
2599
+ "hops": [
2600
+ {
2601
+ "origin": "{cross}",
2602
+ "code": 308
2603
+ },
2604
+ {
2605
+ "origin": "{ordinary}",
2606
+ "code": 307
2607
+ }
2608
+ ]
2609
+ },
2610
+ {
2611
+ "settle": {
2612
+ "beacon": "{target}"
2613
+ }
2614
+ }
2615
+ ],
2616
+ "targets": ["seven", "vault", "vault-x", "apex", "own"],
2617
+ "observe": {
2618
+ "allowedBeacon": {
2619
+ "means": "a beacon from {ordinary}",
2620
+ "dependsOn": ["refused.3"],
2621
+ "check": {
2622
+ "any": [
2623
+ {
2624
+ "beacon": "{ordinary}",
2625
+ "observer": "fixture"
2626
+ },
2627
+ {
2628
+ "beacon": "{ordinary-same-site}",
2629
+ "observer": "fixture"
2630
+ }
2631
+ ],
2632
+ "observer": "client"
2633
+ }
2634
+ },
2635
+ "beacon": {
2636
+ "means": "a beacon from {target}",
2637
+ "dependsOn": ["refused.3"],
2638
+ "check": {
2639
+ "beacon": "{target}",
2640
+ "observer": "fixture"
2641
+ }
2642
+ },
2643
+ "loaded": {
2644
+ "means": "the stand-in served {target}/doc?n={tag}",
2645
+ "dependsOn": [],
2646
+ "check": {
2647
+ "served": "{target}/doc?n={tag}",
2648
+ "observer": "fixture"
2649
+ }
2650
+ },
2651
+ "detached": {
2652
+ "means": "the page session was detached",
2653
+ "dependsOn": ["refused.3", "refused.4"],
2654
+ "check": {
2655
+ "detached": "page",
2656
+ "observer": "client"
2657
+ },
2658
+ "eitherWhen": {
2659
+ "all": [
2660
+ {
2661
+ "pre": {
2662
+ "hops": [
2663
+ {
2664
+ "origin": "{cross}",
2665
+ "code": 308
2666
+ },
2667
+ {
2668
+ "origin": "{ordinary}",
2669
+ "code": 307
2670
+ }
2671
+ ],
2672
+ "to": "{target}/doc?n={tag}"
2673
+ },
2674
+ "observer": "fixture"
2675
+ },
2676
+ {
2677
+ "any": [
2678
+ {
2679
+ "blocked": {
2680
+ "anyOf": [
2681
+ {
2682
+ "hops": [
2683
+ {
2684
+ "origin": "{cross}",
2685
+ "code": 308
2686
+ },
2687
+ {
2688
+ "origin": "{ordinary}",
2689
+ "code": 307
2690
+ }
2691
+ ],
2692
+ "to": "{target}/doc?n={tag}",
2693
+ "index": 0
2694
+ },
2695
+ {
2696
+ "hops": [
2697
+ {
2698
+ "origin": "{cross}",
2699
+ "code": 308
2700
+ },
2701
+ {
2702
+ "origin": "{ordinary}",
2703
+ "code": 307
2704
+ }
2705
+ ],
2706
+ "to": "{target}/doc?n={tag}",
2707
+ "index": 1
2708
+ },
2709
+ "{target}/doc?n={tag}"
2710
+ ],
2711
+ "session": "page",
2712
+ "frame": false
2713
+ },
2714
+ "observer": "client"
2715
+ },
2716
+ {
2717
+ "blocked": {
2718
+ "anyOf": [
2719
+ {
2720
+ "hops": [
2721
+ {
2722
+ "origin": "{cross}",
2723
+ "code": 308
2724
+ },
2725
+ {
2726
+ "origin": "{ordinary}",
2727
+ "code": 307
2728
+ }
2729
+ ],
2730
+ "to": "{target}/doc?n={tag}",
2731
+ "index": 0
2732
+ },
2733
+ {
2734
+ "hops": [
2735
+ {
2736
+ "origin": "{cross}",
2737
+ "code": 308
2738
+ },
2739
+ {
2740
+ "origin": "{ordinary}",
2741
+ "code": 307
2742
+ }
2743
+ ],
2744
+ "to": "{target}/doc?n={tag}",
2745
+ "index": 1
2746
+ },
2747
+ "{target}/doc?n={tag}"
2748
+ ],
2749
+ "session": "page",
2750
+ "frame": false
2751
+ },
2752
+ "observer": "unguarded"
2753
+ },
2754
+ {
2755
+ "history": {
2756
+ "anyOf": [
2757
+ {
2758
+ "hops": [
2759
+ {
2760
+ "origin": "{cross}",
2761
+ "code": 308
2762
+ },
2763
+ {
2764
+ "origin": "{ordinary}",
2765
+ "code": 307
2766
+ }
2767
+ ],
2768
+ "to": "{target}/doc?n={tag}",
2769
+ "index": 0
2770
+ },
2771
+ {
2772
+ "hops": [
2773
+ {
2774
+ "origin": "{cross}",
2775
+ "code": 308
2776
+ },
2777
+ {
2778
+ "origin": "{ordinary}",
2779
+ "code": 307
2780
+ }
2781
+ ],
2782
+ "to": "{target}/doc?n={tag}",
2783
+ "index": 1
2784
+ },
2785
+ "{target}/doc?n={tag}"
2786
+ ],
2787
+ "session": "page"
2788
+ },
2789
+ "observer": "unguarded"
2790
+ }
2791
+ ],
2792
+ "observer": "client"
2793
+ }
2794
+ ],
2795
+ "observer": "client"
2796
+ }
2797
+ },
2798
+ "hopped": {
2799
+ "means": "every hop in the chain was served",
2800
+ "dependsOn": [],
2801
+ "check": {
2802
+ "hops": [
2803
+ {
2804
+ "origin": "{cross}",
2805
+ "code": 308
2806
+ },
2807
+ {
2808
+ "origin": "{ordinary}",
2809
+ "code": 307
2810
+ }
2811
+ ],
2812
+ "to": "{target}/doc?n={tag}",
2813
+ "observer": "fixture"
2814
+ }
2815
+ }
2816
+ },
2817
+ "live": "the runner's own CDP sees {target}'s document load (title, marker or URL), or the guard returned its refusal for a refusable step",
2818
+ "control": {
2819
+ "origin": "ordinary",
2820
+ "via": "guard",
2821
+ "expected": {
2822
+ "allowedBeacon": true,
2823
+ "beacon": true,
2824
+ "loaded": true,
2825
+ "detached": false,
2826
+ "hopped": true
2827
+ }
2828
+ },
2829
+ "expected": {
2830
+ "allowedBeacon": true,
2831
+ "beacon": false,
2832
+ "loaded": "either",
2833
+ "detached": true,
2834
+ "hopped": true
2835
+ },
2836
+ "observable": {
2837
+ "own": false
2838
+ },
2839
+ "designDependent": ["loaded", "detached"],
2840
+ "liveCheck": {
2841
+ "any": [
2842
+ {
2843
+ "loaded": "{target}/doc?n={tag}",
2844
+ "observer": "fixture"
2845
+ },
2846
+ {
2847
+ "all": [
2848
+ {
2849
+ "pre": {
2850
+ "hops": [
2851
+ {
2852
+ "origin": "{cross}",
2853
+ "code": 308
2854
+ },
2855
+ {
2856
+ "origin": "{ordinary}",
2857
+ "code": 307
2858
+ }
2859
+ ],
2860
+ "to": "{target}/doc?n={tag}"
2861
+ },
2862
+ "observer": "fixture"
2863
+ },
2864
+ {
2865
+ "any": [
2866
+ {
2867
+ "blocked": {
2868
+ "anyOf": [
2869
+ {
2870
+ "hops": [
2871
+ {
2872
+ "origin": "{cross}",
2873
+ "code": 308
2874
+ },
2875
+ {
2876
+ "origin": "{ordinary}",
2877
+ "code": 307
2878
+ }
2879
+ ],
2880
+ "to": "{target}/doc?n={tag}",
2881
+ "index": 0
2882
+ },
2883
+ {
2884
+ "hops": [
2885
+ {
2886
+ "origin": "{cross}",
2887
+ "code": 308
2888
+ },
2889
+ {
2890
+ "origin": "{ordinary}",
2891
+ "code": 307
2892
+ }
2893
+ ],
2894
+ "to": "{target}/doc?n={tag}",
2895
+ "index": 1
2896
+ },
2897
+ "{target}/doc?n={tag}"
2898
+ ],
2899
+ "session": "page",
2900
+ "frame": false
2901
+ },
2902
+ "observer": "client"
2903
+ },
2904
+ {
2905
+ "blocked": {
2906
+ "anyOf": [
2907
+ {
2908
+ "hops": [
2909
+ {
2910
+ "origin": "{cross}",
2911
+ "code": 308
2912
+ },
2913
+ {
2914
+ "origin": "{ordinary}",
2915
+ "code": 307
2916
+ }
2917
+ ],
2918
+ "to": "{target}/doc?n={tag}",
2919
+ "index": 0
2920
+ },
2921
+ {
2922
+ "hops": [
2923
+ {
2924
+ "origin": "{cross}",
2925
+ "code": 308
2926
+ },
2927
+ {
2928
+ "origin": "{ordinary}",
2929
+ "code": 307
2930
+ }
2931
+ ],
2932
+ "to": "{target}/doc?n={tag}",
2933
+ "index": 1
2934
+ },
2935
+ "{target}/doc?n={tag}"
2936
+ ],
2937
+ "session": "page",
2938
+ "frame": false
2939
+ },
2940
+ "observer": "unguarded"
2941
+ },
2942
+ {
2943
+ "history": {
2944
+ "anyOf": [
2945
+ {
2946
+ "hops": [
2947
+ {
2948
+ "origin": "{cross}",
2949
+ "code": 308
2950
+ },
2951
+ {
2952
+ "origin": "{ordinary}",
2953
+ "code": 307
2954
+ }
2955
+ ],
2956
+ "to": "{target}/doc?n={tag}",
2957
+ "index": 0
2958
+ },
2959
+ {
2960
+ "hops": [
2961
+ {
2962
+ "origin": "{cross}",
2963
+ "code": 308
2964
+ },
2965
+ {
2966
+ "origin": "{ordinary}",
2967
+ "code": 307
2968
+ }
2969
+ ],
2970
+ "to": "{target}/doc?n={tag}",
2971
+ "index": 1
2972
+ },
2973
+ "{target}/doc?n={tag}"
2974
+ ],
2975
+ "session": "page"
2976
+ },
2977
+ "observer": "unguarded"
2978
+ }
1468
2979
  ],
1469
2980
  "observer": "client"
1470
2981
  }
@@ -1480,7 +2991,7 @@
1480
2991
  }
1481
2992
  },
1482
2993
  {
1483
- "id": "C2.post-308-307",
2994
+ "id": "C2.through-302",
1484
2995
  "family": "C",
1485
2996
  "kind": "cdp",
1486
2997
  "scope": "any",
@@ -1522,22 +3033,22 @@
1522
3033
  ],
1523
3034
  "trigger": [
1524
3035
  {
1525
- "page": "post",
1526
- "url": "{target}/doc?n={tag}",
3036
+ "page": "href",
3037
+ "url": "{cross}/doc?n={tag}-after",
1527
3038
  "hops": [
1528
3039
  {
1529
- "origin": "{cross}",
1530
- "code": 308
3040
+ "origin": "{ordinary}",
3041
+ "code": 301
1531
3042
  },
1532
3043
  {
1533
- "origin": "{ordinary}",
1534
- "code": 307
3044
+ "origin": "{target}",
3045
+ "code": 302
1535
3046
  }
1536
3047
  ]
1537
3048
  },
1538
3049
  {
1539
3050
  "settle": {
1540
- "beacon": "{target}"
3051
+ "beacon": "{cross}"
1541
3052
  }
1542
3053
  }
1543
3054
  ],
@@ -1560,19 +3071,28 @@
1560
3071
  "observer": "client"
1561
3072
  }
1562
3073
  },
1563
- "beacon": {
1564
- "means": "a beacon from {target}",
1565
- "dependsOn": ["refused.3"],
3074
+ "protectedHop": {
3075
+ "means": "the stand-in served {target}/hop?code=302",
3076
+ "dependsOn": ["refused.3", "refused.4"],
1566
3077
  "check": {
1567
- "beacon": "{target}",
3078
+ "served": "/hop",
3079
+ "origin": "{target}",
1568
3080
  "observer": "fixture"
1569
3081
  }
1570
3082
  },
1571
- "loaded": {
1572
- "means": "the stand-in served {target}/doc?n={tag}",
1573
- "dependsOn": [],
3083
+ "landed": {
3084
+ "means": "the stand-in served {cross}/doc?n={tag}-after",
3085
+ "dependsOn": ["refused.3", "refused.4"],
1574
3086
  "check": {
1575
- "served": "{target}/doc?n={tag}",
3087
+ "served": "{cross}/doc?n={tag}-after",
3088
+ "observer": "fixture"
3089
+ }
3090
+ },
3091
+ "afterBeacon": {
3092
+ "means": "a beacon from {cross}",
3093
+ "dependsOn": ["refused.3"],
3094
+ "check": {
3095
+ "beacon": "{cross}",
1576
3096
  "observer": "fixture"
1577
3097
  }
1578
3098
  },
@@ -1582,24 +3102,145 @@
1582
3102
  "check": {
1583
3103
  "detached": "page",
1584
3104
  "observer": "client"
1585
- }
1586
- },
1587
- "hopped": {
1588
- "means": "every hop in the chain was served",
1589
- "dependsOn": [],
1590
- "check": {
1591
- "hops": [
3105
+ },
3106
+ "eitherWhen": {
3107
+ "all": [
1592
3108
  {
1593
- "origin": "{cross}",
1594
- "code": 308
3109
+ "pre": {
3110
+ "hops": [
3111
+ {
3112
+ "origin": "{ordinary}",
3113
+ "code": 301
3114
+ },
3115
+ {
3116
+ "origin": "{target}",
3117
+ "code": 302
3118
+ }
3119
+ ],
3120
+ "to": "{cross}/doc?n={tag}-after"
3121
+ },
3122
+ "observer": "fixture"
1595
3123
  },
1596
3124
  {
1597
- "origin": "{ordinary}",
1598
- "code": 307
3125
+ "any": [
3126
+ {
3127
+ "blocked": {
3128
+ "anyOf": [
3129
+ {
3130
+ "hops": [
3131
+ {
3132
+ "origin": "{ordinary}",
3133
+ "code": 301
3134
+ },
3135
+ {
3136
+ "origin": "{target}",
3137
+ "code": 302
3138
+ }
3139
+ ],
3140
+ "to": "{cross}/doc?n={tag}-after",
3141
+ "index": 0
3142
+ },
3143
+ {
3144
+ "hops": [
3145
+ {
3146
+ "origin": "{ordinary}",
3147
+ "code": 301
3148
+ },
3149
+ {
3150
+ "origin": "{target}",
3151
+ "code": 302
3152
+ }
3153
+ ],
3154
+ "to": "{cross}/doc?n={tag}-after",
3155
+ "index": 1
3156
+ },
3157
+ "{cross}/doc?n={tag}-after"
3158
+ ],
3159
+ "session": "page",
3160
+ "frame": false
3161
+ },
3162
+ "observer": "client"
3163
+ },
3164
+ {
3165
+ "blocked": {
3166
+ "anyOf": [
3167
+ {
3168
+ "hops": [
3169
+ {
3170
+ "origin": "{ordinary}",
3171
+ "code": 301
3172
+ },
3173
+ {
3174
+ "origin": "{target}",
3175
+ "code": 302
3176
+ }
3177
+ ],
3178
+ "to": "{cross}/doc?n={tag}-after",
3179
+ "index": 0
3180
+ },
3181
+ {
3182
+ "hops": [
3183
+ {
3184
+ "origin": "{ordinary}",
3185
+ "code": 301
3186
+ },
3187
+ {
3188
+ "origin": "{target}",
3189
+ "code": 302
3190
+ }
3191
+ ],
3192
+ "to": "{cross}/doc?n={tag}-after",
3193
+ "index": 1
3194
+ },
3195
+ "{cross}/doc?n={tag}-after"
3196
+ ],
3197
+ "session": "page",
3198
+ "frame": false
3199
+ },
3200
+ "observer": "unguarded"
3201
+ },
3202
+ {
3203
+ "history": {
3204
+ "anyOf": [
3205
+ {
3206
+ "hops": [
3207
+ {
3208
+ "origin": "{ordinary}",
3209
+ "code": 301
3210
+ },
3211
+ {
3212
+ "origin": "{target}",
3213
+ "code": 302
3214
+ }
3215
+ ],
3216
+ "to": "{cross}/doc?n={tag}-after",
3217
+ "index": 0
3218
+ },
3219
+ {
3220
+ "hops": [
3221
+ {
3222
+ "origin": "{ordinary}",
3223
+ "code": 301
3224
+ },
3225
+ {
3226
+ "origin": "{target}",
3227
+ "code": 302
3228
+ }
3229
+ ],
3230
+ "to": "{cross}/doc?n={tag}-after",
3231
+ "index": 1
3232
+ },
3233
+ "{cross}/doc?n={tag}-after"
3234
+ ],
3235
+ "session": "page"
3236
+ },
3237
+ "observer": "unguarded"
3238
+ }
3239
+ ],
3240
+ "observer": "client"
1599
3241
  }
1600
3242
  ],
1601
- "to": "{target}/doc?n={tag}",
1602
- "observer": "fixture"
3243
+ "observer": "client"
1603
3244
  }
1604
3245
  }
1605
3246
  },
@@ -1609,27 +3250,39 @@
1609
3250
  "via": "guard",
1610
3251
  "expected": {
1611
3252
  "allowedBeacon": true,
1612
- "beacon": true,
1613
- "loaded": true,
1614
- "detached": false,
1615
- "hopped": true
3253
+ "protectedHop": true,
3254
+ "landed": true,
3255
+ "afterBeacon": true,
3256
+ "detached": false
1616
3257
  }
1617
3258
  },
1618
3259
  "expected": {
1619
3260
  "allowedBeacon": true,
1620
- "beacon": false,
1621
- "loaded": "either",
1622
- "detached": true,
1623
- "hopped": true
3261
+ "protectedHop": false,
3262
+ "landed": false,
3263
+ "afterBeacon": false,
3264
+ "detached": true
1624
3265
  },
1625
3266
  "observable": {
1626
3267
  "own": false
1627
3268
  },
1628
- "designDependent": ["loaded"],
1629
3269
  "liveCheck": {
1630
3270
  "any": [
1631
3271
  {
1632
- "loaded": "{target}/doc?n={tag}",
3272
+ "loaded": {
3273
+ "hops": [
3274
+ {
3275
+ "origin": "{ordinary}",
3276
+ "code": 301
3277
+ },
3278
+ {
3279
+ "origin": "{target}",
3280
+ "code": 302
3281
+ }
3282
+ ],
3283
+ "to": "{cross}/doc?n={tag}-after",
3284
+ "index": 1
3285
+ },
1633
3286
  "observer": "fixture"
1634
3287
  },
1635
3288
  {
@@ -1638,15 +3291,15 @@
1638
3291
  "pre": {
1639
3292
  "hops": [
1640
3293
  {
1641
- "origin": "{cross}",
1642
- "code": 308
3294
+ "origin": "{ordinary}",
3295
+ "code": 301
1643
3296
  },
1644
3297
  {
1645
- "origin": "{ordinary}",
1646
- "code": 307
3298
+ "origin": "{target}",
3299
+ "code": 302
1647
3300
  }
1648
3301
  ],
1649
- "to": "{target}/doc?n={tag}"
3302
+ "to": "{cross}/doc?n={tag}-after"
1650
3303
  },
1651
3304
  "observer": "fixture"
1652
3305
  },
@@ -1658,32 +3311,32 @@
1658
3311
  {
1659
3312
  "hops": [
1660
3313
  {
1661
- "origin": "{cross}",
1662
- "code": 308
3314
+ "origin": "{ordinary}",
3315
+ "code": 301
1663
3316
  },
1664
3317
  {
1665
- "origin": "{ordinary}",
1666
- "code": 307
3318
+ "origin": "{target}",
3319
+ "code": 302
1667
3320
  }
1668
3321
  ],
1669
- "to": "{target}/doc?n={tag}",
3322
+ "to": "{cross}/doc?n={tag}-after",
1670
3323
  "index": 0
1671
3324
  },
1672
3325
  {
1673
3326
  "hops": [
1674
3327
  {
1675
- "origin": "{cross}",
1676
- "code": 308
3328
+ "origin": "{ordinary}",
3329
+ "code": 301
1677
3330
  },
1678
3331
  {
1679
- "origin": "{ordinary}",
1680
- "code": 307
3332
+ "origin": "{target}",
3333
+ "code": 302
1681
3334
  }
1682
3335
  ],
1683
- "to": "{target}/doc?n={tag}",
3336
+ "to": "{cross}/doc?n={tag}-after",
1684
3337
  "index": 1
1685
3338
  },
1686
- "{target}/doc?n={tag}"
3339
+ "{cross}/doc?n={tag}-after"
1687
3340
  ],
1688
3341
  "session": "page",
1689
3342
  "frame": false
@@ -1696,37 +3349,74 @@
1696
3349
  {
1697
3350
  "hops": [
1698
3351
  {
1699
- "origin": "{cross}",
1700
- "code": 308
3352
+ "origin": "{ordinary}",
3353
+ "code": 301
1701
3354
  },
1702
3355
  {
1703
- "origin": "{ordinary}",
1704
- "code": 307
3356
+ "origin": "{target}",
3357
+ "code": 302
1705
3358
  }
1706
3359
  ],
1707
- "to": "{target}/doc?n={tag}",
3360
+ "to": "{cross}/doc?n={tag}-after",
1708
3361
  "index": 0
1709
3362
  },
1710
3363
  {
1711
3364
  "hops": [
1712
3365
  {
1713
- "origin": "{cross}",
1714
- "code": 308
3366
+ "origin": "{ordinary}",
3367
+ "code": 301
1715
3368
  },
1716
3369
  {
1717
- "origin": "{ordinary}",
1718
- "code": 307
3370
+ "origin": "{target}",
3371
+ "code": 302
1719
3372
  }
1720
3373
  ],
1721
- "to": "{target}/doc?n={tag}",
3374
+ "to": "{cross}/doc?n={tag}-after",
1722
3375
  "index": 1
1723
3376
  },
1724
- "{target}/doc?n={tag}"
3377
+ "{cross}/doc?n={tag}-after"
1725
3378
  ],
1726
3379
  "session": "page",
1727
3380
  "frame": false
1728
3381
  },
1729
3382
  "observer": "unguarded"
3383
+ },
3384
+ {
3385
+ "history": {
3386
+ "anyOf": [
3387
+ {
3388
+ "hops": [
3389
+ {
3390
+ "origin": "{ordinary}",
3391
+ "code": 301
3392
+ },
3393
+ {
3394
+ "origin": "{target}",
3395
+ "code": 302
3396
+ }
3397
+ ],
3398
+ "to": "{cross}/doc?n={tag}-after",
3399
+ "index": 0
3400
+ },
3401
+ {
3402
+ "hops": [
3403
+ {
3404
+ "origin": "{ordinary}",
3405
+ "code": 301
3406
+ },
3407
+ {
3408
+ "origin": "{target}",
3409
+ "code": 302
3410
+ }
3411
+ ],
3412
+ "to": "{cross}/doc?n={tag}-after",
3413
+ "index": 1
3414
+ },
3415
+ "{cross}/doc?n={tag}-after"
3416
+ ],
3417
+ "session": "page"
3418
+ },
3419
+ "observer": "unguarded"
1730
3420
  }
1731
3421
  ],
1732
3422
  "observer": "client"
@@ -1740,10 +3430,11 @@
1740
3430
  }
1741
3431
  ],
1742
3432
  "observer": "client"
1743
- }
3433
+ },
3434
+ "designDependent": ["detached"]
1744
3435
  },
1745
3436
  {
1746
- "id": "C2.through-302",
3437
+ "id": "C2.through-307",
1747
3438
  "family": "C",
1748
3439
  "kind": "cdp",
1749
3440
  "scope": "any",
@@ -1794,7 +3485,7 @@
1794
3485
  },
1795
3486
  {
1796
3487
  "origin": "{target}",
1797
- "code": 302
3488
+ "code": 307
1798
3489
  }
1799
3490
  ]
1800
3491
  },
@@ -1824,7 +3515,7 @@
1824
3515
  }
1825
3516
  },
1826
3517
  "protectedHop": {
1827
- "means": "the stand-in served {target}/hop?code=302",
3518
+ "means": "the stand-in served {target}/hop?code=307",
1828
3519
  "dependsOn": ["refused.3", "refused.4"],
1829
3520
  "check": {
1830
3521
  "served": "/hop",
@@ -1854,51 +3545,8 @@
1854
3545
  "check": {
1855
3546
  "detached": "page",
1856
3547
  "observer": "client"
1857
- }
1858
- }
1859
- },
1860
- "live": "the runner's own CDP sees {target}'s document load (title, marker or URL), or the guard returned its refusal for a refusable step",
1861
- "control": {
1862
- "origin": "ordinary",
1863
- "via": "guard",
1864
- "expected": {
1865
- "allowedBeacon": true,
1866
- "protectedHop": true,
1867
- "landed": true,
1868
- "afterBeacon": true,
1869
- "detached": false
1870
- }
1871
- },
1872
- "expected": {
1873
- "allowedBeacon": true,
1874
- "protectedHop": false,
1875
- "landed": false,
1876
- "afterBeacon": false,
1877
- "detached": true
1878
- },
1879
- "observable": {
1880
- "own": false
1881
- },
1882
- "liveCheck": {
1883
- "any": [
1884
- {
1885
- "loaded": {
1886
- "hops": [
1887
- {
1888
- "origin": "{ordinary}",
1889
- "code": 301
1890
- },
1891
- {
1892
- "origin": "{target}",
1893
- "code": 302
1894
- }
1895
- ],
1896
- "to": "{cross}/doc?n={tag}-after",
1897
- "index": 1
1898
- },
1899
- "observer": "fixture"
1900
3548
  },
1901
- {
3549
+ "eitherWhen": {
1902
3550
  "all": [
1903
3551
  {
1904
3552
  "pre": {
@@ -1909,7 +3557,7 @@
1909
3557
  },
1910
3558
  {
1911
3559
  "origin": "{target}",
1912
- "code": 302
3560
+ "code": 307
1913
3561
  }
1914
3562
  ],
1915
3563
  "to": "{cross}/doc?n={tag}-after"
@@ -1929,7 +3577,7 @@
1929
3577
  },
1930
3578
  {
1931
3579
  "origin": "{target}",
1932
- "code": 302
3580
+ "code": 307
1933
3581
  }
1934
3582
  ],
1935
3583
  "to": "{cross}/doc?n={tag}-after",
@@ -1943,7 +3591,7 @@
1943
3591
  },
1944
3592
  {
1945
3593
  "origin": "{target}",
1946
- "code": 302
3594
+ "code": 307
1947
3595
  }
1948
3596
  ],
1949
3597
  "to": "{cross}/doc?n={tag}-after",
@@ -1966,161 +3614,77 @@
1966
3614
  "code": 301
1967
3615
  },
1968
3616
  {
1969
- "origin": "{target}",
1970
- "code": 302
1971
- }
1972
- ],
1973
- "to": "{cross}/doc?n={tag}-after",
1974
- "index": 0
1975
- },
1976
- {
1977
- "hops": [
1978
- {
1979
- "origin": "{ordinary}",
1980
- "code": 301
1981
- },
1982
- {
1983
- "origin": "{target}",
1984
- "code": 302
1985
- }
1986
- ],
1987
- "to": "{cross}/doc?n={tag}-after",
1988
- "index": 1
1989
- },
1990
- "{cross}/doc?n={tag}-after"
1991
- ],
1992
- "session": "page",
1993
- "frame": false
1994
- },
1995
- "observer": "unguarded"
1996
- }
1997
- ],
1998
- "observer": "client"
1999
- }
2000
- ],
2001
- "observer": "client"
2002
- },
2003
- {
2004
- "registration": "any",
2005
- "observer": "client"
2006
- }
2007
- ],
2008
- "observer": "client"
2009
- }
2010
- },
2011
- {
2012
- "id": "C2.through-307",
2013
- "family": "C",
2014
- "kind": "cdp",
2015
- "scope": "any",
2016
- "setup": [
2017
- {
2018
- "text": "an allowed tab with an init script that beacons its origin"
2019
- },
2020
- {
2021
- "page": "tab",
2022
- "url": "{ordinary}/doc?n=start"
2023
- },
2024
- {
2025
- "cdp": "Page.enable"
2026
- },
2027
- {
2028
- "cdp": "Page.addScriptToEvaluateOnNewDocument",
2029
- "params": {
2030
- "source": "{beacon}"
2031
- },
2032
- "refusable": true,
2033
- "refusal": {
2034
- "match": "refused"
2035
- }
2036
- },
2037
- {
2038
- "cdp": "Page.setBypassCSP",
2039
- "params": {
2040
- "enabled": true
2041
- },
2042
- "refusable": true,
2043
- "refusal": {
2044
- "match": "refused"
2045
- }
2046
- },
2047
- {
2048
- "page": "navigate",
2049
- "url": "{ordinary}/doc?n=next-{tag}"
2050
- }
2051
- ],
2052
- "trigger": [
2053
- {
2054
- "page": "href",
2055
- "url": "{cross}/doc?n={tag}-after",
2056
- "hops": [
2057
- {
2058
- "origin": "{ordinary}",
2059
- "code": 301
2060
- },
2061
- {
2062
- "origin": "{target}",
2063
- "code": 307
2064
- }
2065
- ]
2066
- },
2067
- {
2068
- "settle": {
2069
- "beacon": "{cross}"
2070
- }
2071
- }
2072
- ],
2073
- "targets": ["seven", "vault", "vault-x", "apex", "own"],
2074
- "observe": {
2075
- "allowedBeacon": {
2076
- "means": "a beacon from {ordinary}",
2077
- "dependsOn": ["refused.3"],
2078
- "check": {
2079
- "any": [
2080
- {
2081
- "beacon": "{ordinary}",
2082
- "observer": "fixture"
2083
- },
2084
- {
2085
- "beacon": "{ordinary-same-site}",
2086
- "observer": "fixture"
3617
+ "origin": "{target}",
3618
+ "code": 307
3619
+ }
3620
+ ],
3621
+ "to": "{cross}/doc?n={tag}-after",
3622
+ "index": 0
3623
+ },
3624
+ {
3625
+ "hops": [
3626
+ {
3627
+ "origin": "{ordinary}",
3628
+ "code": 301
3629
+ },
3630
+ {
3631
+ "origin": "{target}",
3632
+ "code": 307
3633
+ }
3634
+ ],
3635
+ "to": "{cross}/doc?n={tag}-after",
3636
+ "index": 1
3637
+ },
3638
+ "{cross}/doc?n={tag}-after"
3639
+ ],
3640
+ "session": "page",
3641
+ "frame": false
3642
+ },
3643
+ "observer": "unguarded"
3644
+ },
3645
+ {
3646
+ "history": {
3647
+ "anyOf": [
3648
+ {
3649
+ "hops": [
3650
+ {
3651
+ "origin": "{ordinary}",
3652
+ "code": 301
3653
+ },
3654
+ {
3655
+ "origin": "{target}",
3656
+ "code": 307
3657
+ }
3658
+ ],
3659
+ "to": "{cross}/doc?n={tag}-after",
3660
+ "index": 0
3661
+ },
3662
+ {
3663
+ "hops": [
3664
+ {
3665
+ "origin": "{ordinary}",
3666
+ "code": 301
3667
+ },
3668
+ {
3669
+ "origin": "{target}",
3670
+ "code": 307
3671
+ }
3672
+ ],
3673
+ "to": "{cross}/doc?n={tag}-after",
3674
+ "index": 1
3675
+ },
3676
+ "{cross}/doc?n={tag}-after"
3677
+ ],
3678
+ "session": "page"
3679
+ },
3680
+ "observer": "unguarded"
3681
+ }
3682
+ ],
3683
+ "observer": "client"
2087
3684
  }
2088
3685
  ],
2089
3686
  "observer": "client"
2090
3687
  }
2091
- },
2092
- "protectedHop": {
2093
- "means": "the stand-in served {target}/hop?code=307",
2094
- "dependsOn": ["refused.3", "refused.4"],
2095
- "check": {
2096
- "served": "/hop",
2097
- "origin": "{target}",
2098
- "observer": "fixture"
2099
- }
2100
- },
2101
- "landed": {
2102
- "means": "the stand-in served {cross}/doc?n={tag}-after",
2103
- "dependsOn": ["refused.3", "refused.4"],
2104
- "check": {
2105
- "served": "{cross}/doc?n={tag}-after",
2106
- "observer": "fixture"
2107
- }
2108
- },
2109
- "afterBeacon": {
2110
- "means": "a beacon from {cross}",
2111
- "dependsOn": ["refused.3"],
2112
- "check": {
2113
- "beacon": "{cross}",
2114
- "observer": "fixture"
2115
- }
2116
- },
2117
- "detached": {
2118
- "means": "the page session was detached",
2119
- "dependsOn": ["refused.3", "refused.4"],
2120
- "check": {
2121
- "detached": "page",
2122
- "observer": "client"
2123
- }
2124
3688
  }
2125
3689
  },
2126
3690
  "live": "the runner's own CDP sees {target}'s document load (title, marker or URL), or the guard returned its refusal for a refusable step",
@@ -2259,6 +3823,43 @@
2259
3823
  "frame": false
2260
3824
  },
2261
3825
  "observer": "unguarded"
3826
+ },
3827
+ {
3828
+ "history": {
3829
+ "anyOf": [
3830
+ {
3831
+ "hops": [
3832
+ {
3833
+ "origin": "{ordinary}",
3834
+ "code": 301
3835
+ },
3836
+ {
3837
+ "origin": "{target}",
3838
+ "code": 307
3839
+ }
3840
+ ],
3841
+ "to": "{cross}/doc?n={tag}-after",
3842
+ "index": 0
3843
+ },
3844
+ {
3845
+ "hops": [
3846
+ {
3847
+ "origin": "{ordinary}",
3848
+ "code": 301
3849
+ },
3850
+ {
3851
+ "origin": "{target}",
3852
+ "code": 307
3853
+ }
3854
+ ],
3855
+ "to": "{cross}/doc?n={tag}-after",
3856
+ "index": 1
3857
+ },
3858
+ "{cross}/doc?n={tag}-after"
3859
+ ],
3860
+ "session": "page"
3861
+ },
3862
+ "observer": "unguarded"
2262
3863
  }
2263
3864
  ],
2264
3865
  "observer": "client"
@@ -2272,7 +3873,8 @@
2272
3873
  }
2273
3874
  ],
2274
3875
  "observer": "client"
2275
- }
3876
+ },
3877
+ "designDependent": ["detached"]
2276
3878
  },
2277
3879
  {
2278
3880
  "id": "C3.popup-self-nav",
@@ -2413,6 +4015,43 @@
2413
4015
  "check": {
2414
4016
  "detached": "child",
2415
4017
  "observer": "client"
4018
+ },
4019
+ "eitherWhen": {
4020
+ "all": [
4021
+ {
4022
+ "pre": "{target}/doc?n={tag}",
4023
+ "observer": "fixture"
4024
+ },
4025
+ {
4026
+ "any": [
4027
+ {
4028
+ "blocked": {
4029
+ "url": "{target}/doc?n={tag}",
4030
+ "session": "child",
4031
+ "frame": false
4032
+ },
4033
+ "observer": "client"
4034
+ },
4035
+ {
4036
+ "blocked": {
4037
+ "url": "{target}/doc?n={tag}",
4038
+ "session": "child",
4039
+ "frame": false
4040
+ },
4041
+ "observer": "unguarded"
4042
+ },
4043
+ {
4044
+ "history": {
4045
+ "url": "{target}/doc?n={tag}",
4046
+ "session": "child"
4047
+ },
4048
+ "observer": "unguarded"
4049
+ }
4050
+ ],
4051
+ "observer": "client"
4052
+ }
4053
+ ],
4054
+ "observer": "client"
2416
4055
  }
2417
4056
  }
2418
4057
  },
@@ -2433,7 +4072,7 @@
2433
4072
  "loaded": "either",
2434
4073
  "detached": true
2435
4074
  },
2436
- "designDependent": ["loaded"],
4075
+ "designDependent": ["loaded", "detached"],
2437
4076
  "liveCheck": {
2438
4077
  "any": [
2439
4078
  {
@@ -2463,6 +4102,13 @@
2463
4102
  "frame": false
2464
4103
  },
2465
4104
  "observer": "unguarded"
4105
+ },
4106
+ {
4107
+ "history": {
4108
+ "url": "{target}/doc?n={tag}",
4109
+ "session": "child"
4110
+ },
4111
+ "observer": "unguarded"
2466
4112
  }
2467
4113
  ],
2468
4114
  "observer": "client"
@@ -2679,6 +4325,25 @@
2679
4325
  "frame": false
2680
4326
  },
2681
4327
  "observer": "unguarded"
4328
+ },
4329
+ {
4330
+ "history": {
4331
+ "anyOf": [
4332
+ {
4333
+ "hops": [
4334
+ {
4335
+ "origin": "{ordinary}",
4336
+ "code": 302
4337
+ }
4338
+ ],
4339
+ "to": "{target}/doc?n={tag}",
4340
+ "index": 0
4341
+ },
4342
+ "{target}/doc?n={tag}"
4343
+ ],
4344
+ "session": "child"
4345
+ },
4346
+ "observer": "unguarded"
2682
4347
  }
2683
4348
  ],
2684
4349
  "observer": "client"
@@ -2934,10 +4599,74 @@
2934
4599
  "session": "child",
2935
4600
  "frame": false
2936
4601
  },
2937
- "observer": "client"
4602
+ "observer": "client"
4603
+ },
4604
+ {
4605
+ "blocked": {
4606
+ "anyOf": [
4607
+ {
4608
+ "hops": [
4609
+ {
4610
+ "origin": "{ordinary}",
4611
+ "code": 301
4612
+ },
4613
+ {
4614
+ "origin": "{cross}",
4615
+ "code": 307
4616
+ },
4617
+ {
4618
+ "origin": "{ordinary}",
4619
+ "code": 303
4620
+ }
4621
+ ],
4622
+ "to": "{target}/doc?n={tag}",
4623
+ "index": 0
4624
+ },
4625
+ {
4626
+ "hops": [
4627
+ {
4628
+ "origin": "{ordinary}",
4629
+ "code": 301
4630
+ },
4631
+ {
4632
+ "origin": "{cross}",
4633
+ "code": 307
4634
+ },
4635
+ {
4636
+ "origin": "{ordinary}",
4637
+ "code": 303
4638
+ }
4639
+ ],
4640
+ "to": "{target}/doc?n={tag}",
4641
+ "index": 1
4642
+ },
4643
+ {
4644
+ "hops": [
4645
+ {
4646
+ "origin": "{ordinary}",
4647
+ "code": 301
4648
+ },
4649
+ {
4650
+ "origin": "{cross}",
4651
+ "code": 307
4652
+ },
4653
+ {
4654
+ "origin": "{ordinary}",
4655
+ "code": 303
4656
+ }
4657
+ ],
4658
+ "to": "{target}/doc?n={tag}",
4659
+ "index": 2
4660
+ },
4661
+ "{target}/doc?n={tag}"
4662
+ ],
4663
+ "session": "child",
4664
+ "frame": false
4665
+ },
4666
+ "observer": "unguarded"
2938
4667
  },
2939
4668
  {
2940
- "blocked": {
4669
+ "history": {
2941
4670
  "anyOf": [
2942
4671
  {
2943
4672
  "hops": [
@@ -2995,8 +4724,7 @@
2995
4724
  },
2996
4725
  "{target}/doc?n={tag}"
2997
4726
  ],
2998
- "session": "child",
2999
- "frame": false
4727
+ "session": "child"
3000
4728
  },
3001
4729
  "observer": "unguarded"
3002
4730
  }
@@ -3167,11 +4895,24 @@
3167
4895
  "means": "a child frame is a chrome-error page for {target}/doc?n={tag}",
3168
4896
  "dependsOn": ["refused.8"],
3169
4897
  "check": {
3170
- "result": "frameTree",
3171
- "path": "result",
3172
- "equals": {
3173
- "$regex": "chrome-error://"
3174
- },
4898
+ "any": [
4899
+ {
4900
+ "result": "frameTree",
4901
+ "path": "result",
4902
+ "equals": {
4903
+ "$regex": "chrome-error://"
4904
+ },
4905
+ "observer": "client"
4906
+ },
4907
+ {
4908
+ "frameBlocked": {
4909
+ "url": "{target}/doc?n={tag}",
4910
+ "session": "page",
4911
+ "frame": true
4912
+ },
4913
+ "observer": "unguarded"
4914
+ }
4915
+ ],
3175
4916
  "observer": "client"
3176
4917
  }
3177
4918
  }
@@ -3396,11 +5137,24 @@
3396
5137
  "means": "a child frame is a chrome-error page for {target}/doc?n={tag}",
3397
5138
  "dependsOn": ["refused.8"],
3398
5139
  "check": {
3399
- "result": "frameTree",
3400
- "path": "result",
3401
- "equals": {
3402
- "$regex": "chrome-error://"
3403
- },
5140
+ "any": [
5141
+ {
5142
+ "result": "frameTree",
5143
+ "path": "result",
5144
+ "equals": {
5145
+ "$regex": "chrome-error://"
5146
+ },
5147
+ "observer": "client"
5148
+ },
5149
+ {
5150
+ "frameBlocked": {
5151
+ "url": "{target}/doc?n={tag}",
5152
+ "session": "page",
5153
+ "frame": true
5154
+ },
5155
+ "observer": "unguarded"
5156
+ }
5157
+ ],
3404
5158
  "observer": "client"
3405
5159
  }
3406
5160
  }
@@ -4028,6 +5782,43 @@
4028
5782
  "check": {
4029
5783
  "detached": "page",
4030
5784
  "observer": "client"
5785
+ },
5786
+ "eitherWhen": {
5787
+ "all": [
5788
+ {
5789
+ "pre": "{target}/doc?n={tag}",
5790
+ "observer": "fixture"
5791
+ },
5792
+ {
5793
+ "any": [
5794
+ {
5795
+ "blocked": {
5796
+ "url": "{target}/doc?n={tag}",
5797
+ "session": "page",
5798
+ "frame": false
5799
+ },
5800
+ "observer": "client"
5801
+ },
5802
+ {
5803
+ "blocked": {
5804
+ "url": "{target}/doc?n={tag}",
5805
+ "session": "page",
5806
+ "frame": false
5807
+ },
5808
+ "observer": "unguarded"
5809
+ },
5810
+ {
5811
+ "history": {
5812
+ "url": "{target}/doc?n={tag}",
5813
+ "session": "page"
5814
+ },
5815
+ "observer": "unguarded"
5816
+ }
5817
+ ],
5818
+ "observer": "client"
5819
+ }
5820
+ ],
5821
+ "observer": "client"
4031
5822
  }
4032
5823
  }
4033
5824
  },
@@ -4075,6 +5866,13 @@
4075
5866
  "frame": false
4076
5867
  },
4077
5868
  "observer": "unguarded"
5869
+ },
5870
+ {
5871
+ "history": {
5872
+ "url": "{target}/doc?n={tag}",
5873
+ "session": "page"
5874
+ },
5875
+ "observer": "unguarded"
4078
5876
  }
4079
5877
  ],
4080
5878
  "observer": "client"
@@ -4084,7 +5882,8 @@
4084
5882
  }
4085
5883
  ],
4086
5884
  "observer": "client"
4087
- }
5885
+ },
5886
+ "designDependent": ["detached"]
4088
5887
  },
4089
5888
  {
4090
5889
  "id": "C5.continue-request",
@@ -4174,6 +5973,43 @@
4174
5973
  "check": {
4175
5974
  "detached": "page",
4176
5975
  "observer": "client"
5976
+ },
5977
+ "eitherWhen": {
5978
+ "all": [
5979
+ {
5980
+ "pre": "{target}/doc?n={tag}",
5981
+ "observer": "fixture"
5982
+ },
5983
+ {
5984
+ "any": [
5985
+ {
5986
+ "blocked": {
5987
+ "url": "{target}/doc?n={tag}",
5988
+ "session": "page",
5989
+ "frame": false
5990
+ },
5991
+ "observer": "client"
5992
+ },
5993
+ {
5994
+ "blocked": {
5995
+ "url": "{target}/doc?n={tag}",
5996
+ "session": "page",
5997
+ "frame": false
5998
+ },
5999
+ "observer": "unguarded"
6000
+ },
6001
+ {
6002
+ "history": {
6003
+ "url": "{target}/doc?n={tag}",
6004
+ "session": "page"
6005
+ },
6006
+ "observer": "unguarded"
6007
+ }
6008
+ ],
6009
+ "observer": "client"
6010
+ }
6011
+ ],
6012
+ "observer": "client"
4177
6013
  }
4178
6014
  }
4179
6015
  },
@@ -4221,6 +6057,13 @@
4221
6057
  "frame": false
4222
6058
  },
4223
6059
  "observer": "unguarded"
6060
+ },
6061
+ {
6062
+ "history": {
6063
+ "url": "{target}/doc?n={tag}",
6064
+ "session": "page"
6065
+ },
6066
+ "observer": "unguarded"
4224
6067
  }
4225
6068
  ],
4226
6069
  "observer": "client"
@@ -4230,7 +6073,8 @@
4230
6073
  }
4231
6074
  ],
4232
6075
  "observer": "client"
4233
- }
6076
+ },
6077
+ "designDependent": ["detached"]
4234
6078
  },
4235
6079
  {
4236
6080
  "id": "C5.continue-response",
@@ -6022,7 +7866,11 @@
6022
7866
  "trigger": [
6023
7867
  {
6024
7868
  "cdp": "Network.clearBrowserCookies",
6025
- "as": "network"
7869
+ "as": "network",
7870
+ "refusable": true,
7871
+ "refusal": {
7872
+ "match": "refused"
7873
+ }
6026
7874
  },
6027
7875
  {
6028
7876
  "cdp": "Storage.clearCookies",
@@ -6054,6 +7902,7 @@
6054
7902
  "observe": {
6055
7903
  "network": {
6056
7904
  "means": "network succeeded",
7905
+ "dependsOn": ["network"],
6057
7906
  "check": {
6058
7907
  "result": "network",
6059
7908
  "path": "ok",
@@ -6063,6 +7912,7 @@
6063
7912
  },
6064
7913
  "storage": {
6065
7914
  "means": "storage succeeded",
7915
+ "dependsOn": [],
6066
7916
  "check": {
6067
7917
  "result": "storage",
6068
7918
  "path": "ok",
@@ -6072,6 +7922,7 @@
6072
7922
  },
6073
7923
  "refused": {
6074
7924
  "means": "network and storage were both refused",
7925
+ "dependsOn": [],
6075
7926
  "check": {
6076
7927
  "refused": ["network", "storage"],
6077
7928
  "observer": "client"
@@ -6426,6 +8277,13 @@
6426
8277
  "frame": false
6427
8278
  },
6428
8279
  "observer": "unguarded"
8280
+ },
8281
+ {
8282
+ "history": {
8283
+ "url": "{target}/doc?n={tag}",
8284
+ "session": "page"
8285
+ },
8286
+ "observer": "unguarded"
6429
8287
  }
6430
8288
  ],
6431
8289
  "observer": "client"
@@ -6561,6 +8419,13 @@
6561
8419
  "frame": false
6562
8420
  },
6563
8421
  "observer": "unguarded"
8422
+ },
8423
+ {
8424
+ "history": {
8425
+ "url": "{target}/doc?n={tag}",
8426
+ "session": "page"
8427
+ },
8428
+ "observer": "unguarded"
6564
8429
  }
6565
8430
  ],
6566
8431
  "observer": "client"
@@ -6696,6 +8561,13 @@
6696
8561
  "frame": false
6697
8562
  },
6698
8563
  "observer": "unguarded"
8564
+ },
8565
+ {
8566
+ "history": {
8567
+ "url": "{target}/doc?n={tag}",
8568
+ "session": "page"
8569
+ },
8570
+ "observer": "unguarded"
6699
8571
  }
6700
8572
  ],
6701
8573
  "observer": "client"
@@ -6872,6 +8744,25 @@
6872
8744
  "frame": false
6873
8745
  },
6874
8746
  "observer": "unguarded"
8747
+ },
8748
+ {
8749
+ "history": {
8750
+ "anyOf": [
8751
+ {
8752
+ "hops": [
8753
+ {
8754
+ "origin": "{plain}",
8755
+ "code": 302
8756
+ }
8757
+ ],
8758
+ "to": "{target}/doc?n={tag}",
8759
+ "index": 0
8760
+ },
8761
+ "{target}/doc?n={tag}"
8762
+ ],
8763
+ "session": "page"
8764
+ },
8765
+ "observer": "unguarded"
6875
8766
  }
6876
8767
  ],
6877
8768
  "observer": "client"
@@ -7048,6 +8939,25 @@
7048
8939
  "frame": false
7049
8940
  },
7050
8941
  "observer": "unguarded"
8942
+ },
8943
+ {
8944
+ "history": {
8945
+ "anyOf": [
8946
+ {
8947
+ "hops": [
8948
+ {
8949
+ "origin": "{plain}",
8950
+ "code": 307
8951
+ }
8952
+ ],
8953
+ "to": "{target}/doc?n={tag}",
8954
+ "index": 0
8955
+ },
8956
+ "{target}/doc?n={tag}"
8957
+ ],
8958
+ "session": "page"
8959
+ },
8960
+ "observer": "unguarded"
7051
8961
  }
7052
8962
  ],
7053
8963
  "observer": "client"
@@ -7268,6 +9178,43 @@
7268
9178
  "frame": false
7269
9179
  },
7270
9180
  "observer": "unguarded"
9181
+ },
9182
+ {
9183
+ "history": {
9184
+ "anyOf": [
9185
+ {
9186
+ "hops": [
9187
+ {
9188
+ "origin": "{plain}",
9189
+ "code": 302
9190
+ },
9191
+ {
9192
+ "origin": "{plain}",
9193
+ "code": 302
9194
+ }
9195
+ ],
9196
+ "to": "{target}/doc?n={tag}",
9197
+ "index": 0
9198
+ },
9199
+ {
9200
+ "hops": [
9201
+ {
9202
+ "origin": "{plain}",
9203
+ "code": 302
9204
+ },
9205
+ {
9206
+ "origin": "{plain}",
9207
+ "code": 302
9208
+ }
9209
+ ],
9210
+ "to": "{target}/doc?n={tag}",
9211
+ "index": 1
9212
+ },
9213
+ "{target}/doc?n={tag}"
9214
+ ],
9215
+ "session": "page"
9216
+ },
9217
+ "observer": "unguarded"
7271
9218
  }
7272
9219
  ],
7273
9220
  "observer": "client"
@@ -7442,6 +9389,13 @@
7442
9389
  "frame": false
7443
9390
  },
7444
9391
  "observer": "unguarded"
9392
+ },
9393
+ {
9394
+ "history": {
9395
+ "url": "{target}/doc?n={tag}",
9396
+ "session": "child"
9397
+ },
9398
+ "observer": "unguarded"
7445
9399
  }
7446
9400
  ],
7447
9401
  "observer": "client"
@@ -7713,6 +9667,13 @@
7713
9667
  "frame": false
7714
9668
  },
7715
9669
  "observer": "unguarded"
9670
+ },
9671
+ {
9672
+ "history": {
9673
+ "url": "{target}/doc?n={tag}",
9674
+ "session": "page"
9675
+ },
9676
+ "observer": "unguarded"
7716
9677
  }
7717
9678
  ],
7718
9679
  "observer": "client"
@@ -7846,6 +9807,13 @@
7846
9807
  "frame": false
7847
9808
  },
7848
9809
  "observer": "unguarded"
9810
+ },
9811
+ {
9812
+ "history": {
9813
+ "url": "{target}/doc?n={tag}",
9814
+ "session": "page"
9815
+ },
9816
+ "observer": "unguarded"
7849
9817
  }
7850
9818
  ],
7851
9819
  "observer": "client"
@@ -7969,6 +9937,13 @@
7969
9937
  "frame": false
7970
9938
  },
7971
9939
  "observer": "unguarded"
9940
+ },
9941
+ {
9942
+ "history": {
9943
+ "url": "{target}/doc?n={tag}",
9944
+ "session": "page"
9945
+ },
9946
+ "observer": "unguarded"
7972
9947
  }
7973
9948
  ],
7974
9949
  "observer": "client"
@@ -8100,6 +10075,13 @@
8100
10075
  "frame": false
8101
10076
  },
8102
10077
  "observer": "unguarded"
10078
+ },
10079
+ {
10080
+ "history": {
10081
+ "url": "{target}/doc?n={tag}",
10082
+ "session": "page"
10083
+ },
10084
+ "observer": "unguarded"
8103
10085
  }
8104
10086
  ],
8105
10087
  "observer": "client"
@@ -8247,6 +10229,13 @@
8247
10229
  "frame": false
8248
10230
  },
8249
10231
  "observer": "unguarded"
10232
+ },
10233
+ {
10234
+ "history": {
10235
+ "url": "{target}/doc?n={tag}",
10236
+ "session": "page"
10237
+ },
10238
+ "observer": "unguarded"
8250
10239
  }
8251
10240
  ],
8252
10241
  "observer": "client"
@@ -8383,6 +10372,13 @@
8383
10372
  "frame": false
8384
10373
  },
8385
10374
  "observer": "unguarded"
10375
+ },
10376
+ {
10377
+ "history": {
10378
+ "url": "{target}/doc?n={tag}&csp=1",
10379
+ "session": "page"
10380
+ },
10381
+ "observer": "unguarded"
8386
10382
  }
8387
10383
  ],
8388
10384
  "observer": "client"
@@ -8525,6 +10521,13 @@
8525
10521
  "frame": false
8526
10522
  },
8527
10523
  "observer": "unguarded"
10524
+ },
10525
+ {
10526
+ "history": {
10527
+ "url": "{target}/doc?n={tag}",
10528
+ "session": "page"
10529
+ },
10530
+ "observer": "unguarded"
8528
10531
  }
8529
10532
  ],
8530
10533
  "observer": "client"
@@ -8651,6 +10654,13 @@
8651
10654
  "frame": false
8652
10655
  },
8653
10656
  "observer": "unguarded"
10657
+ },
10658
+ {
10659
+ "history": {
10660
+ "url": "{target}/doc?n={tag}",
10661
+ "session": "page"
10662
+ },
10663
+ "observer": "unguarded"
8654
10664
  }
8655
10665
  ],
8656
10666
  "observer": "client"