diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/loader/modulescript')
15 files changed, 182 insertions, 82 deletions
diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc b/chromium/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc index da5a8736d80..9b0da3f68a8 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc @@ -27,7 +27,8 @@ void DocumentModuleScriptFetcher::Fetch(FetchParameters& fetch_params, if (FetchIfLayeredAPI(fetch_params)) return; - ScriptResource::Fetch(fetch_params, fetcher_, this); + ScriptResource::Fetch(fetch_params, fetcher_, this, + ScriptResource::kNoStreaming); } void DocumentModuleScriptFetcher::NotifyFinished(Resource* resource) { @@ -43,8 +44,7 @@ void DocumentModuleScriptFetcher::NotifyFinished(Resource* resource) { ModuleScriptCreationParams params( script_resource->GetResponse().Url(), script_resource->SourceText(), - script_resource->GetResourceRequest().GetFetchCredentialsMode(), - script_resource->CalculateAccessControlStatus()); + script_resource->GetResourceRequest().GetFetchCredentialsMode()); client_->NotifyFetchFinished(params, error_messages); } @@ -77,8 +77,7 @@ bool DocumentModuleScriptFetcher::FetchIfLayeredAPI( ModuleScriptCreationParams params( layered_api_url, ParkableString(source_text.ReleaseImpl()), - fetch_params.GetResourceRequest().GetFetchCredentialsMode(), - kSharableCrossOrigin); + fetch_params.GetResourceRequest().GetFetchCredentialsMode()); client_->NotifyFetchFinished(params, HeapVector<Member<ConsoleMessage>>()); return true; } diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.cc b/chromium/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.cc new file mode 100644 index 00000000000..a69982edbca --- /dev/null +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.cc @@ -0,0 +1,52 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.h" + +#include "third_party/blink/renderer/core/inspector/console_message.h" +#include "third_party/blink/renderer/core/workers/installed_scripts_manager.h" +#include "third_party/blink/renderer/core/workers/worker_global_scope.h" +#include "third_party/blink/renderer/core/workers/worker_thread.h" + +namespace blink { + +InstalledServiceWorkerModuleScriptFetcher:: + InstalledServiceWorkerModuleScriptFetcher(WorkerGlobalScope* global_scope) + : global_scope_(global_scope) {} + +void InstalledServiceWorkerModuleScriptFetcher::Fetch( + FetchParameters& fetch_params, + ModuleGraphLevel level, + ModuleScriptFetcher::Client* client) { + DCHECK(global_scope_->IsContextThread()); + InstalledScriptsManager* installed_scripts_manager = + global_scope_->GetThread()->GetInstalledScriptsManager(); + DCHECK(installed_scripts_manager); + DCHECK(installed_scripts_manager->IsScriptInstalled(fetch_params.Url())); + + std::unique_ptr<InstalledScriptsManager::ScriptData> script = + installed_scripts_manager->GetScriptData(fetch_params.Url()); + + if (!script) { + HeapVector<Member<ConsoleMessage>> error_messages; + error_messages.push_back(ConsoleMessage::CreateForRequest( + kJSMessageSource, kErrorMessageLevel, + "Failed to load the script unexpectedly", + fetch_params.Url().GetString(), nullptr, 0)); + client->NotifyFetchFinished(base::nullopt, error_messages); + return; + } + + ModuleScriptCreationParams params( + fetch_params.Url(), ParkableString(script->TakeSourceText().Impl()), + fetch_params.GetResourceRequest().GetFetchCredentialsMode()); + client->NotifyFetchFinished(params, HeapVector<Member<ConsoleMessage>>()); +} + +void InstalledServiceWorkerModuleScriptFetcher::Trace(blink::Visitor* visitor) { + ModuleScriptFetcher::Trace(visitor); + visitor->Trace(global_scope_); +} + +} // namespace blink diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.h b/chromium/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.h new file mode 100644 index 00000000000..5788aaec6a1 --- /dev/null +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.h @@ -0,0 +1,43 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LOADER_MODULESCRIPT_INSTALLED_SERVICE_WORKER_MODULE_SCRIPT_FETCHER_H_ +#define THIRD_PARTY_BLINK_RENDERER_CORE_LOADER_MODULESCRIPT_INSTALLED_SERVICE_WORKER_MODULE_SCRIPT_FETCHER_H_ + +#include "third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.h" + +namespace blink { + +class WorkerGlobalScope; + +// InstalledServiceWorkerModuleScriptFetcher is an implementation of +// ModuleScriptFetcher for retrieving an installed ServiceWorker script +// from ServiceWorker's script storage. +class CORE_EXPORT InstalledServiceWorkerModuleScriptFetcher final + : public GarbageCollectedFinalized< + InstalledServiceWorkerModuleScriptFetcher>, + public ModuleScriptFetcher { + USING_GARBAGE_COLLECTED_MIXIN(InstalledServiceWorkerModuleScriptFetcher); + + public: + explicit InstalledServiceWorkerModuleScriptFetcher(WorkerGlobalScope*); + + // Implements ModuleScriptFetcher. + void Fetch(FetchParameters&, + ModuleGraphLevel, + ModuleScriptFetcher::Client*) override; + + void Trace(blink::Visitor*) override; + + private: + String DebugName() const override { + return "InstalledServiceWorkerModuleScriptFetcher"; + } + + const Member<WorkerGlobalScope> global_scope_; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_CORE_LOADER_MODULESCRIPT_WORKER_MODULE_SCRIPT_FETCHER_H_ diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h b/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h index a161709660c..bd4849de8d4 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h @@ -9,7 +9,6 @@ #include "third_party/blink/public/platform/web_url_request.h" #include "third_party/blink/renderer/platform/bindings/parkable_string.h" #include "third_party/blink/renderer/platform/cross_thread_copier.h" -#include "third_party/blink/renderer/platform/loader/fetch/access_control_status.h" #include "third_party/blink/renderer/platform/weborigin/kurl.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" @@ -21,22 +20,22 @@ class ModuleScriptCreationParams { ModuleScriptCreationParams( const KURL& response_url, const ParkableString& source_text, - network::mojom::FetchCredentialsMode fetch_credentials_mode, - AccessControlStatus access_control_status) + network::mojom::FetchCredentialsMode fetch_credentials_mode) : response_url_(response_url), is_isolated_(false), source_text_(source_text), isolated_source_text_(), - fetch_credentials_mode_(fetch_credentials_mode), - access_control_status_(access_control_status) {} + fetch_credentials_mode_(fetch_credentials_mode) {} ~ModuleScriptCreationParams() = default; ModuleScriptCreationParams IsolatedCopy() const { - String isolated_source_text = GetSourceText().ToString().IsolatedCopy(); - return ModuleScriptCreationParams( - GetResponseUrl().Copy(), isolated_source_text, - GetFetchCredentialsMode(), GetAccessControlStatus()); + String isolated_source_text = + isolated_source_text_ ? isolated_source_text_.IsolatedCopy() + : GetSourceText().ToString().IsolatedCopy(); + return ModuleScriptCreationParams(GetResponseUrl().Copy(), + isolated_source_text, + GetFetchCredentialsMode()); } const KURL& GetResponseUrl() const { return response_url_; } @@ -51,9 +50,6 @@ class ModuleScriptCreationParams { network::mojom::FetchCredentialsMode GetFetchCredentialsMode() const { return fetch_credentials_mode_; } - AccessControlStatus GetAccessControlStatus() const { - return access_control_status_; - } bool IsSafeToSendToAnotherThread() const { return response_url_.IsSafeToSendToAnotherThread() && is_isolated_; @@ -64,14 +60,12 @@ class ModuleScriptCreationParams { ModuleScriptCreationParams( const KURL& response_url, const String& isolated_source_text, - network::mojom::FetchCredentialsMode fetch_credentials_mode, - AccessControlStatus access_control_status) + network::mojom::FetchCredentialsMode fetch_credentials_mode) : response_url_(response_url), is_isolated_(true), source_text_(), isolated_source_text_(isolated_source_text), - fetch_credentials_mode_(fetch_credentials_mode), - access_control_status_(access_control_status) {} + fetch_credentials_mode_(fetch_credentials_mode) {} const KURL response_url_; @@ -82,7 +76,6 @@ class ModuleScriptCreationParams { mutable String isolated_source_text_; const network::mojom::FetchCredentialsMode fetch_credentials_mode_; - const AccessControlStatus access_control_status_; }; // Creates a deep copy because |response_url_| and |source_text_| are not diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc b/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc index 10634797e8d..dce66bc435f 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc @@ -43,7 +43,7 @@ bool ModuleScriptFetcher::WasModuleLoadSuccessful( const auto& response = resource->GetResponse(); // - response's status is not an ok status - if (response.IsHTTP() && !CORS::IsOkStatus(response.HttpStatusCode())) { + if (response.IsHTTP() && !cors::IsOkStatus(response.HttpStatusCode())) { return false; } diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc b/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc index 6c178a2750f..ef74f6b2702 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc @@ -84,7 +84,7 @@ void ModuleScriptLoader::Fetch( ModuleScriptCustomFetchType custom_fetch_type, ModuleScriptLoaderRegistry* registry, ModuleScriptLoaderClient* client) { - ModuleScriptLoader* loader = new ModuleScriptLoader( + ModuleScriptLoader* loader = MakeGarbageCollected<ModuleScriptLoader>( module_map_settings_object, module_request.Options(), registry, client); registry->AddLoader(loader); loader->FetchInternal(module_request, fetch_client_settings_object, level, @@ -154,8 +154,9 @@ void ModuleScriptLoader::FetchInternal( // [SMSR] "... its referrer policy to options's referrer policy." [spec text] // Note: For now this is done below with SetHTTPReferrer() - ReferrerPolicy referrer_policy = module_request.Options().GetReferrerPolicy(); - if (referrer_policy == kReferrerPolicyDefault) + network::mojom::ReferrerPolicy referrer_policy = + module_request.Options().GetReferrerPolicy(); + if (referrer_policy == network::mojom::ReferrerPolicy::kDefault) referrer_policy = fetch_client_settings_object->GetReferrerPolicy(); // Step 5. "... mode is "cors", ..." @@ -239,9 +240,9 @@ void ModuleScriptLoader::NotifyFetchFinished( // Step 10. "Let module script be the result of creating a module script given // source text, module map settings object, response's url, and options." // [spec text] - module_script_ = ModuleScript::Create( - params->GetSourceText(), modulator_, params->GetResponseUrl(), - params->GetResponseUrl(), options_, params->GetAccessControlStatus()); + module_script_ = ModuleScript::Create(params->GetSourceText(), modulator_, + params->GetResponseUrl(), + params->GetResponseUrl(), options_); AdvanceState(State::kFinished); } diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader.h b/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader.h index c2e1d338a20..14c9d7ffb91 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader.h +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader.h @@ -45,6 +45,10 @@ class CORE_EXPORT ModuleScriptLoader final }; public: + ModuleScriptLoader(Modulator*, + const ScriptFetchOptions&, + ModuleScriptLoaderRegistry*, + ModuleScriptLoaderClient*); ~ModuleScriptLoader(); static void Fetch( @@ -67,11 +71,6 @@ class CORE_EXPORT ModuleScriptLoader final void Trace(blink::Visitor*) override; private: - ModuleScriptLoader(Modulator*, - const ScriptFetchOptions&, - ModuleScriptLoaderRegistry*, - ModuleScriptLoaderClient*); - void FetchInternal( const ModuleScriptFetchRequest&, FetchClientSettingsObjectSnapshot* fetch_client_settings_object, diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader_registry.h b/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader_registry.h index 8ca0faea242..a2d9012c217 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader_registry.h +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader_registry.h @@ -18,13 +18,14 @@ class CORE_EXPORT ModuleScriptLoaderRegistry final : public GarbageCollected<ModuleScriptLoaderRegistry> { public: static ModuleScriptLoaderRegistry* Create() { - return new ModuleScriptLoaderRegistry; + return MakeGarbageCollected<ModuleScriptLoaderRegistry>(); } - void Trace(blink::Visitor*); - private: ModuleScriptLoaderRegistry() = default; + void Trace(blink::Visitor*); + + private: friend class ModuleScriptLoader; void AddLoader(ModuleScriptLoader*); void ReleaseFinishedLoader(ModuleScriptLoader*); diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc b/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc index d2c856fc69a..5f169e71011 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc @@ -97,15 +97,14 @@ class ModuleScriptLoaderTestModulator final : public DummyModulator { ModuleScriptFetcher* CreateModuleScriptFetcher( ModuleScriptCustomFetchType custom_fetch_type) override { auto* execution_context = ExecutionContext::From(script_state_); - if (execution_context->IsWorkletGlobalScope()) { + if (auto* scope = DynamicTo<WorkletGlobalScope>(execution_context)) { EXPECT_EQ(ModuleScriptCustomFetchType::kWorkletAddModule, custom_fetch_type); - auto* global_scope = ToWorkletGlobalScope(execution_context); - return new WorkletModuleScriptFetcher( - Fetcher(), global_scope->GetModuleResponsesMap()); + return MakeGarbageCollected<WorkletModuleScriptFetcher>( + Fetcher(), scope->GetModuleResponsesMap()); } EXPECT_EQ(ModuleScriptCustomFetchType::kNone, custom_fetch_type); - return new DocumentModuleScriptFetcher(Fetcher()); + return MakeGarbageCollected<DocumentModuleScriptFetcher>(Fetcher()); } ResourceFetcher* Fetcher() const { return fetcher_.Get(); } @@ -183,7 +182,8 @@ void ModuleScriptLoaderTest::InitializeForWorklet() { reporting_proxy_ = std::make_unique<MainThreadWorkletReportingProxy>(&GetDocument()); auto creation_params = std::make_unique<GlobalScopeCreationParams>( - GetDocument().Url(), ScriptType::kModule, GetDocument().UserAgent(), + GetDocument().Url(), mojom::ScriptType::kModule, + GetDocument().UserAgent(), nullptr /* web_worker_fetch_context */, Vector<CSPHeaderAndType>(), GetDocument().GetReferrerPolicy(), GetDocument().GetSecurityOrigin(), GetDocument().IsSecureContext(), GetDocument().GetHttpsState(), nullptr /* worker_clients */, @@ -191,8 +191,8 @@ void ModuleScriptLoaderTest::InitializeForWorklet() { OriginTrialContext::GetTokens(&GetDocument()).get(), base::UnguessableToken::Create(), nullptr /* worker_settings */, kV8CacheOptionsDefault, new WorkletModuleResponsesMap); - global_scope_ = new WorkletGlobalScope(std::move(creation_params), - *reporting_proxy_, &GetFrame()); + global_scope_ = MakeGarbageCollected<WorkletGlobalScope>( + std::move(creation_params), *reporting_proxy_, &GetFrame()); global_scope_->ScriptController()->InitializeContextIfNeeded("Dummy Context", NullURL()); modulator_ = new ModuleScriptLoaderTestModulator( @@ -218,8 +218,10 @@ TEST_F(ModuleScriptLoaderTest, FetchDataURL) { TestModuleScriptLoaderClient* client = new TestModuleScriptLoaderClient; TestFetchDataURL(ModuleScriptCustomFetchType::kNone, client); - EXPECT_TRUE(client->WasNotifyFinished()) - << "ModuleScriptLoader should finish synchronously."; + // TODO(leszeks): This should finish synchronously, but currently due + // to the script resource/script streamer interaction, it does not. + RunUntilIdle(); + EXPECT_TRUE(client->WasNotifyFinished()); ASSERT_TRUE(client->GetModuleScript()); EXPECT_FALSE(client->GetModuleScript()->HasEmptyRecord()); EXPECT_FALSE(client->GetModuleScript()->HasParseError()); @@ -273,8 +275,11 @@ TEST_F(ModuleScriptLoaderTest, InvalidSpecifier) { TestModuleScriptLoaderClient* client = new TestModuleScriptLoaderClient; TestInvalidSpecifier(ModuleScriptCustomFetchType::kNone, client); - EXPECT_TRUE(client->WasNotifyFinished()) - << "ModuleScriptLoader should finish synchronously."; + // TODO(leszeks): This should finish synchronously, but currently due + // to the script resource/script streamer interaction, it does not. + RunUntilIdle(); + EXPECT_TRUE(client->WasNotifyFinished()); + ASSERT_TRUE(client->GetModuleScript()); EXPECT_TRUE(client->GetModuleScript()->HasEmptyRecord()); EXPECT_TRUE(client->GetModuleScript()->HasParseError()); @@ -314,8 +319,10 @@ TEST_F(ModuleScriptLoaderTest, FetchInvalidURL) { TestModuleScriptLoaderClient* client = new TestModuleScriptLoaderClient; TestFetchInvalidURL(ModuleScriptCustomFetchType::kNone, client); - EXPECT_TRUE(client->WasNotifyFinished()) - << "ModuleScriptLoader should finish synchronously."; + // TODO(leszeks): This should finish synchronously, but currently due + // to the script resource/script streamer interaction, it does not. + RunUntilIdle(); + EXPECT_TRUE(client->WasNotifyFinished()); EXPECT_FALSE(client->GetModuleScript()); } @@ -336,7 +343,7 @@ void ModuleScriptLoaderTest::TestFetchURL( ModuleScriptCustomFetchType custom_fetch_type, TestModuleScriptLoaderClient* client) { KURL url("https://example.test/module.js"); - URLTestHelpers::RegisterMockedURLLoad( + url_test_helpers::RegisterMockedURLLoad( url, test::CoreTestDataPath("module.js"), "text/javascript"); auto* fetch_client_settings_object = GetDocument().CreateFetchClientSettingsObjectSnapshot(); @@ -356,6 +363,9 @@ TEST_F(ModuleScriptLoaderTest, FetchURL) { EXPECT_FALSE(client->WasNotifyFinished()) << "ModuleScriptLoader unexpectedly finished synchronously."; platform_->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); + // TODO(leszeks): This should finish synchronously, but currently due + // to the script resource/script streamer interaction, it does not. + RunUntilIdle(); EXPECT_TRUE(client->WasNotifyFinished()); EXPECT_TRUE(client->GetModuleScript()); diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc b/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc index fee91a7c5fd..088b7b3b27d 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc @@ -27,9 +27,9 @@ void ModuleTreeLinker::Fetch( ModuleScriptCustomFetchType custom_fetch_type, ModuleTreeLinkerRegistry* registry, ModuleTreeClient* client) { - ModuleTreeLinker* fetcher = - new ModuleTreeLinker(fetch_client_settings_object, destination, modulator, - custom_fetch_type, registry, client); + ModuleTreeLinker* fetcher = MakeGarbageCollected<ModuleTreeLinker>( + fetch_client_settings_object, destination, modulator, custom_fetch_type, + registry, client); registry->AddFetcher(fetcher); fetcher->FetchRoot(url, options); DCHECK(fetcher->IsFetching()); @@ -44,9 +44,9 @@ void ModuleTreeLinker::FetchDescendantsForInlineScript( ModuleTreeLinkerRegistry* registry, ModuleTreeClient* client) { DCHECK(module_script); - ModuleTreeLinker* fetcher = - new ModuleTreeLinker(fetch_client_settings_object, destination, modulator, - custom_fetch_type, registry, client); + ModuleTreeLinker* fetcher = MakeGarbageCollected<ModuleTreeLinker>( + fetch_client_settings_object, destination, modulator, custom_fetch_type, + registry, client); registry->AddFetcher(fetcher); fetcher->FetchRootInline(module_script); DCHECK(fetcher->IsFetching()); @@ -377,7 +377,7 @@ void ModuleTreeLinker::FetchDescendants(ModuleScript* module_script) { // // [FD] Step 7. These invocations of the internal module script graph fetching // procedure should be performed in parallel to each other. - for (size_t i = 0; i < urls.size(); ++i) { + for (wtf_size_t i = 0; i < urls.size(); ++i) { // [FD] Step 7. ... perform the internal module script graph fetching // procedure given url, fetch client settings object, destination, options, // module script's settings object, visited set, module script's base URL, diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.h b/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.h index e4dd03903b3..b4ed117ef38 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.h +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.h @@ -57,6 +57,13 @@ class CORE_EXPORT ModuleTreeLinker final : public SingleModuleClient { ModuleTreeLinkerRegistry*, ModuleTreeClient*); + ModuleTreeLinker( + FetchClientSettingsObjectSnapshot* fetch_client_settings_object, + mojom::RequestContextType destination, + Modulator*, + ModuleScriptCustomFetchType, + ModuleTreeLinkerRegistry*, + ModuleTreeClient*); ~ModuleTreeLinker() override = default; void Trace(blink::Visitor*) override; @@ -66,14 +73,6 @@ class CORE_EXPORT ModuleTreeLinker final : public SingleModuleClient { bool HasFinished() const { return state_ == State::kFinished; } private: - ModuleTreeLinker( - FetchClientSettingsObjectSnapshot* fetch_client_settings_object, - mojom::RequestContextType destination, - Modulator*, - ModuleScriptCustomFetchType, - ModuleTreeLinkerRegistry*, - ModuleTreeClient*); - enum class State { kInitial, // Running fetch of the module script corresponding to the target node. diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.h b/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.h index b5f0b31ab5a..2867d9ca9ce 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.h +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.h @@ -20,16 +20,17 @@ class CORE_EXPORT ModuleTreeLinkerRegistry public NameClient { public: static ModuleTreeLinkerRegistry* Create() { - return new ModuleTreeLinkerRegistry; + return MakeGarbageCollected<ModuleTreeLinkerRegistry>(); } + + ModuleTreeLinkerRegistry() = default; + void Trace(blink::Visitor*); const char* NameInHeapSnapshot() const override { return "ModuleTreeLinkerRegistry"; } private: - ModuleTreeLinkerRegistry() = default; - friend class ModuleTreeLinker; void AddFetcher(ModuleTreeLinker*); void ReleaseFinishedFetcher(ModuleTreeLinker*); diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_test.cc b/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_test.cc index 5b7d03ae927..36a57045c58 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_test.cc +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_test.cc @@ -85,8 +85,8 @@ class ModuleTreeLinkerTestModulator final : public DummyModulator { ScriptModule script_module = ScriptModule::Compile( script_state_->GetIsolate(), source_text.ToString(), url, url, - ScriptFetchOptions(), kSharableCrossOrigin, - TextPosition::MinimumPosition(), ASSERT_NO_EXCEPTION); + ScriptFetchOptions(), TextPosition::MinimumPosition(), + ASSERT_NO_EXCEPTION); auto* module_script = ModuleScript::CreateForTest(this, script_module, url); auto result_request = dependency_module_requests_map_.insert( script_module, dependency_module_requests); @@ -201,7 +201,8 @@ class ModuleTreeLinkerTest : public PageTestBase { void ModuleTreeLinkerTest::SetUp() { PageTestBase::SetUp(IntSize(500, 500)); ScriptState* script_state = ToScriptStateForMainWorld(&GetFrame()); - modulator_ = new ModuleTreeLinkerTestModulator(script_state); + modulator_ = + MakeGarbageCollected<ModuleTreeLinkerTestModulator>(script_state); } TEST_F(ModuleTreeLinkerTest, FetchTreeNoDeps) { diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.cc b/chromium/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.cc index 092915a99d8..3e702d88131 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.cc +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.cc @@ -4,11 +4,11 @@ #include "third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.h" +#include "services/network/public/mojom/referrer_policy.mojom-shared.h" #include "third_party/blink/renderer/core/inspector/console_message.h" #include "third_party/blink/renderer/core/workers/worker_global_scope.h" #include "third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h" #include "third_party/blink/renderer/platform/network/http_names.h" -#include "third_party/blink/renderer/platform/weborigin/referrer_policy.h" #include "third_party/blink/renderer/platform/weborigin/security_policy.h" namespace blink { @@ -33,7 +33,8 @@ void WorkerModuleScriptFetcher::Fetch(FetchParameters& fetch_params, // Step 13.2. "Fetch request, and asynchronously wait to run the remaining // steps as part of fetch's process response for the response response." [spec // text] - ScriptResource::Fetch(fetch_params, global_scope_->EnsureFetcher(), this); + ScriptResource::Fetch(fetch_params, global_scope_->EnsureFetcher(), this, + ScriptResource::kNoStreaming); } void WorkerModuleScriptFetcher::Trace(blink::Visitor* visitor) { @@ -82,9 +83,10 @@ void WorkerModuleScriptFetcher::NotifyFinished(Resource* resource) { // Step 13.5. "Set worker global scope's referrer policy to the result of // parsing the `Referrer-Policy` header of response." [spec text] const String referrer_policy_header = - resource->GetResponse().HttpHeaderField(HTTPNames::Referrer_Policy); + resource->GetResponse().HttpHeaderField(http_names::kReferrerPolicy); if (!referrer_policy_header.IsNull()) { - ReferrerPolicy referrer_policy = kReferrerPolicyDefault; + network::mojom::ReferrerPolicy referrer_policy = + network::mojom::ReferrerPolicy::kDefault; SecurityPolicy::ReferrerPolicyFromHeaderValue( referrer_policy_header, kDoNotSupportReferrerPolicyLegacyKeywords, &referrer_policy); @@ -98,8 +100,7 @@ void WorkerModuleScriptFetcher::NotifyFinished(Resource* resource) { ModuleScriptCreationParams params( script_resource->GetResponse().Url(), script_resource->SourceText(), - script_resource->GetResourceRequest().GetFetchCredentialsMode(), - script_resource->CalculateAccessControlStatus()); + script_resource->GetResourceRequest().GetFetchCredentialsMode()); // Step 13.7. "Asynchronously complete the perform the fetch steps with // response." [spec text] diff --git a/chromium/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.cc b/chromium/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.cc index b14d8929c2a..74b7850b18d 100644 --- a/chromium/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.cc +++ b/chromium/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.cc @@ -38,7 +38,8 @@ void WorkletModuleScriptFetcher::Fetch(FetchParameters& fetch_params, // need to handle that case, maybe by having a way to restart fetches in a // different global scope? url_ = fetch_params.Url(); - ScriptResource::Fetch(fetch_params, fetcher_.Get(), this); + ScriptResource::Fetch(fetch_params, fetcher_.Get(), this, + ScriptResource::kNoStreaming); } void WorkletModuleScriptFetcher::NotifyFinished(Resource* resource) { @@ -50,8 +51,7 @@ void WorkletModuleScriptFetcher::NotifyFinished(Resource* resource) { if (WasModuleLoadSuccessful(script_resource, &error_messages)) { params.emplace( script_resource->GetResponse().Url(), script_resource->SourceText(), - script_resource->GetResourceRequest().GetFetchCredentialsMode(), - script_resource->CalculateAccessControlStatus()); + script_resource->GetResourceRequest().GetFetchCredentialsMode()); } // This will eventually notify |client| passed to |