@ai-ecoverse/slicc-browsers 1.22.0 → 1.22.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 +3 -3
- package/fixture-server.mjs +7 -0
- package/guard-runner.mjs +609 -122
- package/guard-vectors.json +1716 -9
- package/package.json +5 -4
- package/protected-worker.mjs +511 -0
- package/schema/guard-vectors.schema.json +79 -0
package/guard-vectors.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"setVersion": "1.22.
|
|
3
|
+
"setVersion": "1.22.1",
|
|
4
4
|
"sources": [
|
|
5
5
|
{
|
|
6
6
|
"repo": "ai-ecoverse/slicc-cli",
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
"siteIsolationOff": "the browser runs without site isolation, so a cross-site iframe shares its parent's process",
|
|
104
104
|
"inboundDelay": "a harness gate holding browser-to-guard messages until release during a history restore, with seed and release evidence",
|
|
105
105
|
"forwardAudit": "a complete browser-side forwarding ledger for history-restore probes and for checks of a command's forwarded params (client.forwarded)",
|
|
106
|
-
"stockSetup": "the guard admits stock clients' setup calls: init scripts with no code (the no-code regex is matched on the whole string without the multiline flag), the four display emulation calls, bindings scoped to an isolated world, Page.createIsolatedWorld on an ordinary frame with grantUniveralAccess and contentSecurityPolicy stripped and no executionContextId for any other frame, and Target.setAutoAttach
|
|
106
|
+
"stockSetup": "the guard admits stock clients' setup calls: init scripts with no code (the no-code regex is matched on the whole string without the multiline flag), the four display emulation calls, bindings scoped to an isolated world, Page.createIsolatedWorld on an ordinary frame with grantUniveralAccess and contentSecurityPolicy stripped and no executionContextId for any other frame, and Target.setAutoAttach that either narrows to tab targets or hides per target so no protected-origin page, iframe or worker reaches the client (pages under the tab held like pages, with the same URL redaction in targetInfo)",
|
|
107
107
|
"syntheticAutoAttach": "the transport has no native Target.setAutoAttach, so the guard attaches new tabs, pages and their children itself and synthesizes Target.attachedToTarget, with the same placement and holds",
|
|
108
108
|
"secureOrigin": "the fixture and page origins are secure contexts (HTTPS), so service worker registration is available",
|
|
109
109
|
"closeProtected": "the guard lets Target.closeTarget close a protected tab"
|
|
@@ -131,7 +131,8 @@
|
|
|
131
131
|
"probe": "guard-driver.mjs probe({log}, {tag})",
|
|
132
132
|
"pageTarget": "the current page target id",
|
|
133
133
|
"responseOrigin": "the fixture response CORS origin",
|
|
134
|
-
"browserUi": "the id of one of Chrome's own browser_ui targets, which the runner looks up with its own CDP"
|
|
134
|
+
"browserUi": "the id of one of Chrome's own browser_ui targets, which the runner looks up with its own CDP",
|
|
135
|
+
"workerTarget": "the id of the protected-origin worker the unguarded spawnWorker step created"
|
|
135
136
|
},
|
|
136
137
|
"vectors": [
|
|
137
138
|
{
|
|
@@ -28016,8 +28017,7 @@
|
|
|
28016
28017
|
"or": {
|
|
28017
28018
|
"served": "{target}/doc?n={tag}",
|
|
28018
28019
|
"observer": "fixture"
|
|
28019
|
-
}
|
|
28020
|
-
"required": true
|
|
28020
|
+
}
|
|
28021
28021
|
}
|
|
28022
28022
|
},
|
|
28023
28023
|
{
|
|
@@ -29148,9 +29148,10 @@
|
|
|
29148
29148
|
},
|
|
29149
29149
|
"expected": {
|
|
29150
29150
|
"admitted": true,
|
|
29151
|
-
"workerAttached":
|
|
29151
|
+
"workerAttached": "either",
|
|
29152
29152
|
"workerExists": true
|
|
29153
|
-
}
|
|
29153
|
+
},
|
|
29154
|
+
"designDependent": ["workerAttached"]
|
|
29154
29155
|
},
|
|
29155
29156
|
{
|
|
29156
29157
|
"id": "C3.tab-iframe-leak",
|
|
@@ -29449,8 +29450,1714 @@
|
|
|
29449
29450
|
"expected": {
|
|
29450
29451
|
"admitted": true,
|
|
29451
29452
|
"workerExists": true,
|
|
29452
|
-
"workerAttached":
|
|
29453
|
-
}
|
|
29453
|
+
"workerAttached": "either"
|
|
29454
|
+
},
|
|
29455
|
+
"designDependent": ["workerAttached"]
|
|
29456
|
+
},
|
|
29457
|
+
{
|
|
29458
|
+
"id": "C3.protected-worker-dedicated",
|
|
29459
|
+
"family": "C",
|
|
29460
|
+
"kind": "cdp",
|
|
29461
|
+
"scope": "any",
|
|
29462
|
+
"setup": [
|
|
29463
|
+
{
|
|
29464
|
+
"page": "tab",
|
|
29465
|
+
"url": "{ordinary}/doc?n=opener-{tag}"
|
|
29466
|
+
},
|
|
29467
|
+
{
|
|
29468
|
+
"cdp": "Target.setAutoAttach",
|
|
29469
|
+
"params": {
|
|
29470
|
+
"autoAttach": true,
|
|
29471
|
+
"waitForDebuggerOnStart": true,
|
|
29472
|
+
"flatten": true,
|
|
29473
|
+
"filter": [
|
|
29474
|
+
{
|
|
29475
|
+
"type": "page",
|
|
29476
|
+
"exclude": true
|
|
29477
|
+
},
|
|
29478
|
+
{}
|
|
29479
|
+
]
|
|
29480
|
+
},
|
|
29481
|
+
"session": "browser",
|
|
29482
|
+
"as": "tabs",
|
|
29483
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"]
|
|
29484
|
+
},
|
|
29485
|
+
{
|
|
29486
|
+
"children": [
|
|
29487
|
+
{
|
|
29488
|
+
"cdp": "Target.setAutoAttach",
|
|
29489
|
+
"params": {
|
|
29490
|
+
"autoAttach": true,
|
|
29491
|
+
"waitForDebuggerOnStart": true,
|
|
29492
|
+
"flatten": true,
|
|
29493
|
+
"filter": [{}]
|
|
29494
|
+
}
|
|
29495
|
+
}
|
|
29496
|
+
],
|
|
29497
|
+
"requires": ["autoAttach"],
|
|
29498
|
+
"where": {
|
|
29499
|
+
"type": "page"
|
|
29500
|
+
}
|
|
29501
|
+
}
|
|
29502
|
+
],
|
|
29503
|
+
"trigger": [
|
|
29504
|
+
{
|
|
29505
|
+
"spawnWorker": "dedicated",
|
|
29506
|
+
"url": "{target}/doc?n=host-{tag}",
|
|
29507
|
+
"as": "spawn",
|
|
29508
|
+
"requires": ["autoAttach"]
|
|
29509
|
+
},
|
|
29510
|
+
{
|
|
29511
|
+
"settle": {
|
|
29512
|
+
"served": "{target}/doc?n=host-{tag}",
|
|
29513
|
+
"ms": 5000,
|
|
29514
|
+
"required": true
|
|
29515
|
+
}
|
|
29516
|
+
},
|
|
29517
|
+
{
|
|
29518
|
+
"cdp": "Target.attachToTarget",
|
|
29519
|
+
"params": {
|
|
29520
|
+
"targetId": "{workerTarget}",
|
|
29521
|
+
"flatten": true
|
|
29522
|
+
},
|
|
29523
|
+
"session": "browser",
|
|
29524
|
+
"as": "attach",
|
|
29525
|
+
"requires": ["browserSession"],
|
|
29526
|
+
"reuseSession": true,
|
|
29527
|
+
"refusable": true,
|
|
29528
|
+
"refusal": {
|
|
29529
|
+
"match": "refused"
|
|
29530
|
+
}
|
|
29531
|
+
},
|
|
29532
|
+
{
|
|
29533
|
+
"wait": 1500
|
|
29534
|
+
},
|
|
29535
|
+
{
|
|
29536
|
+
"cdp": "Target.getTargets",
|
|
29537
|
+
"session": "browser",
|
|
29538
|
+
"as": "targets",
|
|
29539
|
+
"requires": ["browserSession"]
|
|
29540
|
+
},
|
|
29541
|
+
{
|
|
29542
|
+
"probeSessions": {
|
|
29543
|
+
"since": "spawn",
|
|
29544
|
+
"path": "/worker.js",
|
|
29545
|
+
"attach": ["attach"]
|
|
29546
|
+
},
|
|
29547
|
+
"as": "probe",
|
|
29548
|
+
"requires": ["autoAttach"]
|
|
29549
|
+
}
|
|
29550
|
+
],
|
|
29551
|
+
"targets": ["seven", "vault"],
|
|
29552
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"],
|
|
29553
|
+
"observe": {
|
|
29554
|
+
"admitted": {
|
|
29555
|
+
"means": "the guard answered tabs without an error and the unguarded spawn finished",
|
|
29556
|
+
"check": {
|
|
29557
|
+
"all": [
|
|
29558
|
+
{
|
|
29559
|
+
"result": "tabs",
|
|
29560
|
+
"path": "ok",
|
|
29561
|
+
"equals": true,
|
|
29562
|
+
"observer": "client"
|
|
29563
|
+
},
|
|
29564
|
+
{
|
|
29565
|
+
"result": "spawn",
|
|
29566
|
+
"path": "result.exists",
|
|
29567
|
+
"equals": true,
|
|
29568
|
+
"observer": "client"
|
|
29569
|
+
}
|
|
29570
|
+
],
|
|
29571
|
+
"observer": "client"
|
|
29572
|
+
},
|
|
29573
|
+
"dependsOn": []
|
|
29574
|
+
},
|
|
29575
|
+
"workerExists": {
|
|
29576
|
+
"means": "the unguarded spawn left a live protected-origin worker",
|
|
29577
|
+
"dependsOn": [],
|
|
29578
|
+
"check": {
|
|
29579
|
+
"result": "spawn",
|
|
29580
|
+
"path": "result.exists",
|
|
29581
|
+
"equals": true,
|
|
29582
|
+
"observer": "client"
|
|
29583
|
+
}
|
|
29584
|
+
},
|
|
29585
|
+
"workerAttached": {
|
|
29586
|
+
"means": "the client got Target.attachedToTarget for a worker",
|
|
29587
|
+
"dependsOn": [],
|
|
29588
|
+
"check": {
|
|
29589
|
+
"any": [
|
|
29590
|
+
{
|
|
29591
|
+
"event": "Target.attachedToTarget",
|
|
29592
|
+
"where": {
|
|
29593
|
+
"params": {
|
|
29594
|
+
"targetInfo": {
|
|
29595
|
+
"targetId": "{workerTarget}"
|
|
29596
|
+
}
|
|
29597
|
+
}
|
|
29598
|
+
},
|
|
29599
|
+
"observer": "client"
|
|
29600
|
+
},
|
|
29601
|
+
{
|
|
29602
|
+
"event": "Target.attachedToTarget",
|
|
29603
|
+
"where": {
|
|
29604
|
+
"params": {
|
|
29605
|
+
"targetInfo": {
|
|
29606
|
+
"type": "worker"
|
|
29607
|
+
}
|
|
29608
|
+
}
|
|
29609
|
+
},
|
|
29610
|
+
"observer": "client"
|
|
29611
|
+
},
|
|
29612
|
+
{
|
|
29613
|
+
"event": "Target.attachedToTarget",
|
|
29614
|
+
"where": {
|
|
29615
|
+
"params": {
|
|
29616
|
+
"targetInfo": {
|
|
29617
|
+
"type": "worker",
|
|
29618
|
+
"url": {
|
|
29619
|
+
"$contains": "{target}"
|
|
29620
|
+
}
|
|
29621
|
+
}
|
|
29622
|
+
}
|
|
29623
|
+
},
|
|
29624
|
+
"observer": "client"
|
|
29625
|
+
},
|
|
29626
|
+
{
|
|
29627
|
+
"event": "Target.attachedToTarget",
|
|
29628
|
+
"where": {
|
|
29629
|
+
"params": {
|
|
29630
|
+
"targetInfo": {
|
|
29631
|
+
"type": "worker",
|
|
29632
|
+
"url": {
|
|
29633
|
+
"$contains": "/worker.js"
|
|
29634
|
+
}
|
|
29635
|
+
}
|
|
29636
|
+
}
|
|
29637
|
+
},
|
|
29638
|
+
"observer": "client"
|
|
29639
|
+
}
|
|
29640
|
+
],
|
|
29641
|
+
"observer": "client"
|
|
29642
|
+
}
|
|
29643
|
+
},
|
|
29644
|
+
"workerListed": {
|
|
29645
|
+
"means": "Target.getTargets shows the protected worker script URL to the client",
|
|
29646
|
+
"dependsOn": [],
|
|
29647
|
+
"check": {
|
|
29648
|
+
"any": [
|
|
29649
|
+
{
|
|
29650
|
+
"result": "targets",
|
|
29651
|
+
"path": "result.targetInfos",
|
|
29652
|
+
"equals": {
|
|
29653
|
+
"$some": {
|
|
29654
|
+
"targetId": "{workerTarget}"
|
|
29655
|
+
}
|
|
29656
|
+
},
|
|
29657
|
+
"observer": "client"
|
|
29658
|
+
},
|
|
29659
|
+
{
|
|
29660
|
+
"result": "targets",
|
|
29661
|
+
"path": "result.targetInfos",
|
|
29662
|
+
"equals": {
|
|
29663
|
+
"$some": {
|
|
29664
|
+
"type": "worker"
|
|
29665
|
+
}
|
|
29666
|
+
},
|
|
29667
|
+
"observer": "client"
|
|
29668
|
+
},
|
|
29669
|
+
{
|
|
29670
|
+
"result": "targets",
|
|
29671
|
+
"path": "result.targetInfos",
|
|
29672
|
+
"equals": {
|
|
29673
|
+
"$some": {
|
|
29674
|
+
"type": "worker",
|
|
29675
|
+
"url": {
|
|
29676
|
+
"$contains": "{target}"
|
|
29677
|
+
}
|
|
29678
|
+
}
|
|
29679
|
+
},
|
|
29680
|
+
"observer": "client"
|
|
29681
|
+
},
|
|
29682
|
+
{
|
|
29683
|
+
"result": "targets",
|
|
29684
|
+
"path": "result.targetInfos",
|
|
29685
|
+
"equals": {
|
|
29686
|
+
"$some": {
|
|
29687
|
+
"type": "worker",
|
|
29688
|
+
"url": {
|
|
29689
|
+
"$contains": "/worker.js"
|
|
29690
|
+
}
|
|
29691
|
+
}
|
|
29692
|
+
},
|
|
29693
|
+
"observer": "client"
|
|
29694
|
+
}
|
|
29695
|
+
],
|
|
29696
|
+
"observer": "client"
|
|
29697
|
+
},
|
|
29698
|
+
"absencePoll": true
|
|
29699
|
+
},
|
|
29700
|
+
"workerDiscovered": {
|
|
29701
|
+
"means": "a discovery event carries the protected worker script URL to the client",
|
|
29702
|
+
"dependsOn": [],
|
|
29703
|
+
"requires": ["discovery"],
|
|
29704
|
+
"check": {
|
|
29705
|
+
"any": [
|
|
29706
|
+
{
|
|
29707
|
+
"event": "Target.targetCreated",
|
|
29708
|
+
"where": {
|
|
29709
|
+
"params": {
|
|
29710
|
+
"targetInfo": {
|
|
29711
|
+
"targetId": "{workerTarget}"
|
|
29712
|
+
}
|
|
29713
|
+
}
|
|
29714
|
+
},
|
|
29715
|
+
"observer": "client"
|
|
29716
|
+
},
|
|
29717
|
+
{
|
|
29718
|
+
"event": "Target.targetInfoChanged",
|
|
29719
|
+
"where": {
|
|
29720
|
+
"params": {
|
|
29721
|
+
"targetInfo": {
|
|
29722
|
+
"targetId": "{workerTarget}"
|
|
29723
|
+
}
|
|
29724
|
+
}
|
|
29725
|
+
},
|
|
29726
|
+
"observer": "client"
|
|
29727
|
+
},
|
|
29728
|
+
{
|
|
29729
|
+
"event": "Target.targetCreated",
|
|
29730
|
+
"where": {
|
|
29731
|
+
"params": {
|
|
29732
|
+
"targetInfo": {
|
|
29733
|
+
"type": "worker"
|
|
29734
|
+
}
|
|
29735
|
+
}
|
|
29736
|
+
},
|
|
29737
|
+
"observer": "client"
|
|
29738
|
+
},
|
|
29739
|
+
{
|
|
29740
|
+
"event": "Target.targetInfoChanged",
|
|
29741
|
+
"where": {
|
|
29742
|
+
"params": {
|
|
29743
|
+
"targetInfo": {
|
|
29744
|
+
"type": "worker"
|
|
29745
|
+
}
|
|
29746
|
+
}
|
|
29747
|
+
},
|
|
29748
|
+
"observer": "client"
|
|
29749
|
+
},
|
|
29750
|
+
{
|
|
29751
|
+
"event": "Target.targetCreated",
|
|
29752
|
+
"where": {
|
|
29753
|
+
"params": {
|
|
29754
|
+
"targetInfo": {
|
|
29755
|
+
"type": "worker",
|
|
29756
|
+
"url": {
|
|
29757
|
+
"$contains": "{target}"
|
|
29758
|
+
}
|
|
29759
|
+
}
|
|
29760
|
+
}
|
|
29761
|
+
},
|
|
29762
|
+
"observer": "client"
|
|
29763
|
+
},
|
|
29764
|
+
{
|
|
29765
|
+
"event": "Target.targetCreated",
|
|
29766
|
+
"where": {
|
|
29767
|
+
"params": {
|
|
29768
|
+
"targetInfo": {
|
|
29769
|
+
"type": "worker",
|
|
29770
|
+
"url": {
|
|
29771
|
+
"$contains": "/worker.js"
|
|
29772
|
+
}
|
|
29773
|
+
}
|
|
29774
|
+
}
|
|
29775
|
+
},
|
|
29776
|
+
"observer": "client"
|
|
29777
|
+
},
|
|
29778
|
+
{
|
|
29779
|
+
"event": "Target.targetInfoChanged",
|
|
29780
|
+
"where": {
|
|
29781
|
+
"params": {
|
|
29782
|
+
"targetInfo": {
|
|
29783
|
+
"type": "worker",
|
|
29784
|
+
"url": {
|
|
29785
|
+
"$contains": "{target}"
|
|
29786
|
+
}
|
|
29787
|
+
}
|
|
29788
|
+
}
|
|
29789
|
+
},
|
|
29790
|
+
"observer": "client"
|
|
29791
|
+
},
|
|
29792
|
+
{
|
|
29793
|
+
"event": "Target.targetInfoChanged",
|
|
29794
|
+
"where": {
|
|
29795
|
+
"params": {
|
|
29796
|
+
"targetInfo": {
|
|
29797
|
+
"type": "worker",
|
|
29798
|
+
"url": {
|
|
29799
|
+
"$contains": "/worker.js"
|
|
29800
|
+
}
|
|
29801
|
+
}
|
|
29802
|
+
}
|
|
29803
|
+
},
|
|
29804
|
+
"observer": "client"
|
|
29805
|
+
}
|
|
29806
|
+
],
|
|
29807
|
+
"observer": "client"
|
|
29808
|
+
}
|
|
29809
|
+
},
|
|
29810
|
+
"attachSession": {
|
|
29811
|
+
"means": "Target.attachToTarget on the worker targetId returned a session",
|
|
29812
|
+
"dependsOn": [],
|
|
29813
|
+
"check": {
|
|
29814
|
+
"result": "attach",
|
|
29815
|
+
"path": "result.sessionId",
|
|
29816
|
+
"equals": {
|
|
29817
|
+
"$regex": "."
|
|
29818
|
+
},
|
|
29819
|
+
"observer": "client"
|
|
29820
|
+
}
|
|
29821
|
+
},
|
|
29822
|
+
"attachRefused": {
|
|
29823
|
+
"means": "Target.attachToTarget on the worker targetId was refused",
|
|
29824
|
+
"dependsOn": [],
|
|
29825
|
+
"check": {
|
|
29826
|
+
"refused": ["attach"],
|
|
29827
|
+
"observer": "client"
|
|
29828
|
+
}
|
|
29829
|
+
},
|
|
29830
|
+
"workerReachable": {
|
|
29831
|
+
"means": "a client session can evaluate in the protected worker global scope",
|
|
29832
|
+
"dependsOn": [],
|
|
29833
|
+
"check": {
|
|
29834
|
+
"result": "probe",
|
|
29835
|
+
"path": "result.reachable",
|
|
29836
|
+
"equals": true,
|
|
29837
|
+
"observer": "client"
|
|
29838
|
+
}
|
|
29839
|
+
}
|
|
29840
|
+
},
|
|
29841
|
+
"live": "the stand-in served the protected host document and the unguarded worker still exists",
|
|
29842
|
+
"liveCheck": {
|
|
29843
|
+
"all": [
|
|
29844
|
+
{
|
|
29845
|
+
"loaded": "{target}/doc?n=host-{tag}",
|
|
29846
|
+
"observer": "fixture"
|
|
29847
|
+
},
|
|
29848
|
+
{
|
|
29849
|
+
"result": "spawn",
|
|
29850
|
+
"path": "result.exists",
|
|
29851
|
+
"equals": true,
|
|
29852
|
+
"observer": "client"
|
|
29853
|
+
}
|
|
29854
|
+
],
|
|
29855
|
+
"observer": "client"
|
|
29856
|
+
},
|
|
29857
|
+
"control": {
|
|
29858
|
+
"origin": "ordinary",
|
|
29859
|
+
"via": "unguarded",
|
|
29860
|
+
"expected": {
|
|
29861
|
+
"admitted": true,
|
|
29862
|
+
"workerExists": true,
|
|
29863
|
+
"workerAttached": "either",
|
|
29864
|
+
"workerListed": true,
|
|
29865
|
+
"attachSession": true,
|
|
29866
|
+
"attachRefused": false,
|
|
29867
|
+
"workerReachable": "either"
|
|
29868
|
+
}
|
|
29869
|
+
},
|
|
29870
|
+
"expected": {
|
|
29871
|
+
"admitted": true,
|
|
29872
|
+
"workerExists": true,
|
|
29873
|
+
"workerAttached": false,
|
|
29874
|
+
"workerListed": false,
|
|
29875
|
+
"workerDiscovered": false,
|
|
29876
|
+
"attachSession": false,
|
|
29877
|
+
"attachRefused": "either",
|
|
29878
|
+
"workerReachable": false
|
|
29879
|
+
},
|
|
29880
|
+
"designDependent": ["attachRefused", "workerAttached"]
|
|
29881
|
+
},
|
|
29882
|
+
{
|
|
29883
|
+
"id": "C3.protected-worker-shared",
|
|
29884
|
+
"family": "C",
|
|
29885
|
+
"kind": "cdp",
|
|
29886
|
+
"scope": "any",
|
|
29887
|
+
"setup": [
|
|
29888
|
+
{
|
|
29889
|
+
"page": "tab",
|
|
29890
|
+
"url": "{ordinary}/doc?n=opener-{tag}"
|
|
29891
|
+
},
|
|
29892
|
+
{
|
|
29893
|
+
"cdp": "Target.setAutoAttach",
|
|
29894
|
+
"params": {
|
|
29895
|
+
"autoAttach": true,
|
|
29896
|
+
"waitForDebuggerOnStart": false,
|
|
29897
|
+
"flatten": true,
|
|
29898
|
+
"filter": [
|
|
29899
|
+
{
|
|
29900
|
+
"type": "page",
|
|
29901
|
+
"exclude": true
|
|
29902
|
+
},
|
|
29903
|
+
{}
|
|
29904
|
+
]
|
|
29905
|
+
},
|
|
29906
|
+
"session": "browser",
|
|
29907
|
+
"as": "tabs",
|
|
29908
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"]
|
|
29909
|
+
},
|
|
29910
|
+
{
|
|
29911
|
+
"children": [
|
|
29912
|
+
{
|
|
29913
|
+
"cdp": "Target.setAutoAttach",
|
|
29914
|
+
"params": {
|
|
29915
|
+
"autoAttach": true,
|
|
29916
|
+
"waitForDebuggerOnStart": true,
|
|
29917
|
+
"flatten": true,
|
|
29918
|
+
"filter": [{}]
|
|
29919
|
+
}
|
|
29920
|
+
}
|
|
29921
|
+
],
|
|
29922
|
+
"requires": ["autoAttach"],
|
|
29923
|
+
"where": {
|
|
29924
|
+
"type": "page"
|
|
29925
|
+
}
|
|
29926
|
+
}
|
|
29927
|
+
],
|
|
29928
|
+
"trigger": [
|
|
29929
|
+
{
|
|
29930
|
+
"spawnWorker": "shared",
|
|
29931
|
+
"url": "{target}/doc?n=host-{tag}",
|
|
29932
|
+
"as": "spawn",
|
|
29933
|
+
"requires": ["autoAttach"]
|
|
29934
|
+
},
|
|
29935
|
+
{
|
|
29936
|
+
"settle": {
|
|
29937
|
+
"served": "{target}/doc?n=host-{tag}",
|
|
29938
|
+
"ms": 5000,
|
|
29939
|
+
"required": true
|
|
29940
|
+
}
|
|
29941
|
+
},
|
|
29942
|
+
{
|
|
29943
|
+
"cdp": "Target.attachToTarget",
|
|
29944
|
+
"params": {
|
|
29945
|
+
"targetId": "{workerTarget}",
|
|
29946
|
+
"flatten": true
|
|
29947
|
+
},
|
|
29948
|
+
"session": "browser",
|
|
29949
|
+
"as": "attach",
|
|
29950
|
+
"requires": ["browserSession"],
|
|
29951
|
+
"reuseSession": true,
|
|
29952
|
+
"refusable": true,
|
|
29953
|
+
"refusal": {
|
|
29954
|
+
"match": "refused"
|
|
29955
|
+
}
|
|
29956
|
+
},
|
|
29957
|
+
{
|
|
29958
|
+
"wait": 1500
|
|
29959
|
+
},
|
|
29960
|
+
{
|
|
29961
|
+
"cdp": "Target.getTargets",
|
|
29962
|
+
"session": "browser",
|
|
29963
|
+
"as": "targets",
|
|
29964
|
+
"requires": ["browserSession"]
|
|
29965
|
+
},
|
|
29966
|
+
{
|
|
29967
|
+
"probeSessions": {
|
|
29968
|
+
"since": "spawn",
|
|
29969
|
+
"path": "/shared-worker.js",
|
|
29970
|
+
"attach": ["attach"]
|
|
29971
|
+
},
|
|
29972
|
+
"as": "probe",
|
|
29973
|
+
"requires": ["autoAttach"]
|
|
29974
|
+
}
|
|
29975
|
+
],
|
|
29976
|
+
"targets": ["seven", "vault"],
|
|
29977
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"],
|
|
29978
|
+
"observe": {
|
|
29979
|
+
"admitted": {
|
|
29980
|
+
"means": "the guard answered tabs without an error and the unguarded spawn finished",
|
|
29981
|
+
"check": {
|
|
29982
|
+
"all": [
|
|
29983
|
+
{
|
|
29984
|
+
"result": "tabs",
|
|
29985
|
+
"path": "ok",
|
|
29986
|
+
"equals": true,
|
|
29987
|
+
"observer": "client"
|
|
29988
|
+
},
|
|
29989
|
+
{
|
|
29990
|
+
"result": "spawn",
|
|
29991
|
+
"path": "result.exists",
|
|
29992
|
+
"equals": true,
|
|
29993
|
+
"observer": "client"
|
|
29994
|
+
}
|
|
29995
|
+
],
|
|
29996
|
+
"observer": "client"
|
|
29997
|
+
},
|
|
29998
|
+
"dependsOn": []
|
|
29999
|
+
},
|
|
30000
|
+
"workerExists": {
|
|
30001
|
+
"means": "the unguarded spawn left a live protected-origin worker",
|
|
30002
|
+
"dependsOn": [],
|
|
30003
|
+
"check": {
|
|
30004
|
+
"result": "spawn",
|
|
30005
|
+
"path": "result.exists",
|
|
30006
|
+
"equals": true,
|
|
30007
|
+
"observer": "client"
|
|
30008
|
+
}
|
|
30009
|
+
},
|
|
30010
|
+
"workerAttached": {
|
|
30011
|
+
"means": "the client got Target.attachedToTarget for a shared_worker",
|
|
30012
|
+
"dependsOn": [],
|
|
30013
|
+
"check": {
|
|
30014
|
+
"any": [
|
|
30015
|
+
{
|
|
30016
|
+
"event": "Target.attachedToTarget",
|
|
30017
|
+
"where": {
|
|
30018
|
+
"params": {
|
|
30019
|
+
"targetInfo": {
|
|
30020
|
+
"targetId": "{workerTarget}"
|
|
30021
|
+
}
|
|
30022
|
+
}
|
|
30023
|
+
},
|
|
30024
|
+
"observer": "client"
|
|
30025
|
+
},
|
|
30026
|
+
{
|
|
30027
|
+
"event": "Target.attachedToTarget",
|
|
30028
|
+
"where": {
|
|
30029
|
+
"params": {
|
|
30030
|
+
"targetInfo": {
|
|
30031
|
+
"type": "shared_worker"
|
|
30032
|
+
}
|
|
30033
|
+
}
|
|
30034
|
+
},
|
|
30035
|
+
"observer": "client"
|
|
30036
|
+
},
|
|
30037
|
+
{
|
|
30038
|
+
"event": "Target.attachedToTarget",
|
|
30039
|
+
"where": {
|
|
30040
|
+
"params": {
|
|
30041
|
+
"targetInfo": {
|
|
30042
|
+
"type": "shared_worker",
|
|
30043
|
+
"url": {
|
|
30044
|
+
"$contains": "{target}"
|
|
30045
|
+
}
|
|
30046
|
+
}
|
|
30047
|
+
}
|
|
30048
|
+
},
|
|
30049
|
+
"observer": "client"
|
|
30050
|
+
},
|
|
30051
|
+
{
|
|
30052
|
+
"event": "Target.attachedToTarget",
|
|
30053
|
+
"where": {
|
|
30054
|
+
"params": {
|
|
30055
|
+
"targetInfo": {
|
|
30056
|
+
"type": "shared_worker",
|
|
30057
|
+
"url": {
|
|
30058
|
+
"$contains": "/shared-worker.js"
|
|
30059
|
+
}
|
|
30060
|
+
}
|
|
30061
|
+
}
|
|
30062
|
+
},
|
|
30063
|
+
"observer": "client"
|
|
30064
|
+
}
|
|
30065
|
+
],
|
|
30066
|
+
"observer": "client"
|
|
30067
|
+
}
|
|
30068
|
+
},
|
|
30069
|
+
"workerListed": {
|
|
30070
|
+
"means": "Target.getTargets shows the protected worker script URL to the client",
|
|
30071
|
+
"dependsOn": [],
|
|
30072
|
+
"check": {
|
|
30073
|
+
"any": [
|
|
30074
|
+
{
|
|
30075
|
+
"result": "targets",
|
|
30076
|
+
"path": "result.targetInfos",
|
|
30077
|
+
"equals": {
|
|
30078
|
+
"$some": {
|
|
30079
|
+
"targetId": "{workerTarget}"
|
|
30080
|
+
}
|
|
30081
|
+
},
|
|
30082
|
+
"observer": "client"
|
|
30083
|
+
},
|
|
30084
|
+
{
|
|
30085
|
+
"result": "targets",
|
|
30086
|
+
"path": "result.targetInfos",
|
|
30087
|
+
"equals": {
|
|
30088
|
+
"$some": {
|
|
30089
|
+
"type": "shared_worker"
|
|
30090
|
+
}
|
|
30091
|
+
},
|
|
30092
|
+
"observer": "client"
|
|
30093
|
+
},
|
|
30094
|
+
{
|
|
30095
|
+
"result": "targets",
|
|
30096
|
+
"path": "result.targetInfos",
|
|
30097
|
+
"equals": {
|
|
30098
|
+
"$some": {
|
|
30099
|
+
"type": "shared_worker",
|
|
30100
|
+
"url": {
|
|
30101
|
+
"$contains": "{target}"
|
|
30102
|
+
}
|
|
30103
|
+
}
|
|
30104
|
+
},
|
|
30105
|
+
"observer": "client"
|
|
30106
|
+
},
|
|
30107
|
+
{
|
|
30108
|
+
"result": "targets",
|
|
30109
|
+
"path": "result.targetInfos",
|
|
30110
|
+
"equals": {
|
|
30111
|
+
"$some": {
|
|
30112
|
+
"type": "shared_worker",
|
|
30113
|
+
"url": {
|
|
30114
|
+
"$contains": "/shared-worker.js"
|
|
30115
|
+
}
|
|
30116
|
+
}
|
|
30117
|
+
},
|
|
30118
|
+
"observer": "client"
|
|
30119
|
+
}
|
|
30120
|
+
],
|
|
30121
|
+
"observer": "client"
|
|
30122
|
+
},
|
|
30123
|
+
"absencePoll": true
|
|
30124
|
+
},
|
|
30125
|
+
"workerDiscovered": {
|
|
30126
|
+
"means": "a discovery event carries the protected worker script URL to the client",
|
|
30127
|
+
"dependsOn": [],
|
|
30128
|
+
"requires": ["discovery"],
|
|
30129
|
+
"check": {
|
|
30130
|
+
"any": [
|
|
30131
|
+
{
|
|
30132
|
+
"event": "Target.targetCreated",
|
|
30133
|
+
"where": {
|
|
30134
|
+
"params": {
|
|
30135
|
+
"targetInfo": {
|
|
30136
|
+
"targetId": "{workerTarget}"
|
|
30137
|
+
}
|
|
30138
|
+
}
|
|
30139
|
+
},
|
|
30140
|
+
"observer": "client"
|
|
30141
|
+
},
|
|
30142
|
+
{
|
|
30143
|
+
"event": "Target.targetInfoChanged",
|
|
30144
|
+
"where": {
|
|
30145
|
+
"params": {
|
|
30146
|
+
"targetInfo": {
|
|
30147
|
+
"targetId": "{workerTarget}"
|
|
30148
|
+
}
|
|
30149
|
+
}
|
|
30150
|
+
},
|
|
30151
|
+
"observer": "client"
|
|
30152
|
+
},
|
|
30153
|
+
{
|
|
30154
|
+
"event": "Target.targetCreated",
|
|
30155
|
+
"where": {
|
|
30156
|
+
"params": {
|
|
30157
|
+
"targetInfo": {
|
|
30158
|
+
"type": "shared_worker"
|
|
30159
|
+
}
|
|
30160
|
+
}
|
|
30161
|
+
},
|
|
30162
|
+
"observer": "client"
|
|
30163
|
+
},
|
|
30164
|
+
{
|
|
30165
|
+
"event": "Target.targetInfoChanged",
|
|
30166
|
+
"where": {
|
|
30167
|
+
"params": {
|
|
30168
|
+
"targetInfo": {
|
|
30169
|
+
"type": "shared_worker"
|
|
30170
|
+
}
|
|
30171
|
+
}
|
|
30172
|
+
},
|
|
30173
|
+
"observer": "client"
|
|
30174
|
+
},
|
|
30175
|
+
{
|
|
30176
|
+
"event": "Target.targetCreated",
|
|
30177
|
+
"where": {
|
|
30178
|
+
"params": {
|
|
30179
|
+
"targetInfo": {
|
|
30180
|
+
"type": "shared_worker",
|
|
30181
|
+
"url": {
|
|
30182
|
+
"$contains": "{target}"
|
|
30183
|
+
}
|
|
30184
|
+
}
|
|
30185
|
+
}
|
|
30186
|
+
},
|
|
30187
|
+
"observer": "client"
|
|
30188
|
+
},
|
|
30189
|
+
{
|
|
30190
|
+
"event": "Target.targetCreated",
|
|
30191
|
+
"where": {
|
|
30192
|
+
"params": {
|
|
30193
|
+
"targetInfo": {
|
|
30194
|
+
"type": "shared_worker",
|
|
30195
|
+
"url": {
|
|
30196
|
+
"$contains": "/shared-worker.js"
|
|
30197
|
+
}
|
|
30198
|
+
}
|
|
30199
|
+
}
|
|
30200
|
+
},
|
|
30201
|
+
"observer": "client"
|
|
30202
|
+
},
|
|
30203
|
+
{
|
|
30204
|
+
"event": "Target.targetInfoChanged",
|
|
30205
|
+
"where": {
|
|
30206
|
+
"params": {
|
|
30207
|
+
"targetInfo": {
|
|
30208
|
+
"type": "shared_worker",
|
|
30209
|
+
"url": {
|
|
30210
|
+
"$contains": "{target}"
|
|
30211
|
+
}
|
|
30212
|
+
}
|
|
30213
|
+
}
|
|
30214
|
+
},
|
|
30215
|
+
"observer": "client"
|
|
30216
|
+
},
|
|
30217
|
+
{
|
|
30218
|
+
"event": "Target.targetInfoChanged",
|
|
30219
|
+
"where": {
|
|
30220
|
+
"params": {
|
|
30221
|
+
"targetInfo": {
|
|
30222
|
+
"type": "shared_worker",
|
|
30223
|
+
"url": {
|
|
30224
|
+
"$contains": "/shared-worker.js"
|
|
30225
|
+
}
|
|
30226
|
+
}
|
|
30227
|
+
}
|
|
30228
|
+
},
|
|
30229
|
+
"observer": "client"
|
|
30230
|
+
}
|
|
30231
|
+
],
|
|
30232
|
+
"observer": "client"
|
|
30233
|
+
}
|
|
30234
|
+
},
|
|
30235
|
+
"attachSession": {
|
|
30236
|
+
"means": "Target.attachToTarget on the worker targetId returned a session",
|
|
30237
|
+
"dependsOn": [],
|
|
30238
|
+
"check": {
|
|
30239
|
+
"result": "attach",
|
|
30240
|
+
"path": "result.sessionId",
|
|
30241
|
+
"equals": {
|
|
30242
|
+
"$regex": "."
|
|
30243
|
+
},
|
|
30244
|
+
"observer": "client"
|
|
30245
|
+
}
|
|
30246
|
+
},
|
|
30247
|
+
"attachRefused": {
|
|
30248
|
+
"means": "Target.attachToTarget on the worker targetId was refused",
|
|
30249
|
+
"dependsOn": [],
|
|
30250
|
+
"check": {
|
|
30251
|
+
"refused": ["attach"],
|
|
30252
|
+
"observer": "client"
|
|
30253
|
+
}
|
|
30254
|
+
},
|
|
30255
|
+
"workerReachable": {
|
|
30256
|
+
"means": "a client session can evaluate in the protected worker global scope",
|
|
30257
|
+
"dependsOn": [],
|
|
30258
|
+
"check": {
|
|
30259
|
+
"result": "probe",
|
|
30260
|
+
"path": "result.reachable",
|
|
30261
|
+
"equals": true,
|
|
30262
|
+
"observer": "client"
|
|
30263
|
+
}
|
|
30264
|
+
}
|
|
30265
|
+
},
|
|
30266
|
+
"live": "the stand-in served the protected host document and the unguarded worker still exists",
|
|
30267
|
+
"liveCheck": {
|
|
30268
|
+
"all": [
|
|
30269
|
+
{
|
|
30270
|
+
"loaded": "{target}/doc?n=host-{tag}",
|
|
30271
|
+
"observer": "fixture"
|
|
30272
|
+
},
|
|
30273
|
+
{
|
|
30274
|
+
"result": "spawn",
|
|
30275
|
+
"path": "result.exists",
|
|
30276
|
+
"equals": true,
|
|
30277
|
+
"observer": "client"
|
|
30278
|
+
}
|
|
30279
|
+
],
|
|
30280
|
+
"observer": "client"
|
|
30281
|
+
},
|
|
30282
|
+
"control": {
|
|
30283
|
+
"origin": "ordinary",
|
|
30284
|
+
"via": "unguarded",
|
|
30285
|
+
"expected": {
|
|
30286
|
+
"admitted": true,
|
|
30287
|
+
"workerExists": true,
|
|
30288
|
+
"workerAttached": true,
|
|
30289
|
+
"workerListed": true,
|
|
30290
|
+
"attachSession": true,
|
|
30291
|
+
"attachRefused": false,
|
|
30292
|
+
"workerReachable": true
|
|
30293
|
+
}
|
|
30294
|
+
},
|
|
30295
|
+
"expected": {
|
|
30296
|
+
"admitted": true,
|
|
30297
|
+
"workerExists": true,
|
|
30298
|
+
"workerAttached": false,
|
|
30299
|
+
"workerListed": false,
|
|
30300
|
+
"workerDiscovered": false,
|
|
30301
|
+
"attachSession": false,
|
|
30302
|
+
"attachRefused": "either",
|
|
30303
|
+
"workerReachable": false
|
|
30304
|
+
},
|
|
30305
|
+
"designDependent": ["attachRefused"]
|
|
30306
|
+
},
|
|
30307
|
+
{
|
|
30308
|
+
"id": "C3.protected-service-worker",
|
|
30309
|
+
"family": "C",
|
|
30310
|
+
"kind": "cdp",
|
|
30311
|
+
"scope": "any",
|
|
30312
|
+
"setup": [
|
|
30313
|
+
{
|
|
30314
|
+
"page": "tab",
|
|
30315
|
+
"url": "{ordinary}/doc?n=opener-{tag}"
|
|
30316
|
+
},
|
|
30317
|
+
{
|
|
30318
|
+
"cdp": "Target.setAutoAttach",
|
|
30319
|
+
"params": {
|
|
30320
|
+
"autoAttach": true,
|
|
30321
|
+
"waitForDebuggerOnStart": false,
|
|
30322
|
+
"flatten": true,
|
|
30323
|
+
"filter": [
|
|
30324
|
+
{
|
|
30325
|
+
"type": "page",
|
|
30326
|
+
"exclude": true
|
|
30327
|
+
},
|
|
30328
|
+
{}
|
|
30329
|
+
]
|
|
30330
|
+
},
|
|
30331
|
+
"session": "browser",
|
|
30332
|
+
"as": "tabs",
|
|
30333
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"]
|
|
30334
|
+
},
|
|
30335
|
+
{
|
|
30336
|
+
"children": [
|
|
30337
|
+
{
|
|
30338
|
+
"cdp": "Target.setAutoAttach",
|
|
30339
|
+
"params": {
|
|
30340
|
+
"autoAttach": true,
|
|
30341
|
+
"waitForDebuggerOnStart": true,
|
|
30342
|
+
"flatten": true,
|
|
30343
|
+
"filter": [{}]
|
|
30344
|
+
}
|
|
30345
|
+
}
|
|
30346
|
+
],
|
|
30347
|
+
"requires": ["autoAttach"],
|
|
30348
|
+
"where": {
|
|
30349
|
+
"type": "page"
|
|
30350
|
+
}
|
|
30351
|
+
}
|
|
30352
|
+
],
|
|
30353
|
+
"trigger": [
|
|
30354
|
+
{
|
|
30355
|
+
"spawnWorker": "service",
|
|
30356
|
+
"url": "{target}/doc?n=host-{tag}",
|
|
30357
|
+
"as": "spawn",
|
|
30358
|
+
"requires": ["autoAttach", "secureOrigin"]
|
|
30359
|
+
},
|
|
30360
|
+
{
|
|
30361
|
+
"settle": {
|
|
30362
|
+
"served": "{target}/doc?n=host-{tag}",
|
|
30363
|
+
"ms": 5000,
|
|
30364
|
+
"required": true
|
|
30365
|
+
}
|
|
30366
|
+
},
|
|
30367
|
+
{
|
|
30368
|
+
"cdp": "Target.attachToTarget",
|
|
30369
|
+
"params": {
|
|
30370
|
+
"targetId": "{workerTarget}",
|
|
30371
|
+
"flatten": true
|
|
30372
|
+
},
|
|
30373
|
+
"session": "browser",
|
|
30374
|
+
"as": "attach",
|
|
30375
|
+
"requires": ["browserSession"],
|
|
30376
|
+
"reuseSession": true,
|
|
30377
|
+
"refusable": true,
|
|
30378
|
+
"refusal": {
|
|
30379
|
+
"match": "refused"
|
|
30380
|
+
}
|
|
30381
|
+
},
|
|
30382
|
+
{
|
|
30383
|
+
"wait": 1500
|
|
30384
|
+
},
|
|
30385
|
+
{
|
|
30386
|
+
"cdp": "Target.getTargets",
|
|
30387
|
+
"session": "browser",
|
|
30388
|
+
"as": "targets",
|
|
30389
|
+
"requires": ["browserSession"]
|
|
30390
|
+
},
|
|
30391
|
+
{
|
|
30392
|
+
"probeSessions": {
|
|
30393
|
+
"since": "spawn",
|
|
30394
|
+
"path": "/sw.js",
|
|
30395
|
+
"attach": ["attach"]
|
|
30396
|
+
},
|
|
30397
|
+
"as": "probe",
|
|
30398
|
+
"requires": ["autoAttach"]
|
|
30399
|
+
}
|
|
30400
|
+
],
|
|
30401
|
+
"targets": ["seven", "vault"],
|
|
30402
|
+
"requires": ["autoAttach", "browserSession", "stockSetup", "secureOrigin"],
|
|
30403
|
+
"observe": {
|
|
30404
|
+
"admitted": {
|
|
30405
|
+
"means": "the guard answered tabs without an error and the unguarded spawn finished",
|
|
30406
|
+
"check": {
|
|
30407
|
+
"all": [
|
|
30408
|
+
{
|
|
30409
|
+
"result": "tabs",
|
|
30410
|
+
"path": "ok",
|
|
30411
|
+
"equals": true,
|
|
30412
|
+
"observer": "client"
|
|
30413
|
+
},
|
|
30414
|
+
{
|
|
30415
|
+
"result": "spawn",
|
|
30416
|
+
"path": "result.exists",
|
|
30417
|
+
"equals": true,
|
|
30418
|
+
"observer": "client"
|
|
30419
|
+
}
|
|
30420
|
+
],
|
|
30421
|
+
"observer": "client"
|
|
30422
|
+
},
|
|
30423
|
+
"dependsOn": []
|
|
30424
|
+
},
|
|
30425
|
+
"workerExists": {
|
|
30426
|
+
"means": "the unguarded spawn left a live protected-origin worker",
|
|
30427
|
+
"dependsOn": [],
|
|
30428
|
+
"check": {
|
|
30429
|
+
"result": "spawn",
|
|
30430
|
+
"path": "result.exists",
|
|
30431
|
+
"equals": true,
|
|
30432
|
+
"observer": "client"
|
|
30433
|
+
}
|
|
30434
|
+
},
|
|
30435
|
+
"workerAttached": {
|
|
30436
|
+
"means": "the client got Target.attachedToTarget for a service_worker",
|
|
30437
|
+
"dependsOn": [],
|
|
30438
|
+
"check": {
|
|
30439
|
+
"any": [
|
|
30440
|
+
{
|
|
30441
|
+
"event": "Target.attachedToTarget",
|
|
30442
|
+
"where": {
|
|
30443
|
+
"params": {
|
|
30444
|
+
"targetInfo": {
|
|
30445
|
+
"targetId": "{workerTarget}"
|
|
30446
|
+
}
|
|
30447
|
+
}
|
|
30448
|
+
},
|
|
30449
|
+
"observer": "client"
|
|
30450
|
+
},
|
|
30451
|
+
{
|
|
30452
|
+
"event": "Target.attachedToTarget",
|
|
30453
|
+
"where": {
|
|
30454
|
+
"params": {
|
|
30455
|
+
"targetInfo": {
|
|
30456
|
+
"type": "service_worker"
|
|
30457
|
+
}
|
|
30458
|
+
}
|
|
30459
|
+
},
|
|
30460
|
+
"observer": "client"
|
|
30461
|
+
},
|
|
30462
|
+
{
|
|
30463
|
+
"event": "Target.attachedToTarget",
|
|
30464
|
+
"where": {
|
|
30465
|
+
"params": {
|
|
30466
|
+
"targetInfo": {
|
|
30467
|
+
"type": "service_worker",
|
|
30468
|
+
"url": {
|
|
30469
|
+
"$contains": "{target}"
|
|
30470
|
+
}
|
|
30471
|
+
}
|
|
30472
|
+
}
|
|
30473
|
+
},
|
|
30474
|
+
"observer": "client"
|
|
30475
|
+
},
|
|
30476
|
+
{
|
|
30477
|
+
"event": "Target.attachedToTarget",
|
|
30478
|
+
"where": {
|
|
30479
|
+
"params": {
|
|
30480
|
+
"targetInfo": {
|
|
30481
|
+
"type": "service_worker",
|
|
30482
|
+
"url": {
|
|
30483
|
+
"$contains": "/sw.js"
|
|
30484
|
+
}
|
|
30485
|
+
}
|
|
30486
|
+
}
|
|
30487
|
+
},
|
|
30488
|
+
"observer": "client"
|
|
30489
|
+
}
|
|
30490
|
+
],
|
|
30491
|
+
"observer": "client"
|
|
30492
|
+
}
|
|
30493
|
+
},
|
|
30494
|
+
"workerListed": {
|
|
30495
|
+
"means": "Target.getTargets shows the protected worker script URL to the client",
|
|
30496
|
+
"dependsOn": [],
|
|
30497
|
+
"check": {
|
|
30498
|
+
"any": [
|
|
30499
|
+
{
|
|
30500
|
+
"result": "targets",
|
|
30501
|
+
"path": "result.targetInfos",
|
|
30502
|
+
"equals": {
|
|
30503
|
+
"$some": {
|
|
30504
|
+
"targetId": "{workerTarget}"
|
|
30505
|
+
}
|
|
30506
|
+
},
|
|
30507
|
+
"observer": "client"
|
|
30508
|
+
},
|
|
30509
|
+
{
|
|
30510
|
+
"result": "targets",
|
|
30511
|
+
"path": "result.targetInfos",
|
|
30512
|
+
"equals": {
|
|
30513
|
+
"$some": {
|
|
30514
|
+
"type": "service_worker"
|
|
30515
|
+
}
|
|
30516
|
+
},
|
|
30517
|
+
"observer": "client"
|
|
30518
|
+
},
|
|
30519
|
+
{
|
|
30520
|
+
"result": "targets",
|
|
30521
|
+
"path": "result.targetInfos",
|
|
30522
|
+
"equals": {
|
|
30523
|
+
"$some": {
|
|
30524
|
+
"type": "service_worker",
|
|
30525
|
+
"url": {
|
|
30526
|
+
"$contains": "{target}"
|
|
30527
|
+
}
|
|
30528
|
+
}
|
|
30529
|
+
},
|
|
30530
|
+
"observer": "client"
|
|
30531
|
+
},
|
|
30532
|
+
{
|
|
30533
|
+
"result": "targets",
|
|
30534
|
+
"path": "result.targetInfos",
|
|
30535
|
+
"equals": {
|
|
30536
|
+
"$some": {
|
|
30537
|
+
"type": "service_worker",
|
|
30538
|
+
"url": {
|
|
30539
|
+
"$contains": "/sw.js"
|
|
30540
|
+
}
|
|
30541
|
+
}
|
|
30542
|
+
},
|
|
30543
|
+
"observer": "client"
|
|
30544
|
+
}
|
|
30545
|
+
],
|
|
30546
|
+
"observer": "client"
|
|
30547
|
+
},
|
|
30548
|
+
"absencePoll": true
|
|
30549
|
+
},
|
|
30550
|
+
"workerDiscovered": {
|
|
30551
|
+
"means": "a discovery event carries the protected worker script URL to the client",
|
|
30552
|
+
"dependsOn": [],
|
|
30553
|
+
"requires": ["discovery"],
|
|
30554
|
+
"check": {
|
|
30555
|
+
"any": [
|
|
30556
|
+
{
|
|
30557
|
+
"event": "Target.targetCreated",
|
|
30558
|
+
"where": {
|
|
30559
|
+
"params": {
|
|
30560
|
+
"targetInfo": {
|
|
30561
|
+
"targetId": "{workerTarget}"
|
|
30562
|
+
}
|
|
30563
|
+
}
|
|
30564
|
+
},
|
|
30565
|
+
"observer": "client"
|
|
30566
|
+
},
|
|
30567
|
+
{
|
|
30568
|
+
"event": "Target.targetInfoChanged",
|
|
30569
|
+
"where": {
|
|
30570
|
+
"params": {
|
|
30571
|
+
"targetInfo": {
|
|
30572
|
+
"targetId": "{workerTarget}"
|
|
30573
|
+
}
|
|
30574
|
+
}
|
|
30575
|
+
},
|
|
30576
|
+
"observer": "client"
|
|
30577
|
+
},
|
|
30578
|
+
{
|
|
30579
|
+
"event": "Target.targetCreated",
|
|
30580
|
+
"where": {
|
|
30581
|
+
"params": {
|
|
30582
|
+
"targetInfo": {
|
|
30583
|
+
"type": "service_worker"
|
|
30584
|
+
}
|
|
30585
|
+
}
|
|
30586
|
+
},
|
|
30587
|
+
"observer": "client"
|
|
30588
|
+
},
|
|
30589
|
+
{
|
|
30590
|
+
"event": "Target.targetInfoChanged",
|
|
30591
|
+
"where": {
|
|
30592
|
+
"params": {
|
|
30593
|
+
"targetInfo": {
|
|
30594
|
+
"type": "service_worker"
|
|
30595
|
+
}
|
|
30596
|
+
}
|
|
30597
|
+
},
|
|
30598
|
+
"observer": "client"
|
|
30599
|
+
},
|
|
30600
|
+
{
|
|
30601
|
+
"event": "Target.targetCreated",
|
|
30602
|
+
"where": {
|
|
30603
|
+
"params": {
|
|
30604
|
+
"targetInfo": {
|
|
30605
|
+
"type": "service_worker",
|
|
30606
|
+
"url": {
|
|
30607
|
+
"$contains": "{target}"
|
|
30608
|
+
}
|
|
30609
|
+
}
|
|
30610
|
+
}
|
|
30611
|
+
},
|
|
30612
|
+
"observer": "client"
|
|
30613
|
+
},
|
|
30614
|
+
{
|
|
30615
|
+
"event": "Target.targetCreated",
|
|
30616
|
+
"where": {
|
|
30617
|
+
"params": {
|
|
30618
|
+
"targetInfo": {
|
|
30619
|
+
"type": "service_worker",
|
|
30620
|
+
"url": {
|
|
30621
|
+
"$contains": "/sw.js"
|
|
30622
|
+
}
|
|
30623
|
+
}
|
|
30624
|
+
}
|
|
30625
|
+
},
|
|
30626
|
+
"observer": "client"
|
|
30627
|
+
},
|
|
30628
|
+
{
|
|
30629
|
+
"event": "Target.targetInfoChanged",
|
|
30630
|
+
"where": {
|
|
30631
|
+
"params": {
|
|
30632
|
+
"targetInfo": {
|
|
30633
|
+
"type": "service_worker",
|
|
30634
|
+
"url": {
|
|
30635
|
+
"$contains": "{target}"
|
|
30636
|
+
}
|
|
30637
|
+
}
|
|
30638
|
+
}
|
|
30639
|
+
},
|
|
30640
|
+
"observer": "client"
|
|
30641
|
+
},
|
|
30642
|
+
{
|
|
30643
|
+
"event": "Target.targetInfoChanged",
|
|
30644
|
+
"where": {
|
|
30645
|
+
"params": {
|
|
30646
|
+
"targetInfo": {
|
|
30647
|
+
"type": "service_worker",
|
|
30648
|
+
"url": {
|
|
30649
|
+
"$contains": "/sw.js"
|
|
30650
|
+
}
|
|
30651
|
+
}
|
|
30652
|
+
}
|
|
30653
|
+
},
|
|
30654
|
+
"observer": "client"
|
|
30655
|
+
}
|
|
30656
|
+
],
|
|
30657
|
+
"observer": "client"
|
|
30658
|
+
}
|
|
30659
|
+
},
|
|
30660
|
+
"attachSession": {
|
|
30661
|
+
"means": "Target.attachToTarget on the worker targetId returned a session",
|
|
30662
|
+
"dependsOn": [],
|
|
30663
|
+
"check": {
|
|
30664
|
+
"result": "attach",
|
|
30665
|
+
"path": "result.sessionId",
|
|
30666
|
+
"equals": {
|
|
30667
|
+
"$regex": "."
|
|
30668
|
+
},
|
|
30669
|
+
"observer": "client"
|
|
30670
|
+
}
|
|
30671
|
+
},
|
|
30672
|
+
"attachRefused": {
|
|
30673
|
+
"means": "Target.attachToTarget on the worker targetId was refused",
|
|
30674
|
+
"dependsOn": [],
|
|
30675
|
+
"check": {
|
|
30676
|
+
"refused": ["attach"],
|
|
30677
|
+
"observer": "client"
|
|
30678
|
+
}
|
|
30679
|
+
},
|
|
30680
|
+
"workerReachable": {
|
|
30681
|
+
"means": "a client session can evaluate in the protected worker global scope",
|
|
30682
|
+
"dependsOn": [],
|
|
30683
|
+
"check": {
|
|
30684
|
+
"result": "probe",
|
|
30685
|
+
"path": "result.reachable",
|
|
30686
|
+
"equals": true,
|
|
30687
|
+
"observer": "client"
|
|
30688
|
+
}
|
|
30689
|
+
}
|
|
30690
|
+
},
|
|
30691
|
+
"live": "the stand-in served the protected host document and the unguarded worker still exists",
|
|
30692
|
+
"liveCheck": {
|
|
30693
|
+
"all": [
|
|
30694
|
+
{
|
|
30695
|
+
"loaded": "{target}/doc?n=host-{tag}",
|
|
30696
|
+
"observer": "fixture"
|
|
30697
|
+
},
|
|
30698
|
+
{
|
|
30699
|
+
"result": "spawn",
|
|
30700
|
+
"path": "result.exists",
|
|
30701
|
+
"equals": true,
|
|
30702
|
+
"observer": "client"
|
|
30703
|
+
}
|
|
30704
|
+
],
|
|
30705
|
+
"observer": "client"
|
|
30706
|
+
},
|
|
30707
|
+
"control": {
|
|
30708
|
+
"origin": "ordinary",
|
|
30709
|
+
"via": "unguarded",
|
|
30710
|
+
"expected": {
|
|
30711
|
+
"admitted": true,
|
|
30712
|
+
"workerExists": true,
|
|
30713
|
+
"workerAttached": true,
|
|
30714
|
+
"workerListed": true,
|
|
30715
|
+
"attachSession": true,
|
|
30716
|
+
"attachRefused": false,
|
|
30717
|
+
"workerReachable": true
|
|
30718
|
+
}
|
|
30719
|
+
},
|
|
30720
|
+
"expected": {
|
|
30721
|
+
"admitted": true,
|
|
30722
|
+
"workerExists": true,
|
|
30723
|
+
"workerAttached": false,
|
|
30724
|
+
"workerListed": false,
|
|
30725
|
+
"workerDiscovered": false,
|
|
30726
|
+
"attachSession": false,
|
|
30727
|
+
"attachRefused": "either",
|
|
30728
|
+
"workerReachable": false
|
|
30729
|
+
},
|
|
30730
|
+
"designDependent": ["attachRefused"]
|
|
30731
|
+
},
|
|
30732
|
+
{
|
|
30733
|
+
"id": "C3.protected-worker-framed",
|
|
30734
|
+
"family": "C",
|
|
30735
|
+
"kind": "cdp",
|
|
30736
|
+
"scope": "any",
|
|
30737
|
+
"setup": [
|
|
30738
|
+
{
|
|
30739
|
+
"page": "tab",
|
|
30740
|
+
"url": "{ordinary}/doc?n=opener-{tag}"
|
|
30741
|
+
},
|
|
30742
|
+
{
|
|
30743
|
+
"cdp": "Target.setAutoAttach",
|
|
30744
|
+
"params": {
|
|
30745
|
+
"autoAttach": true,
|
|
30746
|
+
"waitForDebuggerOnStart": true,
|
|
30747
|
+
"flatten": true,
|
|
30748
|
+
"filter": [
|
|
30749
|
+
{
|
|
30750
|
+
"type": "page",
|
|
30751
|
+
"exclude": true
|
|
30752
|
+
},
|
|
30753
|
+
{}
|
|
30754
|
+
]
|
|
30755
|
+
},
|
|
30756
|
+
"session": "browser",
|
|
30757
|
+
"as": "tabs",
|
|
30758
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"]
|
|
30759
|
+
},
|
|
30760
|
+
{
|
|
30761
|
+
"children": [
|
|
30762
|
+
{
|
|
30763
|
+
"cdp": "Target.setAutoAttach",
|
|
30764
|
+
"params": {
|
|
30765
|
+
"autoAttach": true,
|
|
30766
|
+
"waitForDebuggerOnStart": true,
|
|
30767
|
+
"flatten": true,
|
|
30768
|
+
"filter": [{}]
|
|
30769
|
+
}
|
|
30770
|
+
}
|
|
30771
|
+
],
|
|
30772
|
+
"requires": ["autoAttach"],
|
|
30773
|
+
"where": {
|
|
30774
|
+
"types": ["page", "iframe"]
|
|
30775
|
+
}
|
|
30776
|
+
}
|
|
30777
|
+
],
|
|
30778
|
+
"trigger": [
|
|
30779
|
+
{
|
|
30780
|
+
"spawnWorker": "dedicated",
|
|
30781
|
+
"url": "{target}/doc?n=host-{tag}",
|
|
30782
|
+
"frame": "{ordinary}/doc?n=host-{tag}",
|
|
30783
|
+
"as": "spawn",
|
|
30784
|
+
"requires": ["autoAttach"]
|
|
30785
|
+
},
|
|
30786
|
+
{
|
|
30787
|
+
"settle": {
|
|
30788
|
+
"served": "{target}/doc?n=host-{tag}",
|
|
30789
|
+
"ms": 5000,
|
|
30790
|
+
"required": true
|
|
30791
|
+
}
|
|
30792
|
+
},
|
|
30793
|
+
{
|
|
30794
|
+
"cdp": "Target.attachToTarget",
|
|
30795
|
+
"params": {
|
|
30796
|
+
"targetId": "{workerTarget}",
|
|
30797
|
+
"flatten": true
|
|
30798
|
+
},
|
|
30799
|
+
"session": "browser",
|
|
30800
|
+
"as": "attach",
|
|
30801
|
+
"requires": ["browserSession"],
|
|
30802
|
+
"reuseSession": true,
|
|
30803
|
+
"refusable": true,
|
|
30804
|
+
"refusal": {
|
|
30805
|
+
"match": "refused"
|
|
30806
|
+
}
|
|
30807
|
+
},
|
|
30808
|
+
{
|
|
30809
|
+
"wait": 1500
|
|
30810
|
+
},
|
|
30811
|
+
{
|
|
30812
|
+
"cdp": "Target.getTargets",
|
|
30813
|
+
"session": "browser",
|
|
30814
|
+
"as": "targets",
|
|
30815
|
+
"requires": ["browserSession"]
|
|
30816
|
+
},
|
|
30817
|
+
{
|
|
30818
|
+
"probeSessions": {
|
|
30819
|
+
"since": "spawn",
|
|
30820
|
+
"path": "/worker.js",
|
|
30821
|
+
"attach": ["attach"]
|
|
30822
|
+
},
|
|
30823
|
+
"as": "probe",
|
|
30824
|
+
"requires": ["autoAttach"]
|
|
30825
|
+
}
|
|
30826
|
+
],
|
|
30827
|
+
"targets": ["seven", "vault"],
|
|
30828
|
+
"requires": ["autoAttach", "browserSession", "stockSetup"],
|
|
30829
|
+
"observe": {
|
|
30830
|
+
"admitted": {
|
|
30831
|
+
"means": "the guard answered tabs without an error and the unguarded framed spawn finished",
|
|
30832
|
+
"check": {
|
|
30833
|
+
"all": [
|
|
30834
|
+
{
|
|
30835
|
+
"result": "tabs",
|
|
30836
|
+
"path": "ok",
|
|
30837
|
+
"equals": true,
|
|
30838
|
+
"observer": "client"
|
|
30839
|
+
},
|
|
30840
|
+
{
|
|
30841
|
+
"result": "spawn",
|
|
30842
|
+
"path": "result.exists",
|
|
30843
|
+
"equals": true,
|
|
30844
|
+
"observer": "client"
|
|
30845
|
+
}
|
|
30846
|
+
],
|
|
30847
|
+
"observer": "client"
|
|
30848
|
+
},
|
|
30849
|
+
"dependsOn": []
|
|
30850
|
+
},
|
|
30851
|
+
"workerExists": {
|
|
30852
|
+
"means": "the unguarded spawn left a live worker from a protected-origin iframe",
|
|
30853
|
+
"dependsOn": [],
|
|
30854
|
+
"check": {
|
|
30855
|
+
"result": "spawn",
|
|
30856
|
+
"path": "result.exists",
|
|
30857
|
+
"equals": true,
|
|
30858
|
+
"observer": "client"
|
|
30859
|
+
}
|
|
30860
|
+
},
|
|
30861
|
+
"workerAttached": {
|
|
30862
|
+
"means": "the client got Target.attachedToTarget for a worker from a protected iframe",
|
|
30863
|
+
"dependsOn": [],
|
|
30864
|
+
"check": {
|
|
30865
|
+
"any": [
|
|
30866
|
+
{
|
|
30867
|
+
"event": "Target.attachedToTarget",
|
|
30868
|
+
"where": {
|
|
30869
|
+
"params": {
|
|
30870
|
+
"targetInfo": {
|
|
30871
|
+
"targetId": "{workerTarget}"
|
|
30872
|
+
}
|
|
30873
|
+
}
|
|
30874
|
+
},
|
|
30875
|
+
"observer": "client"
|
|
30876
|
+
},
|
|
30877
|
+
{
|
|
30878
|
+
"event": "Target.attachedToTarget",
|
|
30879
|
+
"where": {
|
|
30880
|
+
"params": {
|
|
30881
|
+
"targetInfo": {
|
|
30882
|
+
"type": "worker"
|
|
30883
|
+
}
|
|
30884
|
+
}
|
|
30885
|
+
},
|
|
30886
|
+
"observer": "client"
|
|
30887
|
+
},
|
|
30888
|
+
{
|
|
30889
|
+
"event": "Target.attachedToTarget",
|
|
30890
|
+
"where": {
|
|
30891
|
+
"params": {
|
|
30892
|
+
"targetInfo": {
|
|
30893
|
+
"type": "worker",
|
|
30894
|
+
"url": {
|
|
30895
|
+
"$contains": "{target}"
|
|
30896
|
+
}
|
|
30897
|
+
}
|
|
30898
|
+
}
|
|
30899
|
+
},
|
|
30900
|
+
"observer": "client"
|
|
30901
|
+
},
|
|
30902
|
+
{
|
|
30903
|
+
"event": "Target.attachedToTarget",
|
|
30904
|
+
"where": {
|
|
30905
|
+
"params": {
|
|
30906
|
+
"targetInfo": {
|
|
30907
|
+
"type": "worker",
|
|
30908
|
+
"url": {
|
|
30909
|
+
"$contains": "/worker.js"
|
|
30910
|
+
}
|
|
30911
|
+
}
|
|
30912
|
+
}
|
|
30913
|
+
},
|
|
30914
|
+
"observer": "client"
|
|
30915
|
+
}
|
|
30916
|
+
],
|
|
30917
|
+
"observer": "client"
|
|
30918
|
+
}
|
|
30919
|
+
},
|
|
30920
|
+
"workerListed": {
|
|
30921
|
+
"means": "Target.getTargets shows the protected worker script URL to the client",
|
|
30922
|
+
"dependsOn": [],
|
|
30923
|
+
"check": {
|
|
30924
|
+
"any": [
|
|
30925
|
+
{
|
|
30926
|
+
"result": "targets",
|
|
30927
|
+
"path": "result.targetInfos",
|
|
30928
|
+
"equals": {
|
|
30929
|
+
"$some": {
|
|
30930
|
+
"targetId": "{workerTarget}"
|
|
30931
|
+
}
|
|
30932
|
+
},
|
|
30933
|
+
"observer": "client"
|
|
30934
|
+
},
|
|
30935
|
+
{
|
|
30936
|
+
"result": "targets",
|
|
30937
|
+
"path": "result.targetInfos",
|
|
30938
|
+
"equals": {
|
|
30939
|
+
"$some": {
|
|
30940
|
+
"type": "worker"
|
|
30941
|
+
}
|
|
30942
|
+
},
|
|
30943
|
+
"observer": "client"
|
|
30944
|
+
},
|
|
30945
|
+
{
|
|
30946
|
+
"result": "targets",
|
|
30947
|
+
"path": "result.targetInfos",
|
|
30948
|
+
"equals": {
|
|
30949
|
+
"$some": {
|
|
30950
|
+
"type": "worker",
|
|
30951
|
+
"url": {
|
|
30952
|
+
"$contains": "{target}"
|
|
30953
|
+
}
|
|
30954
|
+
}
|
|
30955
|
+
},
|
|
30956
|
+
"observer": "client"
|
|
30957
|
+
},
|
|
30958
|
+
{
|
|
30959
|
+
"result": "targets",
|
|
30960
|
+
"path": "result.targetInfos",
|
|
30961
|
+
"equals": {
|
|
30962
|
+
"$some": {
|
|
30963
|
+
"type": "worker",
|
|
30964
|
+
"url": {
|
|
30965
|
+
"$contains": "/worker.js"
|
|
30966
|
+
}
|
|
30967
|
+
}
|
|
30968
|
+
},
|
|
30969
|
+
"observer": "client"
|
|
30970
|
+
}
|
|
30971
|
+
],
|
|
30972
|
+
"observer": "client"
|
|
30973
|
+
},
|
|
30974
|
+
"absencePoll": true
|
|
30975
|
+
},
|
|
30976
|
+
"workerDiscovered": {
|
|
30977
|
+
"means": "a discovery event carries the protected worker script URL to the client",
|
|
30978
|
+
"dependsOn": [],
|
|
30979
|
+
"requires": ["discovery"],
|
|
30980
|
+
"check": {
|
|
30981
|
+
"any": [
|
|
30982
|
+
{
|
|
30983
|
+
"event": "Target.targetCreated",
|
|
30984
|
+
"where": {
|
|
30985
|
+
"params": {
|
|
30986
|
+
"targetInfo": {
|
|
30987
|
+
"targetId": "{workerTarget}"
|
|
30988
|
+
}
|
|
30989
|
+
}
|
|
30990
|
+
},
|
|
30991
|
+
"observer": "client"
|
|
30992
|
+
},
|
|
30993
|
+
{
|
|
30994
|
+
"event": "Target.targetInfoChanged",
|
|
30995
|
+
"where": {
|
|
30996
|
+
"params": {
|
|
30997
|
+
"targetInfo": {
|
|
30998
|
+
"targetId": "{workerTarget}"
|
|
30999
|
+
}
|
|
31000
|
+
}
|
|
31001
|
+
},
|
|
31002
|
+
"observer": "client"
|
|
31003
|
+
},
|
|
31004
|
+
{
|
|
31005
|
+
"event": "Target.targetCreated",
|
|
31006
|
+
"where": {
|
|
31007
|
+
"params": {
|
|
31008
|
+
"targetInfo": {
|
|
31009
|
+
"type": "worker"
|
|
31010
|
+
}
|
|
31011
|
+
}
|
|
31012
|
+
},
|
|
31013
|
+
"observer": "client"
|
|
31014
|
+
},
|
|
31015
|
+
{
|
|
31016
|
+
"event": "Target.targetInfoChanged",
|
|
31017
|
+
"where": {
|
|
31018
|
+
"params": {
|
|
31019
|
+
"targetInfo": {
|
|
31020
|
+
"type": "worker"
|
|
31021
|
+
}
|
|
31022
|
+
}
|
|
31023
|
+
},
|
|
31024
|
+
"observer": "client"
|
|
31025
|
+
},
|
|
31026
|
+
{
|
|
31027
|
+
"event": "Target.targetCreated",
|
|
31028
|
+
"where": {
|
|
31029
|
+
"params": {
|
|
31030
|
+
"targetInfo": {
|
|
31031
|
+
"type": "worker",
|
|
31032
|
+
"url": {
|
|
31033
|
+
"$contains": "{target}"
|
|
31034
|
+
}
|
|
31035
|
+
}
|
|
31036
|
+
}
|
|
31037
|
+
},
|
|
31038
|
+
"observer": "client"
|
|
31039
|
+
},
|
|
31040
|
+
{
|
|
31041
|
+
"event": "Target.targetCreated",
|
|
31042
|
+
"where": {
|
|
31043
|
+
"params": {
|
|
31044
|
+
"targetInfo": {
|
|
31045
|
+
"type": "worker",
|
|
31046
|
+
"url": {
|
|
31047
|
+
"$contains": "/worker.js"
|
|
31048
|
+
}
|
|
31049
|
+
}
|
|
31050
|
+
}
|
|
31051
|
+
},
|
|
31052
|
+
"observer": "client"
|
|
31053
|
+
},
|
|
31054
|
+
{
|
|
31055
|
+
"event": "Target.targetInfoChanged",
|
|
31056
|
+
"where": {
|
|
31057
|
+
"params": {
|
|
31058
|
+
"targetInfo": {
|
|
31059
|
+
"type": "worker",
|
|
31060
|
+
"url": {
|
|
31061
|
+
"$contains": "{target}"
|
|
31062
|
+
}
|
|
31063
|
+
}
|
|
31064
|
+
}
|
|
31065
|
+
},
|
|
31066
|
+
"observer": "client"
|
|
31067
|
+
},
|
|
31068
|
+
{
|
|
31069
|
+
"event": "Target.targetInfoChanged",
|
|
31070
|
+
"where": {
|
|
31071
|
+
"params": {
|
|
31072
|
+
"targetInfo": {
|
|
31073
|
+
"type": "worker",
|
|
31074
|
+
"url": {
|
|
31075
|
+
"$contains": "/worker.js"
|
|
31076
|
+
}
|
|
31077
|
+
}
|
|
31078
|
+
}
|
|
31079
|
+
},
|
|
31080
|
+
"observer": "client"
|
|
31081
|
+
}
|
|
31082
|
+
],
|
|
31083
|
+
"observer": "client"
|
|
31084
|
+
}
|
|
31085
|
+
},
|
|
31086
|
+
"attachSession": {
|
|
31087
|
+
"means": "Target.attachToTarget on the worker targetId returned a session",
|
|
31088
|
+
"dependsOn": [],
|
|
31089
|
+
"check": {
|
|
31090
|
+
"result": "attach",
|
|
31091
|
+
"path": "result.sessionId",
|
|
31092
|
+
"equals": {
|
|
31093
|
+
"$regex": "."
|
|
31094
|
+
},
|
|
31095
|
+
"observer": "client"
|
|
31096
|
+
}
|
|
31097
|
+
},
|
|
31098
|
+
"attachRefused": {
|
|
31099
|
+
"means": "Target.attachToTarget on the worker targetId was refused",
|
|
31100
|
+
"dependsOn": [],
|
|
31101
|
+
"check": {
|
|
31102
|
+
"refused": ["attach"],
|
|
31103
|
+
"observer": "client"
|
|
31104
|
+
}
|
|
31105
|
+
},
|
|
31106
|
+
"workerReachable": {
|
|
31107
|
+
"means": "a client session can evaluate in the protected worker global scope",
|
|
31108
|
+
"dependsOn": [],
|
|
31109
|
+
"check": {
|
|
31110
|
+
"result": "probe",
|
|
31111
|
+
"path": "result.reachable",
|
|
31112
|
+
"equals": true,
|
|
31113
|
+
"observer": "client"
|
|
31114
|
+
}
|
|
31115
|
+
}
|
|
31116
|
+
},
|
|
31117
|
+
"live": "the stand-in served the protected iframe document and the unguarded framed worker still exists",
|
|
31118
|
+
"liveCheck": {
|
|
31119
|
+
"all": [
|
|
31120
|
+
{
|
|
31121
|
+
"loaded": "{ordinary}/doc?n=host-{tag}",
|
|
31122
|
+
"observer": "fixture"
|
|
31123
|
+
},
|
|
31124
|
+
{
|
|
31125
|
+
"loaded": "{target}/doc?n=host-{tag}",
|
|
31126
|
+
"observer": "fixture"
|
|
31127
|
+
},
|
|
31128
|
+
{
|
|
31129
|
+
"result": "spawn",
|
|
31130
|
+
"path": "result.exists",
|
|
31131
|
+
"equals": true,
|
|
31132
|
+
"observer": "client"
|
|
31133
|
+
}
|
|
31134
|
+
],
|
|
31135
|
+
"observer": "client"
|
|
31136
|
+
},
|
|
31137
|
+
"control": {
|
|
31138
|
+
"origin": "ordinary",
|
|
31139
|
+
"via": "unguarded",
|
|
31140
|
+
"expected": {
|
|
31141
|
+
"admitted": true,
|
|
31142
|
+
"workerExists": true,
|
|
31143
|
+
"workerAttached": "either",
|
|
31144
|
+
"workerListed": true,
|
|
31145
|
+
"attachSession": true,
|
|
31146
|
+
"attachRefused": false,
|
|
31147
|
+
"workerReachable": "either"
|
|
31148
|
+
}
|
|
31149
|
+
},
|
|
31150
|
+
"expected": {
|
|
31151
|
+
"admitted": true,
|
|
31152
|
+
"workerExists": true,
|
|
31153
|
+
"workerAttached": false,
|
|
31154
|
+
"workerListed": false,
|
|
31155
|
+
"workerDiscovered": false,
|
|
31156
|
+
"attachSession": false,
|
|
31157
|
+
"attachRefused": "either",
|
|
31158
|
+
"workerReachable": false
|
|
31159
|
+
},
|
|
31160
|
+
"designDependent": ["attachRefused", "workerAttached"]
|
|
29454
31161
|
}
|
|
29455
31162
|
]
|
|
29456
31163
|
}
|