summaryrefslogtreecommitdiff
path: root/platform/android/src/offline
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/offline')
-rw-r--r--platform/android/src/offline/offline_manager.cpp9
-rw-r--r--platform/android/src/offline/offline_manager.hpp4
-rw-r--r--platform/android/src/offline/offline_region.cpp26
-rw-r--r--platform/android/src/offline/offline_region.hpp2
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