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

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