From ca6fc05ecb5eef859cb9ea081f98ca4aa1d6ed6b Mon Sep 17 00:00:00 2001 From: zhongwuzw Date: Tue, 25 Dec 2018 18:20:43 +0800 Subject: [PATCH] [iOS] Fix isBatchActive of RCTCxxBridge --- React/CxxBridge/RCTCxxBridge.mm | 3 +-- ReactCommon/cxxreact/Instance.cpp | 4 ++++ ReactCommon/cxxreact/Instance.h | 1 + ReactCommon/cxxreact/NativeToJsBridge.cpp | 8 ++++++++ ReactCommon/cxxreact/NativeToJsBridge.h | 1 + 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm index 353bbce40f4f..d2e33faec47e 100644 --- a/React/CxxBridge/RCTCxxBridge.mm +++ b/React/CxxBridge/RCTCxxBridge.mm @@ -170,7 +170,6 @@ void onBatchComplete() override { @implementation RCTCxxBridge { - BOOL _wasBatchActive; BOOL _didInvalidate; BOOL _moduleRegistryCreated; @@ -1360,7 +1359,7 @@ - (void)stopProfiling:(void (^)(NSData *))callback - (BOOL)isBatchActive { - return _wasBatchActive; + return _reactInstance ? _reactInstance->isBatchActive() : NO; } - (void *)runtime diff --git a/ReactCommon/cxxreact/Instance.cpp b/ReactCommon/cxxreact/Instance.cpp index a49f1d60d9f5..23723fbbe27b 100644 --- a/ReactCommon/cxxreact/Instance.cpp +++ b/ReactCommon/cxxreact/Instance.cpp @@ -149,6 +149,10 @@ void *Instance::getJavaScriptContext() { bool Instance::isInspectable() { return nativeToJsBridge_ ? nativeToJsBridge_->isInspectable() : false; } + +bool Instance::isBatchActive() { + return nativeToJsBridge_ ? nativeToJsBridge_->isBatchActive() : false; +} void Instance::callJSFunction(std::string &&module, std::string &&method, folly::dynamic &¶ms) { diff --git a/ReactCommon/cxxreact/Instance.h b/ReactCommon/cxxreact/Instance.h index 654fa929e9bf..72a5a7ee8360 100644 --- a/ReactCommon/cxxreact/Instance.h +++ b/ReactCommon/cxxreact/Instance.h @@ -58,6 +58,7 @@ class RN_EXPORT Instance { std::unique_ptr jsonValue); void *getJavaScriptContext(); bool isInspectable(); + bool isBatchActive(); void callJSFunction(std::string &&module, std::string &&method, folly::dynamic &¶ms); void callJSCallback(uint64_t callbackId, folly::dynamic &¶ms); diff --git a/ReactCommon/cxxreact/NativeToJsBridge.cpp b/ReactCommon/cxxreact/NativeToJsBridge.cpp index a9b7161df734..4cb428d9750d 100644 --- a/ReactCommon/cxxreact/NativeToJsBridge.cpp +++ b/ReactCommon/cxxreact/NativeToJsBridge.cpp @@ -37,6 +37,10 @@ class JsToNativeBridge : public react::ExecutorDelegate { std::shared_ptr getModuleRegistry() override { return m_registry; } + + bool isBatchActive() { + return m_batchHadNativeModuleCalls; + } void callNativeModules( JSExecutor& executor, folly::dynamic&& calls, bool isEndOfBatch) override { @@ -222,6 +226,10 @@ void* NativeToJsBridge::getJavaScriptContext() { bool NativeToJsBridge::isInspectable() { return m_executor->isInspectable(); } + +bool NativeToJsBridge::isBatchActive() { + return m_delegate->isBatchActive(); +} void NativeToJsBridge::handleMemoryPressure(int pressureLevel) { runOnExecutorQueue([=] (JSExecutor* executor) { diff --git a/ReactCommon/cxxreact/NativeToJsBridge.h b/ReactCommon/cxxreact/NativeToJsBridge.h index 8c99d89ac589..cc30054acd5b 100644 --- a/ReactCommon/cxxreact/NativeToJsBridge.h +++ b/ReactCommon/cxxreact/NativeToJsBridge.h @@ -75,6 +75,7 @@ class NativeToJsBridge { void setGlobalVariable(std::string propName, std::unique_ptr jsonValue); void* getJavaScriptContext(); bool isInspectable(); + bool isBatchActive(); void handleMemoryPressure(int pressureLevel);