From 682e823777c08bf2798e729b73e2d777469d22cd Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Fri, 4 Oct 2019 18:25:04 +0000 Subject: [PATCH] Bug 1558184 [wpt PR 17246] - service worker: Drop postMessage() to redundant workers silently., a=testonly Automatic update from web-platform-tests service worker: Drop postMessage() to redundant workers silently. Update the WPT and fix behavior. Per spec change at https://github.com/w3c/ServiceWorker/issues/1146. Bug: 972461 Change-Id: Id4bac3fbe1996382952e54d46cb405de9eb951b3 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1650685 Reviewed-by: Hayato Ito Reviewed-by: Kenichi Ishibashi Commit-Queue: Matt Falkenhagen Cr-Commit-Position: refs/heads/master{#667523} -- wp5At-commits: 0ea1346335e30ab897ee5124aeeafcae663b5f49 wpt-pr: 17246 UltraBlame original commit: 5212e992eae1bd2c5c287946cd79bd489b9cba27 --- .../service-worker/postmessage.https.html | 337 ++++++++++++++---- .../resources/postmessage-echo-worker.js | 25 ++ 2 files changed, 283 insertions(+), 79 deletions(-) create mode 100644 testing/web-platform/tests/service-workers/service-worker/resources/postmessage-echo-worker.js diff --git a/testing/web-platform/tests/service-workers/service-worker/postmessage.https.html b/testing/web-platform/tests/service-workers/service-worker/postmessage.https.html index 1baccb11f1978..8538c82645d74 100644 --- a/testing/web-platform/tests/service-workers/service-worker/postmessage.https.html +++ b/testing/web-platform/tests/service-workers/service-worker/postmessage.https.html @@ -338,85 +338,6 @@ ; } ) -. -then -( -( -) -= -> -{ -return -wait_for_state -( -t -worker -' -redundant -' -) -; -} -) -. -then -( -( -) -= -> -{ -assert_equals -( -worker -. -state -' -redundant -' -) -; -assert_throws -( -{ -name -: -' -InvalidStateError -' -} -function -( -) -{ -worker -. -postMessage -( -' -' -) -; -} -' -Calling -postMessage -on -a -redundant -ServiceWorker -should -' -+ -' -throw -InvalidStateError -. -' -) -; -} -) ; } ' @@ -1510,6 +1431,264 @@ ' ) ; +promise_test +( +async +t += +> +{ +const +firstScript += +' +resources +/ +postmessage +- +echo +- +worker +. +js +? +one +' +; +const +secondScript += +' +resources +/ +postmessage +- +echo +- +worker +. +js +? +two +' +; +const +scope += +' +resources +/ +' +; +const +registration += +await +service_worker_unregister_and_register +( +t +firstScript +scope +) +; +t +. +add_cleanup +( +( +) += +> +registration +. +unregister +( +) +) +; +const +firstWorker += +registration +. +installing +; +const +messagePromise += +new +Promise +( +resolve += +> +{ +navigator +. +serviceWorker +. +addEventListener +( +' +message +' +( +event +) += +> +{ +resolve +( +event +. +data +) +; +} +{ +once +: +true +} +) +; +} +) +; +await +wait_for_state +( +t +firstWorker +' +activated +' +) +; +await +navigator +. +serviceWorker +. +register +( +secondScript +{ +scope +} +) +; +const +secondWorker += +registration +. +installing +; +await +wait_for_state +( +t +firstWorker +' +redundant +' +) +; +/ +/ +postMessage +( +) +to +a +redundant +worker +should +be +dropped +silently +. +/ +/ +Historically +this +threw +an +exception +. +firstWorker +. +postMessage +( +' +firstWorker +' +) +; +/ +/ +To +test +somewhat +that +it +was +not +received +send +a +message +to +another +/ +/ +worker +and +check +that +we +get +a +reply +for +that +one +. +secondWorker +. +postMessage +( +' +secondWorker +' +) +; +const +data += +await +messagePromise +; +assert_equals +( +data +' +secondWorker +' +) +; +} +' +postMessage +to +a +redundant +worker +' +) +; < / script diff --git a/testing/web-platform/tests/service-workers/service-worker/resources/postmessage-echo-worker.js b/testing/web-platform/tests/service-workers/service-worker/resources/postmessage-echo-worker.js new file mode 100644 index 0000000000000..4ef596c8e47bb --- /dev/null +++ b/testing/web-platform/tests/service-workers/service-worker/resources/postmessage-echo-worker.js @@ -0,0 +1,25 @@ +self +. +addEventListener +( +' +message +' +event += +> +{ +event +. +source +. +postMessage +( +event +. +data +) +; +} +) +;