| 531 | |
| 532 | std::unique_ptr<JavaScriptRuntimeDeserializers> runtimeDeserializers; |
| 533 | |
| 534 | IJavaScriptContextConfig config; |
| 535 | |
| 536 | JSExceptionTracker exceptionTracker(*jsContext); |
| 537 | jsContext->initialize(config, exceptionTracker); |
| 538 | |
| 539 | if (exceptionTracker) { |
| 540 | jsContext->startDebugger(_isWorker); |
| 541 | |
| 542 | runtimeDeserializers = |
| 543 | std::make_unique<JavaScriptRuntimeDeserializers>(*jsContext, _stringCache, getStyleAttributesCache()); |
| 544 | buildContext(*jsContext, runtimeTweaks, exceptionTracker); |
| 545 | } |
| 546 | |
| 547 | if (exceptionTracker) { |
| 548 | _javaScriptContext = std::move(jsContext); |
| 549 | _runtimeDeserializers = std::move(runtimeDeserializers); |
| 550 | _propertyNameIndex.setContext(_javaScriptContext.get()); |
| 551 | return Void(); |
| 552 | } else { |
| 553 | return exceptionTracker.extractError(); |
| 554 | } |
| 555 | } |
| 556 | |
| 557 | const Ref<DispatchQueue>& JavaScriptRuntime::getJsDispatchQueue() const { |
| 558 | return _dispatchQueue; |
| 559 | } |
| 560 | |
| 561 | void JavaScriptRuntime::setValueToGlobalObject(const StringBox& name, const Value& value) { |
| 562 | dispatchOnJsThreadUnattributed([=](JavaScriptEntryParameters& entry) { |
| 563 | auto globalKey = STRING_LITERAL("global"); |
| 564 | auto jsValueResult = valueToJSValue(entry.jsContext, |
| 565 | value, |
| 566 | ReferenceInfoBuilder().withObject(globalKey).withProperty(name), |
| 567 | entry.exceptionTracker); |
| 568 | if (!entry.exceptionTracker) { |
nothing calls this directly
no test coverage detected