Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/fast/workers/shared-worker-usecounter.html |
| diff --git a/third_party/WebKit/LayoutTests/fast/workers/shared-worker-usecounter.html b/third_party/WebKit/LayoutTests/fast/workers/shared-worker-usecounter.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..1cef4d3d570b59f9fb0a4a1b756822e0bbc72cac |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/fast/workers/shared-worker-usecounter.html |
| @@ -0,0 +1,82 @@ |
| +<!DOCTYPE html> |
| +<title>Shared Worker: UseCounter</title> |
| +<script src="../../resources/testharness.js"></script> |
| +<script src="../../resources/testharnessreport.js"></script> |
| +<body> |
| +</body> |
| +<script> |
| + |
| +var FetchFeature = 675; // From UseCounter.h |
| + |
| +function isUseCounted(frame, feature) { |
| + return frame.contentWindow.internals.isUseCounted( |
|
Rick Byers
2017/01/26 03:02:37
Note that this test is pretty limited - doesn't ve
nhiroki
2017/01/27 16:58:16
Thank you for the guide!
Using the command line f
|
| + frame.contentDocument, feature); |
| +} |
| + |
| +function with_iframe(url) { |
| + return new Promise(resolve => { |
| + var frame = document.createElement('iframe'); |
| + frame.src = url; |
| + frame.onload = () => resolve(frame); |
| + document.body.appendChild(frame); |
| + }); |
| +} |
| + |
| +promise_test(t => { |
| + const kFrameUrl = 'resources/shared-worker-usecounter-frame.html'; |
| + |
| + var frame1; |
| + var frame2; |
| + var frame3; |
| + var worker; |
| + |
| + return with_iframe(kFrameUrl) |
| + .then(frame => { |
| + frame1 = frame; |
| + assert_false(isUseCounted(frame1, FetchFeature)); |
| + return with_iframe(kFrameUrl); |
| + }) |
| + .then(frame => { |
| + frame2 = frame; |
| + assert_false(isUseCounted(frame2, FetchFeature)); |
| + frame1.contentWindow.connectToWorker(); |
| + frame2.contentWindow.connectToWorker(); |
| + |
| + worker = new SharedWorker('resources/shared-worker-usecounter.js'); |
| + return new Promise(resolve => worker.port.onmessage = resolve); |
| + }) |
| + .then(e => { |
| + assert_equals(e.data, 'connected'); |
| + var promise = |
| + new Promise(resolve => worker.port.onmessage = resolve); |
| + worker.port.postMessage('request'); |
| + return promise; |
| + }) |
| + .then(e => { |
| + assert_equals(e.data, 'fetched'); |
| + |
| + // API use on the SharedWorkerGlobalScope is recorded in UseCounters on |
| + // connected documents. |
| + assert_true(isUseCounted(frame1, FetchFeature)); |
| + assert_true(isUseCounted(frame2, FetchFeature)); |
| + |
| + return with_iframe(kFrameUrl); |
| + }) |
| + .then((frame) => { |
| + frame3 = frame; |
| + |
| + // A new frame hasn't connected to the worker, so the API use should not |
| + // be counted yet. |
| + //assert_false(isUseCounted(frame3, FetchFeature)); |
|
Rick Byers
2017/01/26 03:02:37
Instead of using frames (which share a UseCounter)
nhiroki
2017/01/27 16:58:16
Good idea. Done.
It looks like window.open() work
|
| + assert_true(isUseCounted(frame3, FetchFeature)); |
| + |
| + return frame3.contentWindow.connectToWorker(); |
| + }) |
| + .then(() => { |
| + assert_true(isUseCounted(frame3, FetchFeature)); |
| + }); |
| + |
| +}, 'UseCounter on SharedWorkerGlobalScope'); |
| + |
| +</script> |
| +</html> |