Index: chrome/browser/android/offline_pages/offline_page_bridge.cc |
diff --git a/chrome/browser/android/offline_pages/offline_page_bridge.cc b/chrome/browser/android/offline_pages/offline_page_bridge.cc |
index dc73d50579f2a56d79bec9af66b308c6b9e4da07..9840f3b9629704eec816a43e4431c48a9908fc34 100644 |
--- a/chrome/browser/android/offline_pages/offline_page_bridge.cc |
+++ b/chrome/browser/android/offline_pages/offline_page_bridge.cc |
@@ -172,6 +172,16 @@ void OnGetAllRequestsDone(const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
base::android::RunCallbackAndroid(j_callback_obj, j_result_obj); |
} |
+void OnRemoveRequestsDone( |
+ const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
+ const std::vector<SavePageRequest>& removed_requests) { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ |
+ ScopedJavaLocalRef<jobjectArray> j_result_obj = |
+ CreateJavaSavePageRequests(env, removed_requests); |
+ base::android::RunCallbackAndroid(j_callback_obj, j_result_obj); |
+} |
+ |
} // namespace |
static jboolean IsOfflinePagesEnabled(JNIEnv* env, |
@@ -475,6 +485,31 @@ void OfflinePageBridge::GetRequestsInQueue( |
base::Bind(&OnGetAllRequestsDone, j_callback_ref)); |
} |
+void OfflinePageBridge::ClearRequestsFromQueue( |
+ JNIEnv* env, |
+ const JavaParamRef<jobject>& obj, |
+ const JavaParamRef<jlongArray>& j_request_ids_array, |
+ const JavaParamRef<jobject>& j_callback_obj) { |
+ std::vector<int64_t> request_ids; |
+ base::android::JavaLongArrayToInt64Vector(env, j_request_ids_array, |
+ &request_ids); |
+ ScopedJavaGlobalRef<jobject> j_callback_ref(j_callback_obj); |
+ |
+ RequestCoordinator* coordinator = |
+ offline_pages::RequestCoordinatorFactory::GetInstance() |
+ ->GetForBrowserContext(browser_context_); |
+ |
+ if (!coordinator) { |
+ // Callback with null to signal that results are unavailable. |
+ const JavaParamRef<jobject> empty_result(nullptr); |
+ base::android::RunCallbackAndroid(j_callback_obj, empty_result); |
+ return; |
+ } |
+ |
+ coordinator->RemoveRequests( |
+ request_ids, base::Bind(&OnRemoveRequestsDone, j_callback_ref)); |
+} |
+ |
void OfflinePageBridge::NotifyIfDoneLoading() const { |
if (!offline_page_model_->is_loaded()) |
return; |