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

Unified Diff: third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage-blob-url.html

Issue 2695093003: Add LayoutTests to test Blob URL transfer to {Shared,Service}Workers (Closed)
Patch Set: . Created 3 years, 10 months 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/http/tests/serviceworker/postmessage-blob-url.html
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage-blob-url.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage-blob-url.html
new file mode 100644
index 0000000000000000000000000000000000000000..9143353d53f3315459fa0ad1e7fb25c8a33eb313
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage-blob-url.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<title>Service Worker: postMessage Blob URL</title>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<script src="resources/test-helpers.js"></script>
+<script>
+
+promise_test(t => {
+ let script = 'resources/postmessage-blob-url.js';
+ let scope = 'resources/blank.html';
+ let registration;
+ let worker;
+ let port;
+ let blobText = 'Blob text';
+ let blob;
+ let blobUrl;
+
+ return service_worker_unregister_and_register(t, script, scope)
+ .then(r => {
+ add_completion_callback(() => r.unregister());
+ registration = r;
+ worker = registration.installing;
+
+ var messageChannel = new MessageChannel();
+ port = messageChannel.port1;
+ return new Promise(resolve => {
+ port.onmessage = resolve;
+ worker.postMessage({port: messageChannel.port2},
+ [messageChannel.port2]);
+ });
falken 2017/02/15 04:46:06 would it be simpler to just do worker.postMessage(
kinuko 2017/02/15 07:10:16 Done.
+ })
+ .then(e => {
+ assert_equals(e.data, 'Connected');
falken 2017/02/15 04:46:06 Do we need the "Connected" step? Can't we send blo
kinuko 2017/02/15 07:10:16 Well, I ended up removing this step.
+ blob = new Blob([blobText]);
+ blobUrl = URL.createObjectURL(blob);
+ port.postMessage(blobUrl);
+ return new Promise(resolve => { port.onmessage = resolve; });
+ })
+ .then(e => {
+ assert_equals(e.data, 'Worker reply:' + blobText);
+ URL.revokeObjectURL(blobUrl);
+ return registration.unregister(scope);
+ });
+ }, 'postMessage Blob URL to a ServiceWorker');
+
+</script>
+

Powered by Google App Engine
This is Rietveld 408576698