Revert "[android] Add OfflineRegion.deleteAndSkipPackDatabase"
This reverts commit 9bc3aa46384229778853c2710e5b06259b78ed18.
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
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);
|
||||
}
|
||||
});
|
||||
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)));
|
||||
}
|
||||
|
||||
@@ -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>&);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user