Commit 09d022ec authored by Kenichi Ishibashi's avatar Kenichi Ishibashi Committed by Commit Bot

service worker: Remove WorkerClassicScriptLoader for OnMT script fetch

We don't support on-the-main-thread script fetch anymore.

Bug: 967272
Change-Id: I25cd1a56e16e928709cda11b705089e62bc840d9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1745110Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarHiroki Nakagawa <nhiroki@chromium.org>
Commit-Queue: Kenichi Ishibashi <bashi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#686361}
parent 49b451e9
......@@ -55,7 +55,6 @@
#include "third_party/blink/renderer/core/probe/core_probes.h"
#include "third_party/blink/renderer/core/script/script.h"
#include "third_party/blink/renderer/core/workers/worker_backing_thread_startup_data.h"
#include "third_party/blink/renderer/core/workers/worker_classic_script_loader.h"
#include "third_party/blink/renderer/core/workers/worker_global_scope.h"
#include "third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.h"
#include "third_party/blink/renderer/modules/service_worker/service_worker_installed_scripts_manager.h"
......@@ -151,7 +150,6 @@ WebEmbeddedWorkerImpl::~WebEmbeddedWorkerImpl() {
void WebEmbeddedWorkerImpl::StartWorkerContext(
const WebEmbeddedWorkerStartData& data) {
DCHECK(!asked_to_terminate_);
DCHECK(!main_script_loader_);
DCHECK_EQ(pause_after_download_state_, kDontPauseAfterDownload);
worker_start_data_ = data;
......@@ -195,13 +193,6 @@ void WebEmbeddedWorkerImpl::TerminateWorkerContext() {
worker_context_client_->WorkerContextFailedToStartOnMainThread();
return;
}
if (main_script_loader_) {
main_script_loader_->Cancel();
main_script_loader_ = nullptr;
// This deletes 'this'.
worker_context_client_->WorkerContextFailedToStartOnMainThread();
return;
}
if (!worker_thread_) {
// The worker thread has not been created yet if the worker is asked to
// terminate during waiting for debugger or paused after download.
......@@ -239,24 +230,6 @@ void WebEmbeddedWorkerImpl::OnShadowPageInitialized() {
StartWorkerThread();
}
void WebEmbeddedWorkerImpl::OnScriptLoaderFinished() {
DCHECK(main_script_loader_);
if (asked_to_terminate_)
return;
if (main_script_loader_->Failed()) {
TerminateWorkerContext();
return;
}
worker_context_client_->WorkerScriptLoadedOnMainThread();
if (pause_after_download_state_ == kDoPauseAfterDownload) {
pause_after_download_state_ = kIsPausedAfterDownload;
return;
}
StartWorkerThread();
}
void WebEmbeddedWorkerImpl::StartWorkerThread() {
DCHECK(!asked_to_terminate_);
......@@ -301,59 +274,25 @@ void WebEmbeddedWorkerImpl::StartWorkerThread() {
installed_scripts_manager_->IsScriptInstalled(
worker_start_data_.script_url);
// |main_script_loader_| isn't created if the InstalledScriptsManager had the
// script.
if (main_script_loader_) {
ContentSecurityPolicy* content_security_policy =
main_script_loader_->GetContentSecurityPolicy();
network::mojom::ReferrerPolicy referrer_policy =
network::mojom::ReferrerPolicy::kDefault;
if (!main_script_loader_->GetReferrerPolicy().IsNull()) {
SecurityPolicy::ReferrerPolicyFromHeaderValue(
main_script_loader_->GetReferrerPolicy(),
kDoNotSupportReferrerPolicyLegacyKeywords, &referrer_policy);
}
global_scope_creation_params = std::make_unique<GlobalScopeCreationParams>(
worker_start_data_.script_url, worker_start_data_.script_type,
OffMainThreadWorkerScriptFetchOption::kEnabled, global_scope_name,
worker_start_data_.user_agent, std::move(web_worker_fetch_context),
content_security_policy ? content_security_policy->Headers()
: Vector<CSPHeaderAndType>(),
referrer_policy, starter_origin.get(), starter_secure_context,
starter_https_state, nullptr /* worker_clients */,
std::move(content_settings_client_),
main_script_loader_->ResponseAddressSpace(),
main_script_loader_->OriginTrialTokens(), devtools_worker_token_,
std::move(worker_settings),
static_cast<V8CacheOptions>(worker_start_data_.v8_cache_options),
nullptr /* worklet_module_respones_map */,
std::move(interface_provider_info_),
mojo::NullRemote(), /* TODO(crbug.com/985112) pass a real BIB */
BeginFrameProviderParams(), nullptr /* parent_feature_policy */,
base::UnguessableToken() /* agent_cluster_id */);
source_code = main_script_loader_->SourceText();
cached_meta_data = main_script_loader_->ReleaseCachedMetadata();
main_script_loader_ = nullptr;
} else {
// We don't have to set ContentSecurityPolicy and ReferrerPolicy. They're
// served by the installed scripts manager on the worker thread.
global_scope_creation_params = std::make_unique<GlobalScopeCreationParams>(
worker_start_data_.script_url, worker_start_data_.script_type,
OffMainThreadWorkerScriptFetchOption::kEnabled, global_scope_name,
worker_start_data_.user_agent, std::move(web_worker_fetch_context),
Vector<CSPHeaderAndType>(), network::mojom::ReferrerPolicy::kDefault,
starter_origin.get(), starter_secure_context, starter_https_state,
nullptr /* worker_clients */, std::move(content_settings_client_),
base::nullopt /* response_address_space */,
nullptr /* OriginTrialTokens */, devtools_worker_token_,
std::move(worker_settings),
static_cast<V8CacheOptions>(worker_start_data_.v8_cache_options),
nullptr /* worklet_module_respones_map */,
std::move(interface_provider_info_),
mojo::NullRemote() /* TODO(crbug.com/985112) pass a real BIB */,
BeginFrameProviderParams(), nullptr /* parent_feature_policy */,
base::UnguessableToken() /* agent_cluster_id */);
}
// We don't have to set ContentSecurityPolicy and ReferrerPolicy. They're
// served by the worker script loader or the installed scripts manager on the
// worker thread.
global_scope_creation_params = std::make_unique<GlobalScopeCreationParams>(
worker_start_data_.script_url, worker_start_data_.script_type,
OffMainThreadWorkerScriptFetchOption::kEnabled, global_scope_name,
worker_start_data_.user_agent, std::move(web_worker_fetch_context),
Vector<CSPHeaderAndType>(), network::mojom::ReferrerPolicy::kDefault,
starter_origin.get(), starter_secure_context, starter_https_state,
nullptr /* worker_clients */, std::move(content_settings_client_),
base::nullopt /* response_address_space */,
nullptr /* OriginTrialTokens */, devtools_worker_token_,
std::move(worker_settings),
static_cast<V8CacheOptions>(worker_start_data_.v8_cache_options),
nullptr /* worklet_module_respones_map */,
std::move(interface_provider_info_),
mojo::NullRemote() /* TODO(crbug.com/985112) pass a real BIB */,
BeginFrameProviderParams(), nullptr /* parent_feature_policy */,
base::UnguessableToken() /* agent_cluster_id */);
// Generate the full code cache in the first execution of the script.
global_scope_creation_params->v8_cache_options =
......
......@@ -50,7 +50,6 @@ namespace blink {
class ServiceWorkerInstalledScriptsManager;
class ServiceWorkerThread;
class WorkerClassicScriptLoader;
struct CrossThreadFetchClientSettingsObjectData;
// The implementation of WebEmbeddedWorker. This is responsible for starting
......@@ -91,7 +90,6 @@ class MODULES_EXPORT WebEmbeddedWorkerImpl final
void WaitForShutdownForTesting();
private:
void OnScriptLoaderFinished();
void StartWorkerThread();
// Creates a cross-thread copyable outside settings object for top-level
......@@ -110,10 +108,6 @@ class MODULES_EXPORT WebEmbeddedWorkerImpl final
installed_scripts_manager_;
std::unique_ptr<ServiceWorkerContentSettingsProxy> content_settings_client_;
// Kept around only while main script loading is ongoing.
// TODO(bashi): Remove. This is no longer used.
Persistent<WorkerClassicScriptLoader> main_script_loader_;
std::unique_ptr<ServiceWorkerThread> worker_thread_;
std::unique_ptr<WorkerShadowPage> shadow_page_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment