mirror of https://github.com/electron/electron
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { IpcMainImpl } from '@electron/internal/browser/ipc-main-impl';
|
|
|
|
const { ServiceWorkerMain } = process._linkedBinding('electron_browser_service_worker_main');
|
|
|
|
Object.defineProperty(ServiceWorkerMain.prototype, 'ipc', {
|
|
get () {
|
|
const ipc = new IpcMainImpl();
|
|
Object.defineProperty(this, 'ipc', { value: ipc });
|
|
return ipc;
|
|
}
|
|
});
|
|
|
|
ServiceWorkerMain.prototype.send = function (channel, ...args) {
|
|
if (typeof channel !== 'string') {
|
|
throw new TypeError('Missing required channel argument');
|
|
}
|
|
|
|
try {
|
|
return this._send(false /* internal */, channel, args);
|
|
} catch (e) {
|
|
console.error('Error sending from ServiceWorkerMain: ', e);
|
|
}
|
|
};
|
|
|
|
ServiceWorkerMain.prototype.startTask = function () {
|
|
// TODO(samuelmaddock): maybe make timeout configurable in the future
|
|
const hasTimeout = false;
|
|
const { id, ok } = this._startExternalRequest(hasTimeout);
|
|
|
|
if (!ok) {
|
|
throw new Error('Unable to start service worker task.');
|
|
}
|
|
|
|
return {
|
|
end: () => this._finishExternalRequest(id)
|
|
};
|
|
};
|
|
|
|
module.exports = ServiceWorkerMain;
|