diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/script/dynamic_module_resolver.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/script/dynamic_module_resolver.cc | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/chromium/third_party/blink/renderer/core/script/dynamic_module_resolver.cc b/chromium/third_party/blink/renderer/core/script/dynamic_module_resolver.cc index 5b317c6c994..8e45173e0dc 100644 --- a/chromium/third_party/blink/renderer/core/script/dynamic_module_resolver.cc +++ b/chromium/third_party/blink/renderer/core/script/dynamic_module_resolver.cc @@ -30,7 +30,7 @@ class DynamicImportTreeClient final : public ModuleTreeClient { ScriptPromiseResolver* promise_resolver) : url_(url), modulator_(modulator), promise_resolver_(promise_resolver) {} - void Trace(Visitor*) override; + void Trace(Visitor*) const override; private: // Implements ModuleTreeClient: @@ -48,7 +48,7 @@ class ModuleResolutionCallback : public ScriptFunction { ScriptPromiseResolver* promise_resolver) : ScriptFunction(script_state), promise_resolver_(promise_resolver) {} - void Trace(Visitor* visitor) override { + void Trace(Visitor* visitor) const override { visitor->Trace(promise_resolver_); ScriptFunction::Trace(visitor); } @@ -77,7 +77,7 @@ class ModuleResolutionSuccessCallback final : public ModuleResolutionCallback { return self->BindToV8Function(); } - void Trace(Visitor* visitor) final { + void Trace(Visitor* visitor) const final { visitor->Trace(module_script_); ModuleResolutionCallback::Trace(visitor); } @@ -234,7 +234,7 @@ void DynamicImportTreeClient::NotifyModuleTreeLoadFinished( promise_resolver_->Resolve(module_namespace); } -void DynamicImportTreeClient::Trace(Visitor* visitor) { +void DynamicImportTreeClient::Trace(Visitor* visitor) const { visitor->Trace(modulator_); visitor->Trace(promise_resolver_); ModuleTreeClient::Trace(visitor); @@ -242,7 +242,7 @@ void DynamicImportTreeClient::Trace(Visitor* visitor) { } // namespace -void DynamicModuleResolver::Trace(Visitor* visitor) { +void DynamicModuleResolver::Trace(Visitor* visitor) const { visitor->Trace(modulator_); } @@ -322,6 +322,27 @@ void DynamicModuleResolver::ResolveDynamically( return; } + switch (referrer_info.GetBaseUrlSource()) { + case ReferrerScriptInfo::BaseUrlSource::kClassicScriptCORSSameOrigin: + if (!modulator_->ResolveModuleSpecifier(specifier, BlankURL()) + .IsValid()) { + UseCounter::Count( + ExecutionContext::From(modulator_->GetScriptState()), + WebFeature::kDynamicImportModuleScriptRelativeClassicSameOrigin); + } + break; + case ReferrerScriptInfo::BaseUrlSource::kClassicScriptCORSCrossOrigin: + if (!modulator_->ResolveModuleSpecifier(specifier, BlankURL()) + .IsValid()) { + UseCounter::Count( + ExecutionContext::From(modulator_->GetScriptState()), + WebFeature::kDynamicImportModuleScriptRelativeClassicCrossOrigin); + } + break; + case ReferrerScriptInfo::BaseUrlSource::kOther: + break; + } + // <spec step="4.4">Set fetch options to the descendant script fetch options // for referencing script's fetch options.</spec> // |