Skip to content

Commit 54df208

Browse files
committed
Fix jni caching for list results
1 parent 6b9b79d commit 54df208

2 files changed

Lines changed: 10 additions & 7 deletions

File tree

storage/src/android/storage_reference_android.cc

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "storage/src/android/controller_android.h"
2626
#include "storage/src/android/metadata_android.h"
2727
#include "storage/src/android/storage_android.h"
28+
#include "storage/src/common/list_result_internal.h"
2829
#include "storage/src/include/firebase/storage.h"
2930
#include "storage/src/include/firebase/storage/common.h"
3031
#include "storage/storage_resources.h"
@@ -129,12 +130,14 @@ enum StorageReferenceFn {
129130
bool StorageReferenceInternal::Initialize(App* app) {
130131
JNIEnv* env = app->GetJNIEnv();
131132
jobject activity = app->activity();
132-
return storage_reference::CacheMethodIds(env, activity);
133+
return storage_reference::CacheMethodIds(env, activity) &&
134+
list_result::CacheMethodIds(env, activity);
133135
}
134136

135137
void StorageReferenceInternal::Terminate(App* app) {
136138
JNIEnv* env = app->GetJNIEnv();
137139
storage_reference::ReleaseClass(env);
140+
list_result::ReleaseClass(env);
138141
util::CheckAndClearJniExceptions(env);
139142
}
140143

@@ -631,13 +634,12 @@ Future<StorageListResult> StorageReferenceInternal::List(
631634
future_impl->Complete(handle, kErrorUnknown, "Call to list() failed.");
632635
} else {
633636
util::RegisterCallbackOnTask(
634-
env, task,
635-
reinterpret_cast<util::TaskFinishedCallback>(
636-
StorageReferenceInternal::FutureCallback),
637-
new FutureCallbackData(handle, future_impl, storage_,
638-
kStorageReferenceFnList),
639-
storage_resources::GetClass(storage_resources::kApiExecutor));
637+
env, task, FutureCallback,
638+
reinterpret_cast<void*>(new FutureCallbackData(
639+
handle, future_impl, storage_, kStorageReferenceFnList)),
640+
storage_->jni_task_id());
640641
}
642+
util::CheckAndClearJniExceptions(env);
641643
env->DeleteLocalRef(task);
642644

643645
return ListLastResult();

storage/src/common/list_result_internal.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include <string>
1919
#include <vector>
2020

21+
#include "firebase/storage/list_result.h"
2122
#include "firebase/storage/storage_reference.h"
2223

2324
namespace firebase {

0 commit comments

Comments
 (0)