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

Method performViewNodeAction

valdi/src/valdi/android/NativeBridge.cpp:729–772  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

727 auto javaEnv = ValdiAndroid::JavaEnv();
728 auto javaArray = ValdiAndroid::toJavaObject(javaEnv, values);
729 return javaArray.releaseObject();
730}
731
732jint ValdiAndroid::NativeBridge::performViewNodeAction( // NOLINT
733 fbjni::alias_ref<fbjni::JClass> /* clazz */, // NOLINT
734 jlong viewNodeHandle,
735 jint action,
736 jint param1,
737 jint param2) {
738 static constexpr jint kActionEnsureFrameIsVisibleWithinParentScrolls = 1;
739 static constexpr jint kActionScrollByOnePage = 2;
740
741 auto viewNode = getViewNode(viewNodeHandle);
742 if (viewNode == nullptr) {
743 return 0;
744 }
745
746 jint handled = 0;
747
748 auto* viewNodeTree = viewNode->getViewNodeTree();
749
750 if (viewNodeTree == nullptr) {
751 // TODO: is this a valid state?
752 return 0;
753 }
754
755 viewNodeTree->withLock([&]() {
756 auto& viewTransactionScope = viewNodeTree->getCurrentViewTransactionScope();
757 if (action == kActionEnsureFrameIsVisibleWithinParentScrolls) {
758 auto animated = static_cast<bool>(param1);
759 viewNode->ensureFrameIsVisibleWithinParentScrolls(viewTransactionScope, animated);
760 handled = 0;
761 return;
762 }
763
764 if (action == kActionScrollByOnePage) {
765 auto animated = static_cast<bool>(param1);
766 auto scrollDirection = static_cast<Valdi::ScrollDirection>(param2);
767 bool didScroll =
768 viewNode->scrollByOnePage(viewTransactionScope, scrollDirection, animated, nullptr, nullptr);
769 handled = didScroll ? 1 : 0;
770 return;
771 }
772 });
773
774 return handled;
775}

Callers

nothing calls this directly

Calls 5

getViewNodeFunction · 0.85
getViewNodeTreeMethod · 0.80
withLockMethod · 0.80
scrollByOnePageMethod · 0.80

Tested by

no test coverage detected