mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Revert D16555673: [RN][TurboModule] Move ownership of TurboModule jni ref to JavaTurboModule
Differential Revision: D16555673 Original commit changeset: 2778fc5a372c fbshipit-source-id: fac3a6ea185acaa750f58e19d24c194668749636
This commit is contained in:
committed by
Facebook Github Bot
parent
6bc0c108eb
commit
af4862ce32
+22
-11
@@ -24,23 +24,23 @@ TurboModuleManager::TurboModuleManager(
|
||||
jni::alias_ref<TurboModuleManager::javaobject> jThis,
|
||||
jsi::Runtime* rt,
|
||||
std::shared_ptr<JSCallInvoker> jsCallInvoker,
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject> tmmDelegate
|
||||
):
|
||||
javaPart_(jni::make_global(jThis)),
|
||||
runtime_(rt),
|
||||
jsCallInvoker_(jsCallInvoker),
|
||||
delegate_(jni::make_global(delegate))
|
||||
turboModuleManagerDelegate_(jni::make_global(tmmDelegate))
|
||||
{}
|
||||
|
||||
jni::local_ref<TurboModuleManager::jhybriddata> TurboModuleManager::initHybrid(
|
||||
jni::alias_ref<jhybridobject> jThis,
|
||||
jlong jsContext,
|
||||
jni::alias_ref<JSCallInvokerHolder::javaobject> jsCallInvokerHolder,
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject> tmmDelegate
|
||||
) {
|
||||
auto jsCallInvoker = jsCallInvokerHolder->cthis()->getJSCallInvoker();
|
||||
|
||||
return makeCxxInstance(jThis, (jsi::Runtime *) jsContext, jsCallInvoker, delegate);
|
||||
return makeCxxInstance(jThis, (jsi::Runtime *) jsContext, jsCallInvoker, tmmDelegate);
|
||||
}
|
||||
|
||||
void TurboModuleManager::registerNatives() {
|
||||
@@ -61,26 +61,23 @@ void TurboModuleManager::installJSIBindings() {
|
||||
return turboModuleLookup->second;
|
||||
}
|
||||
|
||||
auto cxxModule = delegate_->cthis()->getTurboModule(name, jsCallInvoker_);
|
||||
auto cxxModule = turboModuleManagerDelegate_->cthis()->getTurboModule(name, jsCallInvoker_);
|
||||
if (cxxModule) {
|
||||
turboModuleCache_.insert({name, cxxModule});
|
||||
return cxxModule;
|
||||
}
|
||||
|
||||
static auto getLegacyCxxModule = delegate_->getClass()->getMethod<jni::alias_ref<CxxModuleWrapper::javaobject>(const std::string&)>("getLegacyCxxModule");
|
||||
auto legacyCxxModule = getLegacyCxxModule(delegate_.get(), name);
|
||||
|
||||
auto legacyCxxModule = getLegacyCxxJavaModule(name);
|
||||
if (legacyCxxModule) {
|
||||
auto turboModule = std::make_shared<react::TurboCxxModule>(legacyCxxModule->cthis()->getModule(), jsCallInvoker_);
|
||||
turboModuleCache_.insert({name, turboModule});
|
||||
return turboModule;
|
||||
}
|
||||
|
||||
static auto getJavaModule = javaClassStatic()->getMethod<jni::alias_ref<JTurboModule>(const std::string&)>("getJavaModule");
|
||||
auto moduleInstance = getJavaModule(javaPart_.get(), name);
|
||||
auto moduleInstance = getJavaModule(name);
|
||||
|
||||
if (moduleInstance) {
|
||||
auto turboModule = delegate_->cthis()->getTurboModule(name, moduleInstance, jsCallInvoker_);
|
||||
auto turboModule = turboModuleManagerDelegate_->cthis()->getTurboModule(name, moduleInstance, jsCallInvoker_);
|
||||
turboModuleCache_.insert({name, turboModule});
|
||||
return turboModule;
|
||||
}
|
||||
@@ -90,5 +87,19 @@ void TurboModuleManager::installJSIBindings() {
|
||||
);
|
||||
}
|
||||
|
||||
jni::global_ref<JTurboModule> TurboModuleManager::getJavaModule(std::string name) {
|
||||
static auto method = javaClassStatic()->getMethod<jni::alias_ref<JTurboModule>(const std::string&)>("getJavaModule");
|
||||
|
||||
auto module = jni::make_global(method(javaPart_.get(), name));
|
||||
|
||||
return module;
|
||||
}
|
||||
|
||||
jni::global_ref<CxxModuleWrapper::javaobject> TurboModuleManager::getLegacyCxxJavaModule(std::string name) {
|
||||
static auto method = turboModuleManagerDelegate_->getClass()->getMethod<jni::alias_ref<CxxModuleWrapper::javaobject>(const std::string&)>("getLegacyCxxModule");
|
||||
auto module = jni::make_global(method(turboModuleManagerDelegate_.get(), name));
|
||||
return module;
|
||||
}
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
||||
|
||||
+5
-3
@@ -28,7 +28,7 @@ public:
|
||||
jni::alias_ref<jhybridobject> jThis,
|
||||
jlong jsContext,
|
||||
jni::alias_ref<JSCallInvokerHolder::javaobject> jsCallInvokerHolder,
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject> tmmDelegate
|
||||
);
|
||||
static void registerNatives();
|
||||
private:
|
||||
@@ -36,7 +36,7 @@ private:
|
||||
jni::global_ref<TurboModuleManager::javaobject> javaPart_;
|
||||
jsi::Runtime* runtime_;
|
||||
std::shared_ptr<JSCallInvoker> jsCallInvoker_;
|
||||
jni::global_ref<TurboModuleManagerDelegate::javaobject> delegate_;
|
||||
jni::global_ref<TurboModuleManagerDelegate::javaobject> turboModuleManagerDelegate_;
|
||||
|
||||
/**
|
||||
* TODO(T48018690):
|
||||
@@ -46,12 +46,14 @@ private:
|
||||
*/
|
||||
std::unordered_map<std::string, std::shared_ptr<react::TurboModule>> turboModuleCache_;
|
||||
|
||||
jni::global_ref<JTurboModule> getJavaModule(std::string name);
|
||||
jni::global_ref<CxxModuleWrapper::javaobject> getLegacyCxxJavaModule(std::string name);
|
||||
void installJSIBindings();
|
||||
explicit TurboModuleManager(
|
||||
jni::alias_ref<TurboModuleManager::jhybridobject> jThis,
|
||||
jsi::Runtime *rt,
|
||||
std::shared_ptr<JSCallInvoker> jsCallInvoker,
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject> tmmDelegate
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ class TurboModuleManagerDelegate : public jni::HybridClass<TurboModuleManagerDel
|
||||
public:
|
||||
static auto constexpr kJavaDescriptor = "Lcom/facebook/react/turbomodule/core/TurboModuleManagerDelegate;";
|
||||
|
||||
virtual std::shared_ptr<TurboModule> getTurboModule(std::string name, jni::alias_ref<JTurboModule> turboModule, std::shared_ptr<JSCallInvoker> jsInvoker) = 0;
|
||||
virtual std::shared_ptr<TurboModule> getTurboModule(std::string name, jni::global_ref<JTurboModule> turboModule, std::shared_ptr<JSCallInvoker> jsInvoker) = 0;
|
||||
virtual std::shared_ptr<TurboModule> getTurboModule(std::string name, std::shared_ptr<JSCallInvoker> jsInvoker) = 0;
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user