#include "third_party/blink/renderer/core/exported/web_shared_worker_impl.h"
#include <memory>
#include <utility>
#include "base/memory/ptr_util.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "net/storage_access_api/status.h"
#include "services/network/public/mojom/fetch_api.mojom-shared.h"
#include "third_party/blink/public/common/loader/worker_main_script_load_parameters.h"
#include "third_party/blink/public/mojom/browser_interface_broker.mojom-blink.h"
#include "third_party/blink/public/mojom/devtools/devtools_agent.mojom-blink.h"
#include "third_party/blink/public/mojom/loader/fetch_client_settings_object.mojom-blink.h"
#include "third_party/blink/public/mojom/script/script_type.mojom-blink.h"
#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h"
#include "third_party/blink/public/mojom/v8_cache_options.mojom-blink.h"
#include "third_party/blink/public/platform/modules/service_worker/web_service_worker_network_provider.h"
#include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/public/platform/web_content_settings_client.h"
#include "third_party/blink/public/platform/web_string.h"
#include "third_party/blink/public/platform/web_url.h"
#include "third_party/blink/public/platform/web_url_request.h"
#include "third_party/blink/public/platform/web_worker_fetch_context.h"
#include "third_party/blink/public/web/web_settings.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/events/message_event.h"
#include "third_party/blink/renderer/core/frame/csp/conversion_util.h"
#include "third_party/blink/renderer/core/inspector/console_message.h"
#include "third_party/blink/renderer/core/inspector/worker_devtools_params.h"
#include "third_party/blink/renderer/core/script/script.h"
#include "third_party/blink/renderer/core/workers/global_scope_creation_params.h"
#include "third_party/blink/renderer/core/workers/parent_execution_context_task_runners.h"
#include "third_party/blink/renderer/core/workers/shared_worker_content_settings_proxy.h"
#include "third_party/blink/renderer/core/workers/shared_worker_global_scope.h"
#include "third_party/blink/renderer/core/workers/shared_worker_thread.h"
#include "third_party/blink/renderer/core/workers/worker_global_scope.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/heap/persistent.h"
#include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h"
#include "third_party/blink/renderer/platform/network/content_security_policy_parsers.h"
#include "third_party/blink/renderer/platform/weborigin/kurl.h"
#include "third_party/blink/renderer/platform/weborigin/security_origin.h"
#include "third_party/blink/renderer/platform/weborigin/security_policy.h"
#include "third_party/blink/renderer/platform/wtf/cross_thread_copier_public.h"
#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
#include "third_party/blink/renderer/platform/wtf/functional.h"
namespace blink {
WebSharedWorkerImpl::WebSharedWorkerImpl(
const blink::SharedWorkerToken& token,
CrossVariantMojoRemote<mojom::SharedWorkerHostInterfaceBase> host,
WebSharedWorkerClient* client)
: … { … }
WebSharedWorkerImpl::~WebSharedWorkerImpl() { … }
void WebSharedWorkerImpl::TerminateWorkerThread() { … }
void WebSharedWorkerImpl::CountFeature(WebFeature feature) { … }
void WebSharedWorkerImpl::DidFailToFetchClassicScript() { … }
void WebSharedWorkerImpl::DidFailToFetchModuleScript() { … }
void WebSharedWorkerImpl::DidEvaluateTopLevelScript(bool success) { … }
void WebSharedWorkerImpl::DidCloseWorkerGlobalScope() { … }
void WebSharedWorkerImpl::DidTerminateWorkerThread() { … }
void WebSharedWorkerImpl::Connect(int connection_request_id,
MessagePortDescriptor port) { … }
void WebSharedWorkerImpl::ConnectToChannel(int connection_request_id,
MessagePortChannel channel) { … }
void WebSharedWorkerImpl::DispatchPendingConnections() { … }
void WebSharedWorkerImpl::ConnectTaskOnWorkerThread(
MessagePortChannel channel) { … }
void WebSharedWorkerImpl::StartWorkerContext(
const WebURL& script_request_url,
mojom::blink::ScriptType script_type,
network::mojom::CredentialsMode credentials_mode,
const WebString& name,
WebSecurityOrigin constructor_origin,
WebSecurityOrigin origin_from_browser,
bool is_constructor_secure_context,
const WebString& user_agent,
const UserAgentMetadata& ua_metadata,
const WebVector<WebContentSecurityPolicy>& content_security_policies,
const WebFetchClientSettingsObject& outside_fetch_client_settings_object,
const base::UnguessableToken& devtools_worker_token,
CrossVariantMojoRemote<
mojom::blink::WorkerContentSettingsProxyInterfaceBase> content_settings,
CrossVariantMojoRemote<mojom::blink::BrowserInterfaceBrokerInterfaceBase>
browser_interface_broker,
bool pause_worker_context_on_start,
std::unique_ptr<WorkerMainScriptLoadParameters>
worker_main_script_load_params,
std::unique_ptr<blink::WebPolicyContainer> policy_container,
scoped_refptr<WebWorkerFetchContext> web_worker_fetch_context,
ukm::SourceId ukm_source_id,
bool require_cross_site_request_for_cookies) { … }
void WebSharedWorkerImpl::TerminateWorkerContext() { … }
std::unique_ptr<WebSharedWorker> WebSharedWorker::CreateAndStart(
const blink::SharedWorkerToken& token,
const WebURL& script_request_url,
mojom::blink::ScriptType script_type,
network::mojom::CredentialsMode credentials_mode,
const WebString& name,
WebSecurityOrigin constructor_origin,
WebSecurityOrigin origin_from_browser,
bool is_constructor_secure_context,
const WebString& user_agent,
const UserAgentMetadata& ua_metadata,
const WebVector<WebContentSecurityPolicy>& content_security_policies,
const WebFetchClientSettingsObject& outside_fetch_client_settings_object,
const base::UnguessableToken& devtools_worker_token,
CrossVariantMojoRemote<
mojom::blink::WorkerContentSettingsProxyInterfaceBase> content_settings,
CrossVariantMojoRemote<mojom::blink::BrowserInterfaceBrokerInterfaceBase>
browser_interface_broker,
bool pause_worker_context_on_start,
std::unique_ptr<WorkerMainScriptLoadParameters>
worker_main_script_load_params,
std::unique_ptr<blink::WebPolicyContainer> policy_container,
scoped_refptr<WebWorkerFetchContext> web_worker_fetch_context,
CrossVariantMojoRemote<mojom::SharedWorkerHostInterfaceBase> host,
WebSharedWorkerClient* client,
ukm::SourceId ukm_source_id,
bool require_cross_site_request_for_cookies) { … }
}