OLD | NEW |
---|---|
(Empty) | |
1 <!DOCTYPE html> | |
2 <title>Shared Worker: UseCounter</title> | |
3 <script src="../../resources/testharness.js"></script> | |
4 <script src="../../resources/testharnessreport.js"></script> | |
5 <body> | |
6 </body> | |
7 <script> | |
8 | |
9 var FetchFeature = 675; // From UseCounter.h | |
10 | |
11 function isUseCounted(frame, feature) { | |
12 return frame.contentWindow.internals.isUseCounted( | |
13 frame.contentDocument, feature); | |
14 } | |
15 | |
16 function with_iframe(url) { | |
17 return new Promise(resolve => { | |
18 var frame = document.createElement('iframe'); | |
19 frame.src = url; | |
20 frame.onload = () => resolve(frame); | |
21 document.body.appendChild(frame); | |
22 }); | |
23 } | |
24 | |
25 promise_test(t => { | |
26 const kFrameUrl = 'resources/shared-worker-usecounter-frame.html'; | |
27 | |
28 var frame1; | |
29 var frame2; | |
30 var frame3; | |
31 var worker; | |
32 | |
33 return with_iframe(kFrameUrl) | |
34 .then(frame => { | |
35 frame1 = frame; | |
36 assert_false(isUseCounted(frame1, FetchFeature)); | |
37 return with_iframe(kFrameUrl); | |
38 }) | |
39 .then(frame => { | |
40 frame2 = frame; | |
41 assert_false(isUseCounted(frame2, FetchFeature)); | |
42 frame1.contentWindow.connectToWorker(); | |
43 frame2.contentWindow.connectToWorker(); | |
44 | |
45 worker = new SharedWorker('resources/shared-worker-usecounter.js'); | |
46 return new Promise(resolve => worker.port.onmessage = resolve); | |
47 }) | |
48 .then(e => { | |
49 assert_equals(e.data, 'connected'); | |
50 var promise = | |
51 new Promise(resolve => worker.port.onmessage = resolve); | |
52 worker.port.postMessage('request'); | |
53 return promise; | |
54 }) | |
55 .then(e => { | |
56 assert_equals(e.data, 'fetched'); | |
57 | |
58 // API use on the SharedWorkerGlobalScope is recorded in UseCounters on | |
59 // connected documents. | |
60 assert_true(isUseCounted(frame1, FetchFeature)); | |
61 assert_true(isUseCounted(frame2, FetchFeature)); | |
62 | |
63 return with_iframe(kFrameUrl); | |
64 }) | |
65 .then((frame) => { | |
66 frame3 = frame; | |
67 | |
68 // A new frame hasn't connected to the worker, so the API use should not | |
69 // be counted yet. | |
70 //assert_false(isUseCounted(frame3, FetchFeature)); | |
71 assert_true(isUseCounted(frame3, FetchFeature)); | |
nhiroki
2017/01/24 09:54:11
Question for rbyers@: Do iframes in a document sha
| |
72 | |
73 return frame3.contentWindow.connectToWorker(); | |
74 }) | |
75 .then(() => { | |
76 assert_true(isUseCounted(frame3, FetchFeature)); | |
77 }); | |
78 | |
79 }, 'UseCounter on SharedWorkerGlobalScope'); | |
80 | |
81 </script> | |
82 </html> | |
OLD | NEW |