Bug 183082

Summary: Can't transfer arraybuffer to service worker
Product: WebKit Reporter: Ms2ger (he/him; ⌚ UTC+1/+2) <Ms2ger>
Component: Service WorkersAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: beidson, cdumez, rniwa, webkit-bug-importer, youennf
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Description Ms2ger (he/him; ⌚ UTC+1/+2) 2018-02-23 06:52:44 PST
Problem seems to be that MessageWithMessagePorts::{encode,decode} don't handle the transferred array buffers, only the serialization and MessagePorts.

Test case:

<!doctype html>
<script src=/resources/testharness.js>
</script>
<script>
promise_test(async t => {
  let reg = await navigator.serviceWorker.register("/tmp/sw.js");
  const ab = new ArrayBuffer(8);
  let sw = reg.installing || reg.waiting || reg.active;
  sw.postMessage(ab, [ab]);
  await new Promise((res, rej) => {
    navigator.serviceWorker.onmessage = e => rej(e.data);
  });
})
</script>


self.addEventListener('message', function(event) {
  event.source.postMessage(`${event.data}`);
})
Comment 1 Radar WebKit Bug Importer 2018-02-23 07:25:44 PST
<rdar://problem/37825426>