| 2006 | } |
| 2007 | |
| 2008 | jobject ValdiAndroid::NativeBridge::getModuleEntry( // NOLINT |
| 2009 | fbjni::alias_ref<fbjni::JClass> /*clazz*/, // NOLINT |
| 2010 | jlong runtimeHandle, |
| 2011 | jstring moduleName, |
| 2012 | jstring path, |
| 2013 | jboolean saveToDisk) { |
| 2014 | auto* runtimeWrapper = getRuntimeWrapper(runtimeHandle); |
| 2015 | if (runtimeWrapper == nullptr) { |
| 2016 | return nullptr; |
| 2017 | } |
| 2018 | |
| 2019 | auto moduleNameCpp = ValdiAndroid::toInternedString(ValdiAndroid::JavaEnv(), moduleName); |
| 2020 | auto pathCpp = ValdiAndroid::toInternedString(ValdiAndroid::JavaEnv(), path); |
| 2021 | auto bundle = runtimeWrapper->getRuntime().getResourceManager().getBundle(moduleNameCpp); |
| 2022 | auto entry = bundle->getEntry(pathCpp); |
| 2023 | if (!entry) { |
| 2024 | return nullptr; |
| 2025 | } |
| 2026 | |
| 2027 | if (saveToDisk != 0) { |
| 2028 | Valdi::Path path(".valdi_extracted_module"); |
| 2029 | path.append(moduleNameCpp.toStringView()).append(pathCpp.toStringView()); |
| 2030 | const auto& diskCache = runtimeWrapper->getRuntime().getDiskCache(); |
| 2031 | auto result = diskCache->store(path, entry.value()); |
| 2032 | if (!result) { |
| 2033 | ValdiAndroid::throwJavaValdiException(fbjni::Environment::current(), result.error()); |
| 2034 | return nullptr; |
| 2035 | } |
| 2036 | |
| 2037 | auto filePath = diskCache->getAbsoluteURL(path).substring(std::string_view("file://").length()); |
| 2038 | return newJavaStringUTF8(filePath.toStringView()).release(); |
| 2039 | } else { |
| 2040 | return newJavaByteArray(entry.value().data(), entry.value().size()).release(); |
| 2041 | } |
| 2042 | } |
| 2043 | |
| 2044 | // NOLINTNEXTLINE |
| 2045 | jdouble ValdiAndroid::NativeBridge::getCurrentEventTime(fbjni::alias_ref<fbjni::JClass> /*clazz*/) { |
nothing calls this directly
no test coverage detected