summaryrefslogtreecommitdiff
path: root/platform/android/src/offline/offline_region.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/offline/offline_region.cpp')
-rw-r--r--platform/android/src/offline/offline_region.cpp26
1 files changed, 17 insertions, 9 deletions
diff --git a/platform/android/src/offline/offline_region.cpp b/platform/android/src/offline/offline_region.cpp
index 4276ce8f45..4ee835bab3 100644
--- a/platform/android/src/offline/offline_region.cpp
+++ b/platform/android/src/offline/offline_region.cpp
@@ -1,5 +1,6 @@
#include "offline_region.hpp"
+#include <mbgl/storage/file_source_manager.hpp>
#include <mbgl/util/logging.hpp>
#include <mbgl/util/string.hpp>
@@ -14,8 +15,13 @@ namespace android {
// OfflineRegion //
OfflineRegion::OfflineRegion(jni::JNIEnv& env, jni::jlong offlineRegionPtr, const jni::Object<FileSource>& jFileSource)
- : region(reinterpret_cast<mbgl::OfflineRegion *>(offlineRegionPtr))
- , fileSource(std::static_pointer_cast<DefaultFileSource>(mbgl::FileSource::getSharedFileSource(FileSource::getSharedResourceOptions(env, jFileSource)))) {}
+ : region(reinterpret_cast<mbgl::OfflineRegion*>(offlineRegionPtr)),
+ fileSource(std::static_pointer_cast<mbgl::DatabaseFileSource>(mbgl::FileSourceManager::get()->getFileSource(
+ mbgl::FileSourceType::Database, FileSource::getSharedResourceOptions(env, jFileSource)))) {
+ if (!fileSource) {
+ ThrowNew(env, jni::FindClass(env, "java/lang/IllegalStateException"), "Offline functionality is disabled.");
+ }
+}
OfflineRegion::~OfflineRegion() {}
@@ -159,15 +165,17 @@ void OfflineRegion::updateOfflineRegionMetadata(jni::JNIEnv& env_, const jni::Ar
});
}
-jni::Local<jni::Object<OfflineRegion>> OfflineRegion::New(jni::JNIEnv& env, const jni::Object<FileSource>& jFileSource, mbgl::OfflineRegion region) {
-
+jni::Local<jni::Object<OfflineRegion>> OfflineRegion::New(jni::JNIEnv& env,
+ const jni::Object<FileSource>& jFileSource,
+ mbgl::OfflineRegion region) {
// Definition
auto definition = region.getDefinition().match(
- [&](const mbgl::OfflineTilePyramidRegionDefinition def) {
- return OfflineTilePyramidRegionDefinition::New(env, def);
- }, [&](const mbgl::OfflineGeometryRegionDefinition def) {
- return OfflineGeometryRegionDefinition::New(env, def);
- });
+ [&](const mbgl::OfflineTilePyramidRegionDefinition def) {
+ return OfflineTilePyramidRegionDefinition::New(env, def);
+ },
+ [&](const mbgl::OfflineGeometryRegionDefinition def) {
+ return OfflineGeometryRegionDefinition::New(env, def);
+ });
// Create region java object
static auto& javaClass = jni::Class<OfflineRegion>::Singleton(env);