Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Unified Diff: third_party/WebKit/LayoutTests/imported/wpt/workers/support/sandboxed-tests.html

Issue 2572333003: Import wpt@4970d7334aaf8977c5b617075aa48be1b6e482c7 (Closed)
Patch Set: Update TestExpectations Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/imported/wpt/workers/support/sandboxed-tests.html
diff --git a/third_party/WebKit/LayoutTests/imported/wpt/workers/support/sandboxed-tests.html b/third_party/WebKit/LayoutTests/imported/wpt/workers/support/sandboxed-tests.html
new file mode 100644
index 0000000000000000000000000000000000000000..811c925f56f11934cf3cb9ec508b73d601525c27
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/wpt/workers/support/sandboxed-tests.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<script>
+const channel = new BroadcastChannel('echochannel');
+channel.onmessage = e => channel.postMessage(e.data);
+</script>
+<div id='workersrc' style='display:none'>
+importScripts("http://{{host}}:{{ports[http][0]}}/resources/testharness.js");
+onmessage = e => {
+ const external_blob = e.data.blob;
+ const external_blob_url = e.data.url;
+
+ test(t => {
+ assert_equals('null', self.location.origin);
+ }, 'Worker has an opaque origin.');
+
+ async_test(t => {
+ const r = new FileReader();
+ r.onloadend = t.step_func_done(e => assert_equals(r.result, 'from worker'));
+ r.readAsText(new Blob(['from worker']));
+ }, 'Worker can read its own blobs.');
+
+ async_test(t => {
+ const r = new FileReader();
+ r.onloadend = t.step_func_done(e => assert_equals(r.result, 'from page'));
+ r.readAsText(external_blob);
+ }, 'Worker can read its owners blobs.');
+
+ async_test(t => {
+ const request = new XMLHttpRequest();
+ request.open('GET', external_blob_url);
+ request.onreadystatechange = t.step_func(() => {
+ if (request.readyState == 4) {
+ assert_equals(request.responseText, 'from page');
+ t.done();
+ }
+ });
+ request.send();
+ }, 'Worker can XHR fetch a blob.');
+
+ promise_test(t =>
+ fetch(external_blob_url).then(r => r.text()).then(text => assert_equals(text, 'from page'))
+ , 'Worker can fetch a blob.');
+
+ async_test(t => {
+ const channel = new BroadcastChannel('echochannel');
+ channel.onmessage = t.step_func_done(e => assert_equals('ping', e.data));
+ channel.postMessage('ping');
+ }, 'Worker can access BroadcastChannel');
+ done();
+};
+</div>
+<script>
+// Create a worker with a blob URL to get a same opaque origin worker.
+const b = new Blob([document.getElementById('workersrc').textContent]);
+const url = URL.createObjectURL(b);
+const worker = new Worker(url);
+// Pass back any messages from the worker to our parent to collect test results.
+worker.onmessage = e => {
+ parent.postMessage(e.data, '*');
+};
+
+// Send test data to the worker.
+const b2 = new Blob(['from page']);
+const url2 = URL.createObjectURL(b2);
+worker.postMessage({url: url2, blob: b2});
+</script>

Powered by Google App Engine
This is Rietveld 408576698