Chromium Code Reviews| Index: chrome/browser/android/offline_pages/evaluation/offline_page_evaluation_bridge.cc |
| diff --git a/chrome/browser/android/offline_pages/evaluation/offline_page_evaluation_bridge.cc b/chrome/browser/android/offline_pages/evaluation/offline_page_evaluation_bridge.cc |
| index 66b371f74f8ba6a4648ebd69971600d71d60de13..1d138ad90a24d5c4101be3e94e50a174f957f34d 100644 |
| --- a/chrome/browser/android/offline_pages/evaluation/offline_page_evaluation_bridge.cc |
| +++ b/chrome/browser/android/offline_pages/evaluation/offline_page_evaluation_bridge.cc |
| @@ -6,6 +6,7 @@ |
| #include "base/android/callback_android.h" |
| #include "base/android/jni_android.h" |
| +#include "base/android/jni_array.h" |
| #include "base/android/jni_string.h" |
| #include "base/memory/ptr_util.h" |
| #include "base/sequenced_task_runner.h" |
| @@ -79,6 +80,25 @@ ScopedJavaLocalRef<jobject> ToJavaSavePageRequest( |
| ConvertUTF8ToJavaString(env, request.client_id().id)); |
| } |
| +ScopedJavaLocalRef<jobjectArray> CreateJavaSavePageRequests( |
|
Pete Williamson
2016/11/07 23:45:26
I didn't see a call to this. What does it do, and
romax
2016/11/08 00:18:35
This is used in OnGetAllRequestsDone in the same f
|
| + JNIEnv* env, |
| + std::vector<std::unique_ptr<SavePageRequest>> requests) { |
| + ScopedJavaLocalRef<jclass> save_page_request_clazz = base::android::GetClass( |
| + env, "org/chromium/chrome/browser/offlinepages/SavePageRequest"); |
| + jobjectArray joa = env->NewObjectArray( |
| + requests.size(), save_page_request_clazz.obj(), nullptr); |
| + base::android::CheckException(env); |
| + |
| + for (size_t i = 0; i < requests.size(); i++) { |
| + SavePageRequest request = *(requests[i]); |
| + ScopedJavaLocalRef<jobject> j_save_page_request = |
| + ToJavaSavePageRequest(env, request); |
| + env->SetObjectArrayElement(joa, i, j_save_page_request.obj()); |
| + } |
| + |
| + return ScopedJavaLocalRef<jobjectArray>(env, joa); |
| +} |
| + |
| void GetAllPagesCallback( |
| const ScopedJavaGlobalRef<jobject>& j_result_obj, |
| const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| @@ -93,6 +113,21 @@ void OnPushRequestsDone(const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| base::android::RunCallbackAndroid(j_callback_obj, result); |
| } |
| +void OnGetAllRequestsDone( |
| + const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| + std::vector<std::unique_ptr<SavePageRequest>> all_requests) { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + |
| + ScopedJavaLocalRef<jobjectArray> j_result_obj = |
| + CreateJavaSavePageRequests(env, std::move(all_requests)); |
| + base::android::RunCallbackAndroid(j_callback_obj, j_result_obj); |
| +} |
| + |
| +void OnRemoveRequestsDone(const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| + const MultipleItemStatuses& removed_request_results) { |
| + base::android::RunCallbackAndroid(j_callback_obj, |
| + int(removed_request_results.size())); |
| +} |
| } // namespace |
| static ScopedJavaLocalRef<jobject> GetBridgeForProfile( |
| @@ -281,6 +316,27 @@ void OfflinePageEvaluationBridge::SavePageLater( |
| RequestCoordinator::RequestAvailability::ENABLED_FOR_OFFLINER); |
| } |
| +void OfflinePageEvaluationBridge::GetRequestsInQueue( |
| + JNIEnv* env, |
| + const JavaParamRef<jobject>& obj, |
| + const JavaParamRef<jobject>& j_callback_obj) { |
| + ScopedJavaGlobalRef<jobject> j_callback_ref(j_callback_obj); |
| + request_coordinator_->GetAllRequests( |
| + base::Bind(&OnGetAllRequestsDone, j_callback_ref)); |
| +} |
| + |
| +void OfflinePageEvaluationBridge::RemoveRequestsFromQueue( |
| + JNIEnv* env, |
| + const JavaParamRef<jobject>& obj, |
| + const JavaParamRef<jlongArray>& j_request_ids, |
| + const JavaParamRef<jobject>& j_callback_obj) { |
| + std::vector<int64_t> request_ids; |
| + base::android::JavaLongArrayToInt64Vector(env, j_request_ids, &request_ids); |
| + ScopedJavaGlobalRef<jobject> j_callback_ref(j_callback_obj); |
| + request_coordinator_->RemoveRequests( |
| + request_ids, base::Bind(&OnRemoveRequestsDone, j_callback_ref)); |
| +} |
| + |
| void OfflinePageEvaluationBridge::NotifyIfDoneLoading() const { |
| if (!offline_page_model_->is_loaded()) |
| return; |