diff options
Diffstat (limited to 'platform/android/src/offline')
-rw-r--r-- | platform/android/src/offline/offline_manager.cpp | 9 | ||||
-rw-r--r-- | platform/android/src/offline/offline_manager.hpp | 4 | ||||
-rw-r--r-- | platform/android/src/offline/offline_region.cpp | 26 | ||||
-rw-r--r-- | platform/android/src/offline/offline_region.hpp | 2 |
4 files changed, 27 insertions, 14 deletions
diff --git a/platform/android/src/offline/offline_manager.cpp b/platform/android/src/offline/offline_manager.cpp index be864e18aa..98f2b88a7f 100644 --- a/platform/android/src/offline/offline_manager.cpp +++ b/platform/android/src/offline/offline_manager.cpp @@ -1,5 +1,7 @@ #include "offline_manager.hpp" +#include <mbgl/storage/file_source_manager.hpp> +#include <mbgl/storage/resource.hpp> #include <mbgl/util/string.hpp> #include "../attach_env.hpp" @@ -23,7 +25,12 @@ void handleException(std::exception_ptr exception, // OfflineManager // OfflineManager::OfflineManager(jni::JNIEnv& env, const jni::Object<FileSource>& jFileSource) - : fileSource(std::static_pointer_cast<DefaultFileSource>(mbgl::FileSource::getSharedFileSource(FileSource::getSharedResourceOptions(env, jFileSource)))) {} + : 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."); + } +} OfflineManager::~OfflineManager() {} diff --git a/platform/android/src/offline/offline_manager.hpp b/platform/android/src/offline/offline_manager.hpp index 0af92f8115..84111a7423 100644 --- a/platform/android/src/offline/offline_manager.hpp +++ b/platform/android/src/offline/offline_manager.hpp @@ -12,8 +12,6 @@ namespace mbgl { -class DefaultFileSource; - namespace android { class OfflineManager { @@ -106,7 +104,7 @@ public: void runPackDatabaseAutomatically(jni::JNIEnv&, jboolean autopack); private: - std::shared_ptr<mbgl::DefaultFileSource> fileSource; + std::shared_ptr<mbgl::DatabaseFileSource> fileSource; }; } // namespace android 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); diff --git a/platform/android/src/offline/offline_region.hpp b/platform/android/src/offline/offline_region.hpp index dda253469e..6844008bb4 100644 --- a/platform/android/src/offline/offline_region.hpp +++ b/platform/android/src/offline/offline_region.hpp @@ -85,7 +85,7 @@ public: private: std::unique_ptr<mbgl::OfflineRegion> region; - std::shared_ptr<mbgl::DefaultFileSource> fileSource; + std::shared_ptr<mbgl::DatabaseFileSource> fileSource; }; } // namespace android |