#pragma once #include #include #include "asset_manager.hpp" #include namespace mbgl { template class Actor; class ResourceTransform; using mbgl::PathChangeCallback; namespace android { /** * Peer class for the Android FileSource holder. Ensures that a single DefaultFileSource is used */ class FileSource { public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/storage/FileSource"; }; struct ResourceTransformCallback { static constexpr auto Name() { return "com/mapbox/mapboxsdk/storage/FileSource$ResourceTransformCallback"; } static std::string onURL(jni::JNIEnv&, const jni::Object&, int, std::string); }; struct ResourcesCachePathChangeCallback { static constexpr auto Name() { return "com/mapbox/mapboxsdk/storage/FileSource$ResourcesCachePathChangeCallback";} static void onSuccess(jni::JNIEnv&, const jni::Object&, const jni::String&); static void onError(jni::JNIEnv&, const jni::Object&, const jni::String&); }; FileSource(jni::JNIEnv&, const jni::String&, const jni::String&); ~FileSource(); jni::Local getAccessToken(jni::JNIEnv&); void setAccessToken(jni::JNIEnv&, const jni::String&); void setAPIBaseUrl(jni::JNIEnv&, const jni::String&); void setResourceTransform(jni::JNIEnv&, const jni::Object&); void setResourceCachePath(jni::JNIEnv&, const jni::String&, const jni::Object&); void resume(jni::JNIEnv&); void pause(jni::JNIEnv&); jni::jboolean isResumed(jni::JNIEnv&); static FileSource* getNativePeer(jni::JNIEnv&, const jni::Object&); static mbgl::ResourceOptions getSharedResourceOptions(jni::JNIEnv&, const jni::Object&); static void registerNative(jni::JNIEnv&); private: const std::string DATABASE_FILE = "/mbgl-offline.db"; optional activationCounter; mbgl::ResourceOptions resourceOptions; std::unique_ptr> resourceTransform; std::unique_ptr> pathChangeCallback; std::shared_ptr fileSource; }; } // namespace android } // namespace mbgl