#include "extensions/browser/service_worker/service_worker_host.h"
#include <vector>
#include "base/containers/unique_ptr_adapters.h"
#include "base/trace_event/typed_macros.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/service_worker_context.h"
#include "content/public/browser/service_worker_external_request_result.h"
#include "content/public/browser/storage_partition.h"
#include "extensions/browser/bad_message.h"
#include "extensions/browser/event_router.h"
#include "extensions/browser/extension_function_dispatcher.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_util.h"
#include "extensions/browser/message_service_api.h"
#include "extensions/browser/process_map.h"
#include "extensions/browser/service_worker/service_worker_task_queue.h"
#include "extensions/common/api/messaging/port_context.h"
#include "extensions/common/constants.h"
#include "extensions/common/mojom/frame.mojom.h"
#include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/trace_util.h"
#include "ipc/ipc_channel_proxy.h"
#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
#include "third_party/blink/public/common/tokens/tokens.h"
namespace extensions {
ChromeTrackEvent;
namespace {
const void* const kUserDataKey = …;
class ServiceWorkerHostList : public base::SupportsUserData::Data { … };
}
ServiceWorkerHost::ServiceWorkerHost(
content::RenderProcessHost* render_process_host,
mojo::PendingAssociatedReceiver<mojom::ServiceWorkerHost> receiver)
: … { … }
ServiceWorkerHost::~ServiceWorkerHost() { … }
void ServiceWorkerHost::BindReceiver(
int render_process_id,
mojo::PendingAssociatedReceiver<mojom::ServiceWorkerHost> receiver) { … }
ServiceWorkerHost* ServiceWorkerHost::GetWorkerFor(const WorkerId& worker_id) { … }
void ServiceWorkerHost::RemoteDisconnected() { … }
void ServiceWorkerHost::DidInitializeServiceWorkerContext(
const ExtensionId& extension_id,
int64_t service_worker_version_id,
int worker_thread_id,
const blink::ServiceWorkerToken& service_worker_token,
mojo::PendingAssociatedRemote<mojom::EventDispatcher> event_dispatcher) { … }
void ServiceWorkerHost::DidStartServiceWorkerContext(
const ExtensionId& extension_id,
const base::UnguessableToken& activation_token,
const GURL& service_worker_scope,
int64_t service_worker_version_id,
int worker_thread_id) { … }
void ServiceWorkerHost::DidStopServiceWorkerContext(
const ExtensionId& extension_id,
const base::UnguessableToken& activation_token,
const GURL& service_worker_scope,
int64_t service_worker_version_id,
int worker_thread_id) { … }
void ServiceWorkerHost::RequestWorker(mojom::RequestParamsPtr params,
RequestWorkerCallback callback) { … }
void ServiceWorkerHost::WorkerResponseAck(const base::Uuid& request_uuid) { … }
content::BrowserContext* ServiceWorkerHost::GetBrowserContext() { … }
mojom::ServiceWorker* ServiceWorkerHost::GetServiceWorker() { … }
void ServiceWorkerHost::OnExtensionPermissionsUpdated(
const Extension& extension,
const PermissionSet& permissions,
PermissionsManager::UpdateReason reason) { … }
void ServiceWorkerHost::OpenChannelToExtension(
extensions::mojom::ExternalConnectionInfoPtr info,
extensions::mojom::ChannelType channel_type,
const std::string& channel_name,
const PortId& port_id,
mojo::PendingAssociatedRemote<extensions::mojom::MessagePort> port,
mojo::PendingAssociatedReceiver<extensions::mojom::MessagePortHost>
port_host) { … }
void ServiceWorkerHost::OpenChannelToNativeApp(
const std::string& native_app_name,
const PortId& port_id,
mojo::PendingAssociatedRemote<extensions::mojom::MessagePort> port,
mojo::PendingAssociatedReceiver<extensions::mojom::MessagePortHost>
port_host) { … }
void ServiceWorkerHost::OpenChannelToTab(
int32_t tab_id,
int32_t frame_id,
const std::optional<std::string>& document_id,
extensions::mojom::ChannelType channel_type,
const std::string& channel_name,
const PortId& port_id,
mojo::PendingAssociatedRemote<extensions::mojom::MessagePort> port,
mojo::PendingAssociatedReceiver<extensions::mojom::MessagePortHost>
port_host) { … }
void ServiceWorkerHost::Destroy() { … }
void ServiceWorkerHost::RenderProcessExited(
content::RenderProcessHost* host,
const content::ChildProcessTerminationInfo& info) { … }
}