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

Method getRetainedViewNodeInContext

valdi/src/valdi/android/NativeBridge.cpp:620–655  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

618}
619
620jlong ValdiAndroid::NativeBridge::getRetainedViewNodeInContext( // NOLINT
621 fbjni::alias_ref<fbjni::JClass> /* clazz */, // NOLINT
622 jlong contextHandle,
623 jstring viewId,
624 jint viewNodeId) {
625 static constexpr jint kRootViewNodeIdSentinel = -1;
626 auto viewNodeTree = getViewNodeTree(contextHandle);
627
628 if (viewNodeTree == nullptr) {
629 return 0;
630 }
631
632 Valdi::Ref<Valdi::ViewNode> viewNode;
633
634 if (viewId != nullptr) {
635 auto* env = fbjni::Environment::current();
636 auto javaEnv = ValdiAndroid::JavaEnv();
637
638 auto viewIdCpp = ValdiAndroid::toInternedString(javaEnv, viewId);
639 auto nodePathResult = Valdi::ViewNodePath::parse(viewIdCpp.toStringView());
640 if (!nodePathResult) {
641 ValdiAndroid::throwJavaValdiException(env, nodePathResult.error());
642 return 0;
643 }
644
645 viewNode = viewNodeTree->getViewNodeForNodePath(nodePathResult.value());
646 } else {
647 if (viewNodeId == kRootViewNodeIdSentinel) {
648 viewNode = viewNodeTree->getRootViewNode();
649 } else {
650 viewNode = viewNodeTree->getViewNode(static_cast<Valdi::RawViewNodeId>(viewNodeId));
651 }
652 }
653
654 return ValdiAndroid::bridgeRetain(viewNode.get());
655}
656
657jobject ValdiAndroid::NativeBridge::getRetainedViewNodeChildren( // NOLINT
658 fbjni::alias_ref<fbjni::JClass> /* clazz */, // NOLINT

Callers

nothing calls this directly

Calls 13

getViewNodeTreeFunction · 0.85
toInternedStringFunction · 0.85
throwJavaValdiExceptionFunction · 0.85
bridgeRetainFunction · 0.85
errorMethod · 0.65
valueMethod · 0.65
getMethod · 0.65
JavaEnvClass · 0.50
parseFunction · 0.50
toStringViewMethod · 0.45
getRootViewNodeMethod · 0.45

Tested by

no test coverage detected