| 1843 | } |
| 1844 | |
| 1845 | jlong ValdiAndroid::NativeBridge::createViewFactory( // NOLINT |
| 1846 | fbjni::alias_ref<fbjni::JClass> /* clazz */, // NOLINT |
| 1847 | jlong runtimeManagerHandle, |
| 1848 | jstring viewClassName, |
| 1849 | jobject viewFactory, |
| 1850 | jboolean hasBindAttributes) { |
| 1851 | auto* runtimeManagerWrapper = getRuntimeManagerWrapper(runtimeManagerHandle); |
| 1852 | if (runtimeManagerWrapper == nullptr) { |
| 1853 | return 0; |
| 1854 | } |
| 1855 | |
| 1856 | const auto& viewManagerContext = runtimeManagerWrapper->getAndroidViewManagerContext(); |
| 1857 | auto& androidViewManager = runtimeManagerWrapper->getAndroidViewManager(); |
| 1858 | |
| 1859 | auto javaEnv = ValdiAndroid::JavaEnv(); |
| 1860 | |
| 1861 | auto cppViewClassName = ValdiAndroid::toInternedString(javaEnv, viewClassName); |
| 1862 | |
| 1863 | auto viewFactoryObject = ValdiAndroid::GlobalRefJavaObjectBase(javaEnv, viewFactory, "ViewFactory"); |
| 1864 | |
| 1865 | auto attributes = viewManagerContext->getAttributesManager().getAttributesForClass(cppViewClassName); |
| 1866 | |
| 1867 | if (hasBindAttributes == JNI_TRUE) { |
| 1868 | Valdi::AttributesBindingContextImpl bindingContext(viewManagerContext->getAttributesManager().getAttributeIds(), |
| 1869 | viewManagerContext->getAttributesManager().getColorPalette(), |
| 1870 | runtimeManagerWrapper->getRuntimeManager().getLogger()); |
| 1871 | |
| 1872 | auto wrapper = Valdi::makeShared<AttributesBindingContextWrapper>(androidViewManager, bindingContext); |
| 1873 | auto ptr = reinterpret_cast<int64_t>(Valdi::unsafeBridgeCast(wrapper.get())); |
| 1874 | |
| 1875 | ValdiAndroid::JavaEnv::getCache().getViewFactoryBindAttributesMethod().call(viewFactoryObject.toObject(), ptr); |
| 1876 | |
| 1877 | attributes = attributes->merge(cppViewClassName, |
| 1878 | bindingContext.getHandlers(), |
| 1879 | bindingContext.getDefaultDelegate(), |
| 1880 | bindingContext.getMeasureDelegate(), |
| 1881 | bindingContext.scrollAttributesBound(), |
| 1882 | true); |
| 1883 | } |
| 1884 | |
| 1885 | auto viewFactoryCpp = Valdi::makeShared<AndroidViewFactory>( |
| 1886 | std::move(viewFactoryObject), cppViewClassName, androidViewManager, attributes, true); |
| 1887 | |
| 1888 | auto* value = new Valdi::Value(viewFactoryCpp); |
| 1889 | return reinterpret_cast<jlong>(value); |
| 1890 | } |
| 1891 | |
| 1892 | void ValdiAndroid::NativeBridge::registerLocalViewFactory( // NOLINT |
| 1893 | fbjni::alias_ref<fbjni::JClass> /* clazz */, // NOLINT |
nothing calls this directly
no test coverage detected