| 727 | auto javaEnv = ValdiAndroid::JavaEnv(); |
| 728 | auto javaArray = ValdiAndroid::toJavaObject(javaEnv, values); |
| 729 | return javaArray.releaseObject(); |
| 730 | } |
| 731 | |
| 732 | jint 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 | } |
nothing calls this directly
no test coverage detected