diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-11-25 11:21:15 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-12-02 13:46:51 +0200 |
commit | 0ec01356d854caf3159e0eec6d4fbdd3d2200359 (patch) | |
tree | 67f3e88a30b2a7d815239fda0cbbe8e546d3ba4b /platform/android | |
parent | b2693f9d539a1f54419cd948cbc5b5f8e2155df7 (diff) | |
download | qtlocation-mapboxgl-0ec01356d854caf3159e0eec6d4fbdd3d2200359.tar.gz |
Revert "[android] Add OfflineRegion.deleteAndSkipPackDatabase"
This reverts commit 9bc3aa46384229778853c2710e5b06259b78ed18.
Diffstat (limited to 'platform/android')
3 files changed, 35 insertions, 96 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java index b188d60a9e..f13128da63 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java @@ -401,55 +401,7 @@ public class OfflineRegion { if (!isDeleted) { isDeleted = true; fileSource.activate(); - deleteOfflineRegion(true /*pack*/, new OfflineRegionDeleteCallback() { - @Override - public void onDelete() { - handler.post(new Runnable() { - @Override - public void run() { - fileSource.deactivate(); - callback.onDelete(); - OfflineRegion.this.finalize(); - } - }); - } - - @Override - public void onError(final String error) { - handler.post(new Runnable() { - @Override - public void run() { - isDeleted = false; - fileSource.deactivate(); - callback.onError(error); - } - }); - } - }); - } - } - - /** - * Same as {@link OfflineRegion#delete} but skipping database file packing for performance reasons. - * <p> - * Database file packing can be done later with {@link OfflineManager#packDatabase}. - * This method is a useful optimization e.g. when several regions should be deleted in a row. - * </p> - * <p> - * When the operation is complete or encounters an error, the given callback will be - * executed on the main thread. - * </p> - * <p> - * After you call this method, you may not call any additional methods on this object. - * </p> - * - * @param callback the callback to be invoked - */ - public void deleteAndSkipPackDatabase(@NonNull final OfflineRegionDeleteCallback callback) { - if (!isDeleted) { - isDeleted = true; - fileSource.activate(); - deleteOfflineRegion(false /*pack*/, new OfflineRegionDeleteCallback() { + deleteOfflineRegion(new OfflineRegionDeleteCallback() { @Override public void onDelete() { handler.post(new Runnable() { @@ -569,7 +521,7 @@ public class OfflineRegion { private native void getOfflineRegionStatus(OfflineRegionStatusCallback callback); @Keep - private native void deleteOfflineRegion(boolean pack, OfflineRegionDeleteCallback callback); + private native void deleteOfflineRegion(OfflineRegionDeleteCallback callback); @Keep private native void updateOfflineRegionMetadata(byte[] metadata, OfflineRegionUpdateMetadataCallback callback); diff --git a/platform/android/src/offline/offline_region.cpp b/platform/android/src/offline/offline_region.cpp index 264b821636..ac9f491ab6 100644 --- a/platform/android/src/offline/offline_region.cpp +++ b/platform/android/src/offline/offline_region.cpp @@ -101,51 +101,40 @@ void OfflineRegion::getOfflineRegionStatus(jni::JNIEnv& env_, const jni::Object< }); } -namespace { -// Reattach, the callback comes from a different thread -void handleException(std::exception_ptr exception, - const jni::Object<OfflineRegion::OfflineRegionDeleteCallback>& callback, - android::UniqueEnv env = android::AttachEnv()) { - if (exception) { - OfflineRegion::OfflineRegionDeleteCallback::onError(*env, callback, exception); - } else { - OfflineRegion::OfflineRegionDeleteCallback::onDelete(*env, callback); - } -} -} // namespace - -void OfflineRegion::deleteOfflineRegion(jni::JNIEnv& env_, - jni::jboolean pack, - const jni::Object<OfflineRegionDeleteCallback>& callback_) { +void OfflineRegion::deleteOfflineRegion(jni::JNIEnv& env_, const jni::Object<OfflineRegionDeleteCallback>& callback_) { auto globalCallback = jni::NewGlobal<jni::EnvAttachingDeleter>(env_, callback_); - fileSource->deleteOfflineRegion( - std::move(*region), - [ - // Ensure the object is not gc'd in the meanwhile - callback = std::make_shared<decltype(globalCallback)>(std::move(globalCallback))]( - std::exception_ptr error) mutable { handleException(error, *callback); }, - pack); + fileSource->deleteOfflineRegion(std::move(*region), [ + //Ensure the object is not gc'd in the meanwhile + callback = std::make_shared<decltype(globalCallback)>(std::move(globalCallback)) + ](std::exception_ptr error) mutable { + // Reattach, the callback comes from a different thread + android::UniqueEnv env = android::AttachEnv(); + + if (error) { + OfflineRegionDeleteCallback::onError(*env, *callback, error); + } else { + OfflineRegionDeleteCallback::onDelete(*env, *callback); + } + }); } -void OfflineRegion::invalidateOfflineRegion(jni::JNIEnv& env_, - const jni::Object<OfflineRegionInvalidateCallback>& callback_) { +void OfflineRegion::invalidateOfflineRegion(jni::JNIEnv& env_, const jni::Object<OfflineRegionInvalidateCallback>& callback_) { auto globalCallback = jni::NewGlobal<jni::EnvAttachingDeleter>(env_, callback_); - fileSource->invalidateOfflineRegion(*region, - [ - // Ensure the object is not gc'd in the meanwhile - callback = std::make_shared<decltype(globalCallback)>( - std::move(globalCallback))](std::exception_ptr error) mutable { - // Reattach, the callback comes from a different thread - android::UniqueEnv env = android::AttachEnv(); - - if (error) { - OfflineRegionInvalidateCallback::onError(*env, *callback, error); - } else { - OfflineRegionInvalidateCallback::onInvalidate(*env, *callback); - } - }); + fileSource->invalidateOfflineRegion(*region, [ + //Ensure the object is not gc'd in the meanwhile + callback = std::make_shared<decltype(globalCallback)>(std::move(globalCallback)) + ](std::exception_ptr error) mutable { + // Reattach, the callback comes from a different thread + android::UniqueEnv env = android::AttachEnv(); + + if (error) { + OfflineRegionInvalidateCallback::onError(*env, *callback, error); + } else { + OfflineRegionInvalidateCallback::onInvalidate(*env, *callback); + } + }); } void OfflineRegion::updateOfflineRegionMetadata(jni::JNIEnv& env_, const jni::Array<jni::jbyte>& jMetadata, const jni::Object<OfflineRegionUpdateMetadataCallback>& callback_) { @@ -217,10 +206,7 @@ void OfflineRegion::registerNative(jni::JNIEnv& env) { #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - jni::RegisterNativePeer<OfflineRegion>( - env, - javaClass, - "nativePtr", + jni::RegisterNativePeer<OfflineRegion>( env, javaClass, "nativePtr", jni::MakePeer<OfflineRegion, jni::jlong, const jni::Object<FileSource>&>, "initialize", "finalize", @@ -229,7 +215,8 @@ void OfflineRegion::registerNative(jni::JNIEnv& env) { METHOD(&OfflineRegion::getOfflineRegionStatus, "getOfflineRegionStatus"), METHOD(&OfflineRegion::deleteOfflineRegion, "deleteOfflineRegion"), METHOD(&OfflineRegion::invalidateOfflineRegion, "invalidateOfflineRegion"), - METHOD(&OfflineRegion::updateOfflineRegionMetadata, "updateOfflineRegionMetadata")); + METHOD(&OfflineRegion::updateOfflineRegionMetadata, "updateOfflineRegionMetadata") + ); } // OfflineRegionObserver // @@ -240,7 +227,7 @@ void OfflineRegion::OfflineRegionStatusCallback::onError(jni::JNIEnv& env, const jni::Object<OfflineRegion::OfflineRegionStatusCallback>& callback, std::exception_ptr error) { static auto& javaClass = jni::Class<OfflineRegion::OfflineRegionStatusCallback>::Singleton(env); - static auto method = javaClass.GetMethod<void(jni::String)>(env, "onError"); + static auto method = javaClass.GetMethod<void (jni::String)>(env, "onError"); callback.Call(env, method, jni::Make<jni::String>(env, mbgl::util::toString(error))); } diff --git a/platform/android/src/offline/offline_region.hpp b/platform/android/src/offline/offline_region.hpp index 2c92951f69..dda253469e 100644 --- a/platform/android/src/offline/offline_region.hpp +++ b/platform/android/src/offline/offline_region.hpp @@ -69,7 +69,7 @@ public: void getOfflineRegionStatus(jni::JNIEnv&, const jni::Object<OfflineRegion::OfflineRegionStatusCallback>&); - void deleteOfflineRegion(jni::JNIEnv&, jni::jboolean pack, const jni::Object<OfflineRegionDeleteCallback>&); + void deleteOfflineRegion(jni::JNIEnv&, const jni::Object<OfflineRegionDeleteCallback>&); void invalidateOfflineRegion(jni::JNIEnv&, const jni::Object<OfflineRegionInvalidateCallback>&); |