1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /*
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- #include "JSCExecutorFactory.h"
- #import <React/RCTLog.h>
- #import <jsi/JSCRuntime.h>
- #import <memory>
- namespace facebook {
- namespace react {
- std::unique_ptr<JSExecutor> JSCExecutorFactory::createJSExecutor(
- std::shared_ptr<ExecutorDelegate> delegate,
- std::shared_ptr<MessageQueueThread> __unused jsQueue)
- {
- auto installBindings = [runtimeInstaller = runtimeInstaller_](jsi::Runtime &runtime) {
- react::Logger iosLoggingBinder = [](const std::string &message, unsigned int logLevel) {
- _RCTLogJavaScriptInternal(static_cast<RCTLogLevel>(logLevel), [NSString stringWithUTF8String:message.c_str()]);
- };
- react::bindNativeLogger(runtime, iosLoggingBinder);
- react::PerformanceNow iosPerformanceNowBinder = []() {
- // CACurrentMediaTime() returns the current absolute time, in seconds
- return CACurrentMediaTime() * 1000;
- };
- react::bindNativePerformanceNow(runtime, iosPerformanceNowBinder);
- // Wrap over the original runtimeInstaller
- if (runtimeInstaller) {
- runtimeInstaller(runtime);
- }
- };
- return std::make_unique<JSIExecutor>(
- facebook::jsc::makeJSCRuntime(), delegate, JSIExecutor::defaultTimeoutInvoker, std::move(installBindings));
- }
- } // namespace react
- } // namespace facebook
|