summaryrefslogtreecommitdiff
path: root/chromium/content/renderer/loader
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/renderer/loader')
-rw-r--r--chromium/content/renderer/loader/resource_dispatcher.cc27
-rw-r--r--chromium/content/renderer/loader/resource_dispatcher.h10
-rw-r--r--chromium/content/renderer/loader/sync_load_context.cc16
-rw-r--r--chromium/content/renderer/loader/sync_load_context.h7
-rw-r--r--chromium/content/renderer/loader/sync_load_context_unittest.cc24
-rw-r--r--chromium/content/renderer/loader/web_url_loader_impl.cc14
-rw-r--r--chromium/content/renderer/loader/web_url_request_util.cc11
-rw-r--r--chromium/content/renderer/loader/web_worker_fetch_context_impl.cc27
-rw-r--r--chromium/content/renderer/loader/web_worker_fetch_context_impl.h17
9 files changed, 96 insertions, 57 deletions
diff --git a/chromium/content/renderer/loader/resource_dispatcher.cc b/chromium/content/renderer/loader/resource_dispatcher.cc
index 4f6b3a9ce1c..70b959ead57 100644
--- a/chromium/content/renderer/loader/resource_dispatcher.cc
+++ b/chromium/content/renderer/loader/resource_dispatcher.cc
@@ -407,6 +407,11 @@ void ResourceDispatcher::OnTransferSizeUpdated(int request_id,
transfer_size_diff);
}
+void ResourceDispatcher::SetCorsExemptHeaderList(
+ const std::vector<std::string>& list) {
+ cors_exempt_header_list_ = list;
+}
+
ResourceDispatcher::PendingRequestInfo::PendingRequestInfo(
std::unique_ptr<RequestPeer> peer,
network::mojom::RequestDestination request_destination,
@@ -460,14 +465,14 @@ void ResourceDispatcher::StartSync(
base::ThreadPool::CreateSingleThreadTaskRunner({});
task_runner->PostTask(
FROM_HERE,
- base::BindOnce(&SyncLoadContext::StartAsyncWithWaitableEvent,
- std::move(request), routing_id, task_runner,
- traffic_annotation, loader_options,
- std::move(pending_factory), std::move(throttles),
- base::Unretained(response),
- base::Unretained(&redirect_or_response_event),
- base::Unretained(terminate_sync_load_event_), timeout,
- std::move(download_to_blob_registry)));
+ base::BindOnce(
+ &SyncLoadContext::StartAsyncWithWaitableEvent, std::move(request),
+ routing_id, task_runner, traffic_annotation, loader_options,
+ std::move(pending_factory), std::move(throttles),
+ base::Unretained(response),
+ base::Unretained(&redirect_or_response_event),
+ base::Unretained(terminate_sync_load_event_), timeout,
+ std::move(download_to_blob_registry), cors_exempt_header_list_));
// redirect_or_response_event will signal when each redirect completes, and
// when the final response is complete.
@@ -561,7 +566,8 @@ int ResourceDispatcher::StartAsync(
blink::ThrottlingURLLoader::CreateLoaderAndStart(
std::move(url_loader_factory), std::move(throttles), routing_id,
request_id, loader_options, request.get(), client.get(),
- traffic_annotation, std::move(loading_task_runner));
+ traffic_annotation, std::move(loading_task_runner),
+ base::make_optional(cors_exempt_header_list_));
pending_request->url_loader = std::move(url_loader);
pending_request->url_loader_client = std::move(client);
@@ -603,6 +609,9 @@ void ResourceDispatcher::ToLocalURLResponseHead(
RemoteToLocalTimeTicks(converter, &load_timing->push_end);
RemoteToLocalTimeTicks(converter, &load_timing->service_worker_start_time);
RemoteToLocalTimeTicks(converter, &load_timing->service_worker_ready_time);
+ RemoteToLocalTimeTicks(converter, &load_timing->service_worker_fetch_start);
+ RemoteToLocalTimeTicks(converter,
+ &load_timing->service_worker_respond_with_settled);
}
// TODO(dgozman): this is not used for navigation anymore, only for worker
diff --git a/chromium/content/renderer/loader/resource_dispatcher.h b/chromium/content/renderer/loader/resource_dispatcher.h
index 949cc1ecdfa..6b291710183 100644
--- a/chromium/content/renderer/loader/resource_dispatcher.h
+++ b/chromium/content/renderer/loader/resource_dispatcher.h
@@ -14,7 +14,6 @@
#include <string>
#include <vector>
-#include "base/containers/circular_deque.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "base/single_thread_task_runner.h"
@@ -159,6 +158,13 @@ class CONTENT_EXPORT ResourceDispatcher {
void OnTransferSizeUpdated(int request_id, int32_t transfer_size_diff);
+ // Sets the CORS exempt header list for sanity checking.
+ void SetCorsExemptHeaderList(const std::vector<std::string>& list);
+
+ std::vector<std::string> cors_exempt_header_list() const {
+ return cors_exempt_header_list_;
+ }
+
// This is used only when |this| is created for a worker thread.
// Sets |terminate_sync_load_event_| which will be signaled from the main
// thread when the worker thread is being terminated so that the sync requests
@@ -253,6 +259,8 @@ class CONTENT_EXPORT ResourceDispatcher {
base::WaitableEvent* terminate_sync_load_event_ = nullptr;
+ std::vector<std::string> cors_exempt_header_list_;
+
base::WeakPtrFactory<ResourceDispatcher> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(ResourceDispatcher);
diff --git a/chromium/content/renderer/loader/sync_load_context.cc b/chromium/content/renderer/loader/sync_load_context.cc
index ba16da6106d..b246fe3e65b 100644
--- a/chromium/content/renderer/loader/sync_load_context.cc
+++ b/chromium/content/renderer/loader/sync_load_context.cc
@@ -101,11 +101,13 @@ void SyncLoadContext::StartAsyncWithWaitableEvent(
base::WaitableEvent* redirect_or_response_event,
base::WaitableEvent* abort_event,
base::TimeDelta timeout,
- mojo::PendingRemote<blink::mojom::BlobRegistry> download_to_blob_registry) {
- auto* context = new SyncLoadContext(
- request.get(), std::move(pending_url_loader_factory), response,
- redirect_or_response_event, abort_event, timeout,
- std::move(download_to_blob_registry), loading_task_runner);
+ mojo::PendingRemote<blink::mojom::BlobRegistry> download_to_blob_registry,
+ const std::vector<std::string>& cors_exempt_header_list) {
+ auto* context =
+ new SyncLoadContext(request.get(), std::move(pending_url_loader_factory),
+ response, redirect_or_response_event, abort_event,
+ timeout, std::move(download_to_blob_registry),
+ loading_task_runner, cors_exempt_header_list);
context->request_id_ = context->resource_dispatcher_->StartAsync(
std::move(request), routing_id, std::move(loading_task_runner),
traffic_annotation, loader_options, base::WrapUnique(context),
@@ -121,7 +123,8 @@ SyncLoadContext::SyncLoadContext(
base::WaitableEvent* abort_event,
base::TimeDelta timeout,
mojo::PendingRemote<blink::mojom::BlobRegistry> download_to_blob_registry,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner)
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ const std::vector<std::string>& cors_exempt_header_list)
: response_(response),
body_watcher_(FROM_HERE, mojo::SimpleWatcher::ArmingPolicy::MANUAL),
download_to_blob_registry_(std::move(download_to_blob_registry)),
@@ -138,6 +141,7 @@ SyncLoadContext::SyncLoadContext(
// Constructs a new ResourceDispatcher specifically for this request.
resource_dispatcher_ = std::make_unique<ResourceDispatcher>();
+ resource_dispatcher_->SetCorsExemptHeaderList(cors_exempt_header_list);
// Initialize the final URL with the original request URL. It will be
// overwritten on redirects.
diff --git a/chromium/content/renderer/loader/sync_load_context.h b/chromium/content/renderer/loader/sync_load_context.h
index f7565e5dab0..9ba341f04af 100644
--- a/chromium/content/renderer/loader/sync_load_context.h
+++ b/chromium/content/renderer/loader/sync_load_context.h
@@ -66,8 +66,8 @@ class CONTENT_EXPORT SyncLoadContext : public RequestPeer {
base::WaitableEvent* completed_event,
base::WaitableEvent* abort_event,
base::TimeDelta timeout,
- mojo::PendingRemote<blink::mojom::BlobRegistry>
- download_to_blob_registry);
+ mojo::PendingRemote<blink::mojom::BlobRegistry> download_to_blob_registry,
+ const std::vector<std::string>& cors_exempt_header_list);
~SyncLoadContext() override;
@@ -86,7 +86,8 @@ class CONTENT_EXPORT SyncLoadContext : public RequestPeer {
base::WaitableEvent* abort_event,
base::TimeDelta timeout,
mojo::PendingRemote<blink::mojom::BlobRegistry> download_to_blob_registry,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ const std::vector<std::string>& cors_exempt_header_list);
// RequestPeer implementation:
void OnUploadProgress(uint64_t position, uint64_t size) override;
bool OnReceivedRedirect(const net::RedirectInfo& redirect_info,
diff --git a/chromium/content/renderer/loader/sync_load_context_unittest.cc b/chromium/content/renderer/loader/sync_load_context_unittest.cc
index d4d012d1ac3..3e30786489b 100644
--- a/chromium/content/renderer/loader/sync_load_context_unittest.cc
+++ b/chromium/content/renderer/loader/sync_load_context_unittest.cc
@@ -104,16 +104,17 @@ class SyncLoadContextTest : public testing::Test {
base::WaitableEvent* redirect_or_response_event) {
loading_thread_.task_runner()->PostTask(
FROM_HERE,
- base::BindOnce(&SyncLoadContext::StartAsyncWithWaitableEvent,
- std::move(request), MSG_ROUTING_NONE,
- loading_thread_.task_runner(),
- TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* loader_options */,
- std::move(pending_factory),
- std::vector<std::unique_ptr<blink::URLLoaderThrottle>>(),
- out_response, redirect_or_response_event,
- nullptr /* terminate_sync_load_event */,
- base::TimeDelta::FromSeconds(60) /* timeout */,
- mojo::NullRemote() /* download_to_blob_registry */));
+ base::BindOnce(
+ &SyncLoadContext::StartAsyncWithWaitableEvent, std::move(request),
+ MSG_ROUTING_NONE, loading_thread_.task_runner(),
+ TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* loader_options */,
+ std::move(pending_factory),
+ std::vector<std::unique_ptr<blink::URLLoaderThrottle>>(),
+ out_response, redirect_or_response_event,
+ nullptr /* terminate_sync_load_event */,
+ base::TimeDelta::FromSeconds(60) /* timeout */,
+ mojo::NullRemote() /* download_to_blob_registry */,
+ std::vector<std::string>() /* cors_exempt_header_list */));
}
static void RunSyncLoadContextViaDataPipe(
@@ -128,7 +129,8 @@ class SyncLoadContextTest : public testing::Test {
response, redirect_or_response_event,
nullptr /* terminate_sync_load_event */,
base::TimeDelta::FromSeconds(60) /* timeout */,
- mojo::NullRemote() /* download_to_blob_registry */, task_runner);
+ mojo::NullRemote() /* download_to_blob_registry */, task_runner,
+ std::vector<std::string>() /* cors_exempt_header_list */);
// Override |resource_dispatcher_| for testing.
auto dispatcher = std::make_unique<MockResourceDispatcher>();
diff --git a/chromium/content/renderer/loader/web_url_loader_impl.cc b/chromium/content/renderer/loader/web_url_loader_impl.cc
index a506772220c..d571a441bfd 100644
--- a/chromium/content/renderer/loader/web_url_loader_impl.cc
+++ b/chromium/content/renderer/loader/web_url_loader_impl.cc
@@ -118,9 +118,11 @@ network::mojom::LoadTimingInfo ToMojoLoadTiming(
load_timing.proxy_resolve_start, load_timing.proxy_resolve_end,
load_timing.connect_timing, load_timing.send_start, load_timing.send_end,
load_timing.receive_headers_start, load_timing.receive_headers_end,
- load_timing.push_start, load_timing.push_end,
- load_timing.service_worker_start_time,
- load_timing.service_worker_ready_time);
+ load_timing.first_early_hints_time, load_timing.push_start,
+ load_timing.push_end, load_timing.service_worker_start_time,
+ load_timing.service_worker_ready_time,
+ load_timing.service_worker_fetch_start,
+ load_timing.service_worker_respond_with_settled);
}
// This is complementary to ConvertNetPriorityToWebKitPriority, defined in
@@ -927,12 +929,14 @@ void WebURLLoaderImpl::PopulateURLResponse(
response->SetConnectionReused(head.load_timing.socket_reused);
response->SetWasFetchedViaSPDY(head.was_fetched_via_spdy);
response->SetWasFetchedViaServiceWorker(head.was_fetched_via_service_worker);
+ response->SetServiceWorkerResponseSource(head.service_worker_response_source);
response->SetWasFallbackRequiredByServiceWorker(
head.was_fallback_required_by_service_worker);
response->SetType(head.response_type);
response->SetUrlListViaServiceWorker(head.url_list_via_service_worker);
response->SetCacheStorageCacheName(
- head.is_in_cache_storage
+ head.service_worker_response_source ==
+ network::mojom::FetchResponseSource::kCacheStorage
? blink::WebString::FromUTF8(head.cache_storage_cache_name)
: blink::WebString());
blink::WebVector<blink::WebString> cors_exposed_header_names(
@@ -1112,7 +1116,7 @@ void WebURLLoaderImpl::LoadSynchronously(
WebString::FromLatin1(sync_load_response.downloaded_blob->uuid),
WebString::FromLatin1(sync_load_response.downloaded_blob->content_type),
sync_load_response.downloaded_blob->size,
- sync_load_response.downloaded_blob->blob.PassPipe());
+ std::move(sync_load_response.downloaded_blob->blob));
}
data.Assign(sync_load_response.data.data(), sync_load_response.data.size());
diff --git a/chromium/content/renderer/loader/web_url_request_util.cc b/chromium/content/renderer/loader/web_url_request_util.cc
index 3c58401723c..e351493f1c9 100644
--- a/chromium/content/renderer/loader/web_url_request_util.cc
+++ b/chromium/content/renderer/loader/web_url_request_util.cc
@@ -149,7 +149,7 @@ WebHTTPBody GetWebHTTPBodyForRequestBody(
http_body.AppendBlob(WebString::FromASCII(element.blob_uuid()));
break;
case network::mojom::DataElementType::kDataPipe: {
- http_body.AppendDataPipe(element.CloneDataPipeGetter().PassPipe());
+ http_body.AppendDataPipe(element.CloneDataPipeGetter());
break;
}
case network::mojom::DataElementType::kUnknown:
@@ -203,11 +203,10 @@ scoped_refptr<network::ResourceRequestBody> GetRequestBodyForWebHTTPBody(
}
break;
case WebHTTPBody::Element::kTypeBlob: {
- DCHECK(element.optional_blob_handle.is_valid());
+ DCHECK(element.optional_blob);
mojo::Remote<blink::mojom::Blob> blob_remote(
mojo::PendingRemote<blink::mojom::Blob>(
- std::move(element.optional_blob_handle),
- blink::mojom::Blob::Version_));
+ std::move(element.optional_blob)));
mojo::PendingRemote<network::mojom::DataPipeGetter>
data_pipe_getter_remote;
@@ -222,7 +221,7 @@ scoped_refptr<network::ResourceRequestBody> GetRequestBodyForWebHTTPBody(
// mojo::Remote<network::mojom::DataPipeGetter> data_pipe_getter.
mojo::Remote<network::mojom::DataPipeGetter> data_pipe_getter(
mojo::PendingRemote<network::mojom::DataPipeGetter>(
- std::move(element.data_pipe_getter), 0u));
+ std::move(element.data_pipe_getter)));
// Set the cloned DataPipeGetter to the output |request_body|, while
// keeping the original message pipe back in the input |httpBody|. This
@@ -231,7 +230,7 @@ scoped_refptr<network::ResourceRequestBody> GetRequestBodyForWebHTTPBody(
mojo::PendingRemote<network::mojom::DataPipeGetter> cloned_getter;
data_pipe_getter->Clone(cloned_getter.InitWithNewPipeAndPassReceiver());
request_body->AppendDataPipe(std::move(cloned_getter));
- element.data_pipe_getter = data_pipe_getter.Unbind().PassPipe();
+ element.data_pipe_getter = data_pipe_getter.Unbind();
break;
}
}
diff --git a/chromium/content/renderer/loader/web_worker_fetch_context_impl.cc b/chromium/content/renderer/loader/web_worker_fetch_context_impl.cc
index 5e7b8b3b7e8..505f87fef07 100644
--- a/chromium/content/renderer/loader/web_worker_fetch_context_impl.cc
+++ b/chromium/content/renderer/loader/web_worker_fetch_context_impl.cc
@@ -171,7 +171,8 @@ scoped_refptr<WebWorkerFetchContextImpl> WebWorkerFetchContextImpl::Create(
std::unique_ptr<network::PendingSharedURLLoaderFactory>
pending_fallback_factory,
mojo::PendingReceiver<blink::mojom::SubresourceLoaderUpdater>
- pending_subresource_loader_updater) {
+ pending_subresource_loader_updater,
+ const std::vector<std::string>& cors_exempt_header_list) {
mojo::PendingReceiver<blink::mojom::ServiceWorkerWorkerClient>
service_worker_client_receiver;
mojo::PendingRemote<blink::mojom::ServiceWorkerWorkerClientRegistry>
@@ -209,7 +210,8 @@ scoped_refptr<WebWorkerFetchContextImpl> WebWorkerFetchContextImpl::Create(
->renderer()
->CreateWebSocketHandshakeThrottleProvider(),
ChildThreadImpl::current()->thread_safe_sender(),
- ChildThreadImpl::current()->child_process_host()));
+ ChildThreadImpl::current()->child_process_host(),
+ cors_exempt_header_list));
if (provider_context) {
worker_fetch_context->set_controller_service_worker_mode(
provider_context->GetControllerServiceWorkerMode());
@@ -241,7 +243,8 @@ WebWorkerFetchContextImpl::WebWorkerFetchContextImpl(
std::unique_ptr<WebSocketHandshakeThrottleProvider>
websocket_handshake_throttle_provider,
ThreadSafeSender* thread_safe_sender,
- mojo::SharedRemote<mojom::ChildProcessHost> process_host)
+ mojo::SharedRemote<mojom::ChildProcessHost> process_host,
+ const std::vector<std::string>& cors_exempt_header_list)
: service_worker_client_receiver_(
std::move(service_worker_client_receiver)),
pending_service_worker_worker_client_registry_(
@@ -259,7 +262,8 @@ WebWorkerFetchContextImpl::WebWorkerFetchContextImpl(
throttle_provider_(std::move(throttle_provider)),
websocket_handshake_throttle_provider_(
std::move(websocket_handshake_throttle_provider)),
- process_host_(std::move(process_host)) {}
+ process_host_(std::move(process_host)),
+ cors_exempt_header_list_(cors_exempt_header_list) {}
WebWorkerFetchContextImpl::~WebWorkerFetchContextImpl() {}
@@ -373,6 +377,7 @@ void WebWorkerFetchContextImpl::InitializeOnWorkerThread(
DCHECK(!receiver_.is_bound());
DCHECK(!preference_watcher_receiver_.is_bound());
resource_dispatcher_ = std::make_unique<ResourceDispatcher>();
+ resource_dispatcher_->SetCorsExemptHeaderList(cors_exempt_header_list_);
resource_dispatcher_->set_terminate_sync_load_event(
terminate_sync_load_event_);
@@ -424,13 +429,12 @@ blink::WebURLLoaderFactory* WebWorkerFetchContextImpl::GetURLLoaderFactory() {
std::unique_ptr<blink::WebURLLoaderFactory>
WebWorkerFetchContextImpl::WrapURLLoaderFactory(
- mojo::ScopedMessagePipeHandle url_loader_factory_handle) {
+ blink::CrossVariantMojoRemote<network::mojom::URLLoaderFactoryInterfaceBase>
+ url_loader_factory) {
return std::make_unique<WebURLLoaderFactoryImpl>(
resource_dispatcher_->GetWeakPtr(),
base::MakeRefCounted<network::WrapperSharedURLLoaderFactory>(
- mojo::PendingRemote<network::mojom::URLLoaderFactory>(
- std::move(url_loader_factory_handle),
- network::mojom::URLLoaderFactory::Version_)));
+ std::move(url_loader_factory)));
}
std::unique_ptr<blink::CodeCacheLoader>
@@ -534,7 +538,8 @@ WebWorkerFetchContextImpl::CreateWebSocketHandshakeThrottle(
ancestor_frame_id_, std::move(task_runner));
}
-mojo::ScopedMessagePipeHandle
+blink::CrossVariantMojoReceiver<
+ blink::mojom::WorkerTimingContainerInterfaceBase>
WebWorkerFetchContextImpl::TakePendingWorkerTimingReceiver(int request_id) {
auto iter = worker_timing_container_receivers_.find(request_id);
if (iter == worker_timing_container_receivers_.end()) {
@@ -542,7 +547,7 @@ WebWorkerFetchContextImpl::TakePendingWorkerTimingReceiver(int request_id) {
}
auto receiver = std::move(iter->second);
worker_timing_container_receivers_.erase(iter);
- return receiver.PassPipe();
+ return std::move(receiver);
}
void WebWorkerFetchContextImpl::SetIsOfflineMode(bool is_offline_mode) {
@@ -620,7 +625,7 @@ WebWorkerFetchContextImpl::CloneForNestedWorkerInternal(
? websocket_handshake_throttle_provider_->Clone(
std::move(task_runner))
: nullptr,
- thread_safe_sender_.get(), process_host_));
+ thread_safe_sender_.get(), process_host_, cors_exempt_header_list_));
new_context->is_on_sub_frame_ = is_on_sub_frame_;
new_context->ancestor_frame_id_ = ancestor_frame_id_;
new_context->frame_request_blocker_ = frame_request_blocker_;
diff --git a/chromium/content/renderer/loader/web_worker_fetch_context_impl.h b/chromium/content/renderer/loader/web_worker_fetch_context_impl.h
index 6d08e2d5be3..8a45725b471 100644
--- a/chromium/content/renderer/loader/web_worker_fetch_context_impl.h
+++ b/chromium/content/renderer/loader/web_worker_fetch_context_impl.h
@@ -85,7 +85,8 @@ class CONTENT_EXPORT WebWorkerFetchContextImpl
std::unique_ptr<network::PendingSharedURLLoaderFactory>
pending_fallback_factory,
mojo::PendingReceiver<blink::mojom::SubresourceLoaderUpdater>
- pending_subresource_loader_updater);
+ pending_subresource_loader_updater,
+ const std::vector<std::string>& cors_exempt_header_list);
// Clones this fetch context for a nested worker.
// For non-PlzDedicatedWorker. This will be removed once PlzDedicatedWorker is
@@ -110,7 +111,9 @@ class CONTENT_EXPORT WebWorkerFetchContextImpl
void InitializeOnWorkerThread(blink::AcceptLanguagesWatcher*) override;
blink::WebURLLoaderFactory* GetURLLoaderFactory() override;
std::unique_ptr<blink::WebURLLoaderFactory> WrapURLLoaderFactory(
- mojo::ScopedMessagePipeHandle url_loader_factory_handle) override;
+ blink::CrossVariantMojoRemote<
+ network::mojom::URLLoaderFactoryInterfaceBase> url_loader_factory)
+ override;
std::unique_ptr<blink::CodeCacheLoader> CreateCodeCacheLoader() override;
void WillSendRequest(blink::WebURLRequest&) override;
blink::mojom::ControllerServiceWorkerMode GetControllerServiceWorkerMode()
@@ -130,8 +133,9 @@ class CONTENT_EXPORT WebWorkerFetchContextImpl
std::unique_ptr<blink::WebSocketHandshakeThrottle>
CreateWebSocketHandshakeThrottle(
scoped_refptr<base::SingleThreadTaskRunner> task_runner) override;
- mojo::ScopedMessagePipeHandle TakePendingWorkerTimingReceiver(
- int request_id) override;
+ blink::CrossVariantMojoReceiver<
+ blink::mojom::WorkerTimingContainerInterfaceBase>
+ TakePendingWorkerTimingReceiver(int request_id) override;
void SetIsOfflineMode(bool is_offline_mode) override;
// blink::mojom::ServiceWorkerWorkerClient implementation:
@@ -215,7 +219,8 @@ class CONTENT_EXPORT WebWorkerFetchContextImpl
std::unique_ptr<WebSocketHandshakeThrottleProvider>
websocket_handshake_throttle_provider,
ThreadSafeSender* thread_safe_sender,
- mojo::SharedRemote<mojom::ChildProcessHost> process_host);
+ mojo::SharedRemote<mojom::ChildProcessHost> process_host,
+ const std::vector<std::string>& cors_exempt_header_list);
~WebWorkerFetchContextImpl() override;
@@ -359,6 +364,8 @@ class CONTENT_EXPORT WebWorkerFetchContextImpl
mojo::SharedRemote<mojom::ChildProcessHost> process_host_;
+ std::vector<std::string> cors_exempt_header_list_;
+
std::unique_ptr<NavigationResponseOverrideParameters> response_override_;
blink::AcceptLanguagesWatcher* accept_languages_watcher_ = nullptr;