Skip to content

Commit 69c984a

Browse files
committed
Replace HostGetImportMetaProperties and HostFinalizeImportMeta with a single API named InitializeImportMeta
This is a slight deviation from the spec proposal but it's an engine-host only API so the change is not observable to script.
1 parent b52af78 commit 69c984a

File tree

9 files changed

+26
-100
lines changed

9 files changed

+26
-100
lines changed

bin/NativeTests/JsRTApiTest.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2201,12 +2201,7 @@ namespace JsRTApiTest
22012201
return JsNoError;
22022202
}
22032203

2204-
static JsErrorCode CALLBACK Succes_HFIMC(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef importMetaVar)
2205-
{
2206-
return JsNoError;
2207-
}
2208-
2209-
static JsErrorCode CALLBACK Succes_HGIMPC(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef importMetaVar)
2204+
static JsErrorCode CALLBACK Succes_IIMC(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef importMetaVar)
22102205
{
22112206
return JsNoError;
22122207
}
@@ -2222,8 +2217,7 @@ namespace JsRTApiTest
22222217
REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_FetchImportedModuleCallback, Success_FIMC) == JsNoError);
22232218
REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_FetchImportedModuleFromScriptCallback, Success_FIMC) == JsNoError);
22242219
REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_NotifyModuleReadyCallback, Succes_NMRC) == JsNoError);
2225-
REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_HostFinalizeImportMetaCallback, Succes_HFIMC) == JsNoError);
2226-
REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_HostGetImportMetaPropertiesCallback, Succes_HGIMPC) == JsNoError);
2220+
REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_InitializeImportMetaCallback, Succes_IIMC) == JsNoError);
22272221

22282222
JsValueRef errorObject = JS_INVALID_REFERENCE;
22292223
const char* fileContent = "import {x} from 'foo.js'";

bin/ch/WScriptJsrt.cpp

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -614,16 +614,11 @@ JsErrorCode WScriptJsrt::InitializeModuleInfo(JsValueRef specifier, JsModuleReco
614614

615615
if (errorCode == JsNoError)
616616
{
617-
errorCode = ChakraRTInterface::JsSetModuleHostInfo(moduleRecord, JsModuleHostInfo_HostFinalizeImportMetaCallback, (void*)WScriptJsrt::HostFinalizeImportMetaCallback);
617+
errorCode = ChakraRTInterface::JsSetModuleHostInfo(moduleRecord, JsModuleHostInfo_InitializeImportMetaCallback, (void*)WScriptJsrt::InitializeImportMetaCallback);
618618

619-
if (errorCode == JsNoError)
619+
if (errorCode == JsNoError && moduleRecord != nullptr)
620620
{
621-
errorCode = ChakraRTInterface::JsSetModuleHostInfo(moduleRecord, JsModuleHostInfo_HostGetImportMetaPropertiesCallback, (void*)WScriptJsrt::HostGetImportMetaPropertiesCallback);
622-
623-
if (errorCode == JsNoError && moduleRecord != nullptr)
624-
{
625-
errorCode = ChakraRTInterface::JsSetModuleHostInfo(moduleRecord, JsModuleHostInfo_HostDefined, specifier);
626-
}
621+
errorCode = ChakraRTInterface::JsSetModuleHostInfo(moduleRecord, JsModuleHostInfo_HostDefined, specifier);
627622
}
628623
}
629624
}
@@ -2169,12 +2164,7 @@ JsErrorCode WScriptJsrt::NotifyModuleReadyCallback(_In_opt_ JsModuleRecord refer
21692164
return JsNoError;
21702165
}
21712166

