MCPcopy Create free account
hub / github.com/Snapchat/Valdi / runtimePostMessage

Method runtimePostMessage

valdi/src/valdi/runtime/JavaScript/JavaScriptRuntime.cpp:567–619  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

565
566 auto jsContext = _javaScriptBridge.createJsContext(this, *_logger);
567
568 std::unique_ptr<JavaScriptRuntimeDeserializers> runtimeDeserializers;
569
570 IJavaScriptContextConfig config;
571
572 JSExceptionTracker exceptionTracker(*jsContext);
573 jsContext->initialize(config, exceptionTracker);
574
575 if (exceptionTracker) {
576 jsContext->startDebugger(_isWorker);
577
578 runtimeDeserializers =
579 std::make_unique<JavaScriptRuntimeDeserializers>(*jsContext, _stringCache, getStyleAttributesCache());
580 buildContext(*jsContext, runtimeTweaks, exceptionTracker);
581 }
582
583 if (exceptionTracker) {
584 {
585 std::lock_guard<Mutex> lock(_mutex);
586 _javaScriptContext = std::move(jsContext);
587 }
588 _runtimeDeserializers = std::move(runtimeDeserializers);
589 _propertyNameIndex.setContext(_javaScriptContext.get());
590 return Void();
591 } else {
592 return exceptionTracker.extractError();
593 }
594}
595
596const Ref<DispatchQueue>& JavaScriptRuntime::getJsDispatchQueue() const {
597 return _dispatchQueue;
598}
599
600void JavaScriptRuntime::setValueToGlobalObject(const StringBox& name, const Value& value) {
601 dispatchOnJsThreadUnattributed([=](JavaScriptEntryParameters& entry) {
602 auto globalKey = STRING_LITERAL("global");
603 auto jsValueResult = valueToJSValue(entry.jsContext,
604 value,
605 ReferenceInfoBuilder().withObject(globalKey).withProperty(name),
606 entry.exceptionTracker);
607 if (!entry.exceptionTracker) {
608 onRecoverableError("setValueToGlobalObject", entry.exceptionTracker);
609 return;
610 }
611
612 auto globalObject = entry.jsContext.getGlobalObject(entry.exceptionTracker);
613 if (!entry.exceptionTracker) {
614 onRecoverableError("setValueToGlobalObject", entry.exceptionTracker);
615 return;
616 }
617
618 entry.jsContext.setObjectProperty(
619 globalObject.get(), name.toStringView(), jsValueResult.get(), true, entry.exceptionTracker);
620 if (!entry.exceptionTracker) {
621 onRecoverableError("setValueToGlobalObject", entry.exceptionTracker);
622 return;

Callers

nothing calls this directly

Calls 15

getParameterAsContextIdFunction · 0.85
dispatchOnMainThreadFunction · 0.85
valueTypeToStringFunction · 0.85
getParameterAsValueMethod · 0.80
getArrayRefMethod · 0.80
newUndefinedMethod · 0.80
getMapMethod · 0.65
throwErrorMethod · 0.65
endMethod · 0.65
ErrorInterface · 0.50
getParameterAsStringMethod · 0.45

Tested by

no test coverage detected