
We now create a WorkerAgent for the parent context, which is currently only a Window. Note that Workers can have Workers per the spec. The WorkerAgent spawns a WebWorker process to hold the actual script execution of the Worker. This is modeled with the DedicatedWorkerHost object in the WebWorker process. A start_dedicated_worker IPC method in the WebWorker IPC creates the WorkerHost object. Future different worker types may use different IPC messages to create their WorkerHost instance. This implementation cannot yet postMessage between the parent and the child processes. Co-Authored-By: Andreas Kling <kling@serenityos.org>
41 lines
936 B
C++
41 lines
936 B
C++
/*
|
|
* Copyright (c) 2023, Andrew Kaster <akaster@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/RefCounted.h>
|
|
#include <LibWeb/Forward.h>
|
|
#include <LibWeb/HTML/MessageEvent.h>
|
|
#include <LibWeb/HTML/MessagePort.h>
|
|
#include <LibWeb/HTML/Scripting/ClassicScript.h>
|
|
#include <LibWeb/HTML/Scripting/WorkerEnvironmentSettingsObject.h>
|
|
#include <LibWeb/HTML/Window.h>
|
|
#include <LibWeb/Worker/WebWorkerClient.h>
|
|
|
|
namespace Web::HTML {
|
|
|
|
struct WorkerOptions {
|
|
String type { "classic"_string };
|
|
String credentials { "same-origin"_string };
|
|
String name { String {} };
|
|
};
|
|
|
|
struct WorkerAgent : JS::Cell {
|
|
JS_CELL(Agent, JS::Cell);
|
|
|
|
WorkerAgent(AK::URL url, WorkerOptions const& options);
|
|
|
|
RefPtr<Web::HTML::WebWorkerClient> m_worker_ipc;
|
|
|
|
private:
|
|
WorkerOptions m_worker_options;
|
|
AK::URL m_url;
|
|
|
|
// TODO: associate with MessagePorts?
|
|
int m_message_port_fd;
|
|
};
|
|
|
|
}
|