summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-11-25 11:21:15 +0200
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-12-02 13:46:51 +0200
commit0ec01356d854caf3159e0eec6d4fbdd3d2200359 (patch)
tree67f3e88a30b2a7d815239fda0cbbe8e546d3ba4b
parentb2693f9d539a1f54419cd948cbc5b5f8e2155df7 (diff)
downloadqtlocation-mapboxgl-0ec01356d854caf3159e0eec6d4fbdd3d2200359.tar.gz
Revert "[android] Add OfflineRegion.deleteAndSkipPackDatabase"
This reverts commit 9bc3aa46384229778853c2710e5b06259b78ed18.
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java52
-rw-r--r--platform/android/src/offline/offline_region.cpp77
-rw-r--r--platform/android/src/offline/offline_region.hpp2
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>&);