Commit 3ac47017 authored by Sam Sebree's avatar Sam Sebree Committed by Commit Bot

[SyntheticModules] Rename ModuleRecordResolver::GetHostDefined and Remove Spec Reference

The purpose of ModuleRecordResolver::GetHostDefined has been to convert from a Module Record to the corresponding Module Script, which previously happened to always be the [[HostDefined]] -- however that is no longer the case.

The root cause of the divergence from the spec is that while the spec defines [[HostDefined]] as a field on the ES Module Record, the Chromium implementation chose to define it in Blink using ModuleRecordResolver.  Now that the usage of [[HostDefined]] has been expanded for other purposes, this divergence is more obvious.

Therefore we propose the following to make it clear that ModuleRecordResolver functionality does not correspond to the spec's concept of [[HostDefined]]:

1) Remove the spec reference comment: "// Corresponds to the spec concept "[[HostDefined]]"." from the GetHostDefined method.
2) Change the name of the ModuleRecordResolver::GetHostDefined to GetModuleScriptFromModuleRecord.

This need for this CL was exposed by a related CL:
https://chromium-review.googlesource.com/c/chromium/src/+/1694604

Change-Id: Ie020443d7618803e422cb833ac6e173cfabb045f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1707468
Commit-Queue: Kouhei Ueno <kouhei@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Cr-Commit-Position: refs/heads/master@{#678522}
parent 5afc14e6
......@@ -37,7 +37,8 @@ class TestModuleRecordResolver final : public ModuleRecordResolver {
void RegisterModuleScript(const ModuleScript*) override { NOTREACHED(); }
void UnregisterModuleScript(const ModuleScript*) override { NOTREACHED(); }
const ModuleScript* GetHostDefined(const ModuleRecord&) const override {
const ModuleScript* GetModuleScriptFromModuleRecord(
const ModuleRecord&) const override {
NOTREACHED();
return nullptr;
}
......
......@@ -258,7 +258,7 @@ ModuleImportMeta ModulatorImplBase::HostGetImportMetaProperties(
ModuleRecord record) const {
// <spec step="1">Let module script be moduleRecord.[[HostDefined]].</spec>
const ModuleScript* module_script =
module_record_resolver_->GetHostDefined(record);
module_record_resolver_->GetModuleScriptFromModuleRecord(record);
DCHECK(module_script);
// <spec step="3">Let urlString be module script's base URL,
......
......@@ -64,7 +64,8 @@ class TestModuleRecordResolver final : public ModuleRecordResolver {
FAIL() << "UnregisterModuleScript shouldn't be called in ModuleMapTest";
}
const ModuleScript* GetHostDefined(const ModuleRecord&) const override {
const ModuleScript* GetModuleScriptFromModuleRecord(
const ModuleRecord&) const override {
NOTREACHED();
return nullptr;
}
......
......@@ -36,8 +36,8 @@ class CORE_EXPORT ModuleRecordResolver
// Notifies the ModuleRecordResolver to clear its ModuleScript mapping.
virtual void UnregisterModuleScript(const ModuleScript*) = 0;
// Corresponds to the spec concept "[[HostDefined]]".
virtual const ModuleScript* GetHostDefined(const ModuleRecord&) const = 0;
virtual const ModuleScript* GetModuleScriptFromModuleRecord(
const ModuleRecord&) const = 0;
// Implements "Runtime Semantics: HostResolveImportedModule"
// https://tc39.github.io/ecma262/#sec-hostresolveimportedmodule
......
......@@ -40,7 +40,7 @@ void ModuleRecordResolverImpl::UnregisterModuleScript(
record_to_module_script_map_.erase(module_script->Record());
}
const ModuleScript* ModuleRecordResolverImpl::GetHostDefined(
const ModuleScript* ModuleRecordResolverImpl::GetModuleScriptFromModuleRecord(
const ModuleRecord& record) const {
const auto it = record_to_module_script_map_.find(record);
CHECK_NE(it, record_to_module_script_map_.end())
......@@ -74,7 +74,8 @@ ModuleRecord ModuleRecordResolverImpl::Resolve(
// <spec step="3.1">Let referencing script be
// referencingScriptOrModule.[[HostDefined]].</spec>
const ModuleScript* referrer_module = GetHostDefined(referrer);
const ModuleScript* referrer_module =
GetModuleScriptFromModuleRecord(referrer);
// <spec step="3.3">Set base URL to referencing script's base URL.</spec>
// <spec step="5">Let url be the result of resolving a module specifier given
......
......@@ -38,7 +38,8 @@ class CORE_EXPORT ModuleRecordResolverImpl final
void RegisterModuleScript(const ModuleScript*) final;
void UnregisterModuleScript(const ModuleScript*) final;
const ModuleScript* GetHostDefined(const ModuleRecord&) const final;
const ModuleScript* GetModuleScriptFromModuleRecord(
const ModuleRecord&) const final;
// Implements "Runtime Semantics: HostResolveImportedModule" per HTML spec.
// https://html.spec.whatwg.org/C/#hostresolveimportedmodule(referencingscriptormodule,-specifier))
......
......@@ -20,7 +20,8 @@ class EmptyModuleRecordResolver final : public ModuleRecordResolver {
void RegisterModuleScript(const ModuleScript*) override {}
void UnregisterModuleScript(const ModuleScript*) override {}
const ModuleScript* GetHostDefined(const ModuleRecord&) const override {
const ModuleScript* GetModuleScriptFromModuleRecord(
const ModuleRecord&) const override {
NOTREACHED();
return nullptr;
}
......
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