2172-
JsErrorCode __stdcall WScriptJsrt::HostFinalizeImportMetaCallback(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef importMetaVar)
2173-
{
2174-
return JsNoError;
2175-
}
2176-
2177-
JsErrorCode __stdcall WScriptJsrt::HostGetImportMetaPropertiesCallback(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef importMetaVar)
2167+
JsErrorCode __stdcall WScriptJsrt::InitializeImportMetaCallback(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef importMetaVar)
21782168
{
21792169
if (importMetaVar != nullptr)
21802170
{

bin/ch/WScriptJsrt.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ class WScriptJsrt
6565
static JsErrorCode FetchImportedModule(_In_ JsModuleRecord referencingModule, _In_ JsValueRef specifier, _Outptr_result_maybenull_ JsModuleRecord* dependentModuleRecord);
6666
static JsErrorCode FetchImportedModuleFromScript(_In_ DWORD_PTR dwReferencingSourceContext, _In_ JsValueRef specifier, _Outptr_result_maybenull_ JsModuleRecord* dependentModuleRecord);
6767
static JsErrorCode NotifyModuleReadyCallback(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef exceptionVar);
68-
static JsErrorCode CALLBACK HostFinalizeImportMetaCallback(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef importMetaVar);
69-
static JsErrorCode CALLBACK HostGetImportMetaPropertiesCallback(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef importMetaVar);
68+
static JsErrorCode CALLBACK InitializeImportMetaCallback(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef importMetaVar);
7069
static JsErrorCode InitializeModuleCallbacks();
7170
static void CALLBACK PromiseContinuationCallback(JsValueRef task, void *callbackState);
7271
static void CALLBACK PromiseRejectionTrackerCallback(JsValueRef promise, JsValueRef reason, bool handled, void *callbackState);

lib/Jsrt/ChakraCore.h

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,9 @@ typedef enum JsModuleHostInfoKind
113113
/// </summary>
114114
JsModuleHostInfo_Url = 0x6,
115115
/// <summary>
116-
/// Callback for getting the import.meta object properties.
116+
/// Callback to allow host to initialize import.meta object properties.
117117
/// </summary>
118-
JsModuleHostInfo_HostGetImportMetaPropertiesCallback = 0x7,
119-
/// <summary>
120-
/// Callback for finalizing the import.meta object.
121-
/// </summary>
122-
JsModuleHostInfo_HostFinalizeImportMetaCallback = 0x8
118+
JsModuleHostInfo_InitializeImportMetaCallback = 0x7
123119
} JsModuleHostInfoKind;
124120

125121
/// <summary>
@@ -195,22 +191,6 @@ typedef JsErrorCode(CHAKRA_CALLBACK * FetchImportedModuleFromScriptCallBack)(_In
195191
/// </returns>
196192
typedef JsErrorCode(CHAKRA_CALLBACK * NotifyModuleReadyCallback)(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef exceptionVar);
197193

198-
/// <summary>
199-
/// User implemented callback to allow for host to finalize import.meta object.
200-
/// </summary>
201-
/// <remarks>
202-
/// This callback is an "escape hatch" for hosts which need to do some extraordinary operations on the import.meta
203-
/// object to prepare it for script.
204-
/// The callback is invoked on the current runtime execution thread, therefore execution is blocked until the
205-
/// callback completes.
206-
/// </remarks>
207-
/// <param name="referencingModule">The referencing module that is loading an import.meta object.</param>
208-
/// <param name="importMetaVar">The object which will be returned to script for the referencing module.</param>
209-
/// <returns>
210-
/// Returns a JsErrorCode - note, the return value is ignored.
211-
/// </returns>
212-
typedef JsErrorCode(CHAKRA_CALLBACK * HostFinalizeImportMetaCallback)(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef importMetaVar);
213-
214194
/// <summary>
215195
/// User implemented callback to fill in module properties for the import.meta object.
216196
/// </summary>
@@ -225,7 +205,7 @@ typedef JsErrorCode(CHAKRA_CALLBACK * HostFinalizeImportMetaCallback)(_In_opt_ J
225205
/// <returns>
226206
/// Returns a JsErrorCode - note, the return value is ignored.
227207
/// </returns>
228-
typedef JsErrorCode(CHAKRA_CALLBACK * HostGetImportMetaPropertiesCallback)(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef importMetaVar);
208+
typedef JsErrorCode(CHAKRA_CALLBACK * InitializeImportMetaCallback)(_In_opt_ JsModuleRecord referencingModule, _In_opt_ JsValueRef importMetaVar);
229209

230210
/// <summary>
231211
/// A structure containing information about a native function callback.

lib/Jsrt/Core/JsrtContextCore.cpp

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -159,32 +159,15 @@ HRESULT ChakraCoreHostScriptContext::NotifyHostAboutModuleReady(Js::ModuleRecord
159159
return E_INVALIDARG;
160160
}
161161

162-
HRESULT ChakraCoreHostScriptContext::HostGetImportMetaProperties(Js::ModuleRecordBase* referencingModule, Js::Var importMetaObject)
162+
HRESULT ChakraCoreHostScriptContext::InitializeImportMeta(Js::ModuleRecordBase* referencingModule, Js::Var importMetaObject)
163163
{
164-
if (hostGetImportMetaPropertiesCallback == nullptr)
164+
if (initializeImportMetaCallback == nullptr)
165165
{
166166
return E_INVALIDARG;
167167
}
168168
{
169169
AUTO_NO_EXCEPTION_REGION;
170-
JsErrorCode errorCode = hostGetImportMetaPropertiesCallback(referencingModule, importMetaObject);
171-
if (errorCode == JsNoError)
172-
{
173-
return NOERROR;
174-
}
175-
}
176-
return E_INVALIDARG;
177-
}
178-
179-
HRESULT ChakraCoreHostScriptContext::HostFinalizeImportMeta(Js::ModuleRecordBase* referencingModule, Js::Var importMetaObject)
180-
{
181-
if (hostFinalizeImportMetaCallback == nullptr)
182-
{
183-
return E_INVALIDARG;
184-
}
185-
{
186-
AUTO_NO_EXCEPTION_REGION;
187-
JsErrorCode errorCode = hostFinalizeImportMetaCallback(referencingModule, importMetaObject);
170+
JsErrorCode errorCode = initializeImportMetaCallback(referencingModule, importMetaObject);
188171
if (errorCode == JsNoError)
189172
{
190173
return NOERROR;

lib/Jsrt/Core/JsrtContextCore.h

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,7 @@ class ChakraCoreHostScriptContext sealed : public HostScriptContext
104104
fetchImportedModuleCallback(nullptr),
105105
fetchImportedModuleFromScriptCallback(nullptr),
106106
notifyModuleReadyCallback(nullptr),
107-
hostFinalizeImportMetaCallback(nullptr),
108-
hostGetImportMetaPropertiesCallback(nullptr)
107+
initializeImportMetaCallback(nullptr)
109108
{
110109
}
111110
~ChakraCoreHostScriptContext()
@@ -253,8 +252,7 @@ class ChakraCoreHostScriptContext sealed : public HostScriptContext
253252

254253
HRESULT NotifyHostAboutModuleReady(Js::ModuleRecordBase* referencingModule, Js::Var exceptionVar) override;
255254

256-
HRESULT HostGetImportMetaProperties(Js::ModuleRecordBase* referencingModule, Js::Var importMetaObject) override;
257-
HRESULT HostFinalizeImportMeta(Js::ModuleRecordBase* referencingModule, Js::Var importMetaObject) override;
255+
HRESULT InitializeImportMeta(Js::ModuleRecordBase* referencingModule, Js::Var importMetaObject) override;
258256

259257
void SetNotifyModuleReadyCallback(NotifyModuleReadyCallback notifyCallback) { this->notifyModuleReadyCallback = notifyCallback; }
260258
NotifyModuleReadyCallback GetNotifyModuleReadyCallback() const { return this->notifyModuleReadyCallback; }
@@ -265,11 +263,8 @@ class ChakraCoreHostScriptContext sealed : public HostScriptContext
265263
void SetFetchImportedModuleFromScriptCallback(FetchImportedModuleFromScriptCallBack fetchCallback) { this->fetchImportedModuleFromScriptCallback = fetchCallback; }
266264
FetchImportedModuleFromScriptCallBack GetFetchImportedModuleFromScriptCallback() const { return this->fetchImportedModuleFromScriptCallback; }
267265

268-
void SetHostFinalizeImportMetaCallback(HostFinalizeImportMetaCallback finalizeCallback) { this->hostFinalizeImportMetaCallback = finalizeCallback; }
269-
HostFinalizeImportMetaCallback GetHostFinalizeImportMetaCallback() const { return this->hostFinalizeImportMetaCallback; }
270-
271-
void SetHostGetImportMetaPropertiesCallback(HostGetImportMetaPropertiesCallback getCallback) { this->hostGetImportMetaPropertiesCallback = getCallback; }
272-
HostGetImportMetaPropertiesCallback GetHostGetImportMetaPropertiesCallback() const { return this->hostGetImportMetaPropertiesCallback; }
266+
void SetInitializeImportMetaCallback(InitializeImportMetaCallback finalizeCallback) { this->initializeImportMetaCallback = finalizeCallback; }
267+
InitializeImportMetaCallback GetInitializeImportMetaCallback() const { return this->initializeImportMetaCallback; }
273268

274269
#if DBG_DUMP || defined(PROFILE_EXEC) || defined(PROFILE_MEM)
275270
void EnsureParentInfo(Js::ScriptContext* scriptContext = NULL) override
@@ -285,6 +280,5 @@ class ChakraCoreHostScriptContext sealed : public HostScriptContext
285280
FetchImportedModuleCallBack fetchImportedModuleCallback;
286281
FetchImportedModuleFromScriptCallBack fetchImportedModuleFromScriptCallback;
287282
NotifyModuleReadyCallback notifyModuleReadyCallback;
288-
HostFinalizeImportMetaCallback hostFinalizeImportMetaCallback;
289-
HostGetImportMetaPropertiesCallback hostGetImportMetaPropertiesCallback;
283+
InitializeImportMetaCallback initializeImportMetaCallback;
290284
};

lib/Jsrt/Core/JsrtCore.cpp

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,7 @@ JsSetModuleHostInfo(
159159
if (moduleHostInfo != JsModuleHostInfo_FetchImportedModuleCallback &&
160160
moduleHostInfo != JsModuleHostInfo_FetchImportedModuleFromScriptCallback &&
161161
moduleHostInfo != JsModuleHostInfo_NotifyModuleReadyCallback &&
162-
moduleHostInfo != JsModuleHostInfo_HostFinalizeImportMetaCallback &&
163-
moduleHostInfo != JsModuleHostInfo_HostGetImportMetaPropertiesCallback)
162+
moduleHostInfo != JsModuleHostInfo_InitializeImportMetaCallback)
164163
{
165164
return JsErrorInvalidArgument;
166165
}
@@ -193,11 +192,8 @@ JsSetModuleHostInfo(
193192
case JsModuleHostInfo_NotifyModuleReadyCallback:
194193
currentContext->GetHostScriptContext()->SetNotifyModuleReadyCallback(reinterpret_cast<NotifyModuleReadyCallback>(hostInfo));
195194
break;
196-
case JsModuleHostInfo_HostFinalizeImportMetaCallback:
197-
currentContext->GetHostScriptContext()->SetHostFinalizeImportMetaCallback(reinterpret_cast<HostFinalizeImportMetaCallback>(hostInfo));
198-
break;
199-
case JsModuleHostInfo_HostGetImportMetaPropertiesCallback:
200-
currentContext->GetHostScriptContext()->SetHostGetImportMetaPropertiesCallback(reinterpret_cast<HostGetImportMetaPropertiesCallback>(hostInfo));
195+
case JsModuleHostInfo_InitializeImportMetaCallback:
196+
currentContext->GetHostScriptContext()->SetInitializeImportMetaCallback(reinterpret_cast<InitializeImportMetaCallback>(hostInfo));
201197
break;
202198
case JsModuleHostInfo_Url:
203199
moduleRecord->SetModuleUrl(hostInfo);
@@ -246,11 +242,8 @@ JsGetModuleHostInfo(
246242
case JsModuleHostInfo_NotifyModuleReadyCallback:
247243
*hostInfo = reinterpret_cast<void*>(currentContext->GetHostScriptContext()->GetNotifyModuleReadyCallback());
248244
break;
249-
case JsModuleHostInfo_HostFinalizeImportMetaCallback:
250-
*hostInfo = reinterpret_cast<void*>(currentContext->GetHostScriptContext()->GetHostFinalizeImportMetaCallback());
251-
break;
252-
case JsModuleHostInfo_HostGetImportMetaPropertiesCallback:
253-
*hostInfo = reinterpret_cast<void*>(currentContext->GetHostScriptContext()->GetHostGetImportMetaPropertiesCallback());
245+
case JsModuleHostInfo_InitializeImportMetaCallback:
246+
*hostInfo = reinterpret_cast<void*>(currentContext->GetHostScriptContext()->GetInitializeImportMetaCallback());
254247
break;
255248
case JsModuleHostInfo_Url:
256249
*hostInfo = reinterpret_cast<void*>(moduleRecord->GetModuleUrl());

lib/Runtime/Base/ScriptContext.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,7 @@ class HostScriptContext
184184
virtual HRESULT FetchImportedModule(Js::ModuleRecordBase* referencingModule, LPCOLESTR specifier, Js::ModuleRecordBase** dependentModuleRecord) = 0;
185185
virtual HRESULT FetchImportedModuleFromScript(DWORD_PTR dwReferencingSourceContext, LPCOLESTR specifier, Js::ModuleRecordBase** dependentModuleRecord) = 0;
186186
virtual HRESULT NotifyHostAboutModuleReady(Js::ModuleRecordBase* referencingModule, Js::Var exceptionVar) = 0;
187-
virtual HRESULT HostFinalizeImportMeta(Js::ModuleRecordBase* referencingModule, Js::Var importMetaObject) = 0;
188-
virtual HRESULT HostGetImportMetaProperties(Js::ModuleRecordBase* referencingModule, Js::Var importMetaObject) = 0;
187+
virtual HRESULT InitializeImportMeta(Js::ModuleRecordBase* referencingModule, Js::Var importMetaObject) = 0;
189188

190189
virtual HRESULT ThrowIfFailed(HRESULT hr) = 0;
191190

lib/Runtime/Language/SourceTextModuleRecord.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1341,16 +1341,10 @@ namespace Js
13411341

13421342
this->importMetaObject = library->CreateObject(library->GetNull());
13431343

1344-
OUTPUT_TRACE_DEBUGONLY(Js::ModulePhase, _u("HostGetImportMetaProperties %s\n"), this->GetSpecifierSz());
1344+
OUTPUT_TRACE_DEBUGONLY(Js::ModulePhase, _u("InitializeImportMeta %s\n"), this->GetSpecifierSz());
13451345
LEAVE_SCRIPT_IF_ACTIVE(scriptContext,
13461346
{
1347-
scriptContext->GetHostScriptContext()->HostGetImportMetaProperties(this, this->importMetaObject);
1348-
});
1349-
1350-
OUTPUT_TRACE_DEBUGONLY(Js::ModulePhase, _u("HostFinalizeImportMeta %s\n"), this->GetSpecifierSz());
1351-
LEAVE_SCRIPT_IF_ACTIVE(scriptContext,
1352-
{
1353-
scriptContext->GetHostScriptContext()->HostFinalizeImportMeta(this, this->importMetaObject);
1347+
scriptContext->GetHostScriptContext()->InitializeImportMeta(this, this->importMetaObject);
13541348
});
13551349

13561350
return this->importMetaObject;

0 commit comments

Comments
 (0)