[web-db] implement proxy for promise-based connection with worker
Summary:
Abstraction layer over native event-based communication.
Depends on D6991
Test Plan:
Run this code:
const rawWebDbWorker = new SharedWorker('/worker/webDatabase'); const webDBWorker = new WorkerConnectionProxy( rawWebDbWorker.port, error => { console.error(error); }, ); const workerResult = await webDBWorker.scheduleOnWorker({ type: workerRequestMessageTypes.PING, text: 'PING', }); console.log('result: ', workerResult); const combinedResult = await Promise.all([ webDBWorker.scheduleOnWorker({ type: workerRequestMessageTypes.PING, text: 'PING', }), webDBWorker.scheduleOnWorker({ type: workerRequestMessageTypes.PING, text: 'PING', }), webDBWorker.scheduleOnWorker({ type: workerRequestMessageTypes.PING, text: 'PING', }), webDBWorker.scheduleOnWorker({ type: workerRequestMessageTypes.PING, text: 'PING', }), ]); console.log(combinedResult);
and check results in browser, desktop, and shared worker consoles.
Also test throwing errors.
Reviewers: michal, tomek
Reviewed By: michal
Subscribers: ashoat, atul
Differential Revision: https://phab.comm.dev/D6992