Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(294)

Side by Side Diff: chrome/browser/android/offline_pages/offline_page_bridge.cc

Issue 2256373002: Adds request queue removal capability to OfflinePageBridge. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@query-queue
Patch Set: Rebase. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/offline_pages/offline_page_bridge.h" 5 #include "chrome/browser/android/offline_pages/offline_page_bridge.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/android/callback_android.h" 13 #include "base/android/callback_android.h"
14 #include "base/android/jni_android.h" 14 #include "base/android/jni_android.h"
15 #include "base/android/jni_array.h" 15 #include "base/android/jni_array.h"
16 #include "base/android/jni_string.h" 16 #include "base/android/jni_string.h"
17 #include "base/bind.h" 17 #include "base/bind.h"
18 #include "base/logging.h" 18 #include "base/logging.h"
19 #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h" 19 #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h"
20 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h" 20 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h"
21 #include "chrome/browser/android/offline_pages/offline_page_utils.h" 21 #include "chrome/browser/android/offline_pages/offline_page_utils.h"
22 #include "chrome/browser/android/offline_pages/request_coordinator_factory.h" 22 #include "chrome/browser/android/offline_pages/request_coordinator_factory.h"
23 #include "chrome/browser/profiles/profile.h" 23 #include "chrome/browser/profiles/profile.h"
24 #include "chrome/browser/profiles/profile_android.h" 24 #include "chrome/browser/profiles/profile_android.h"
25 #include "components/offline_pages/background/request_coordinator.h" 25 #include "components/offline_pages/background/request_coordinator.h"
26 #include "components/offline_pages/background/request_queue.h"
26 #include "components/offline_pages/background/save_page_request.h" 27 #include "components/offline_pages/background/save_page_request.h"
27 #include "components/offline_pages/offline_page_feature.h" 28 #include "components/offline_pages/offline_page_feature.h"
28 #include "components/offline_pages/offline_page_item.h" 29 #include "components/offline_pages/offline_page_item.h"
29 #include "components/offline_pages/offline_page_model.h" 30 #include "components/offline_pages/offline_page_model.h"
30 #include "content/public/browser/browser_context.h" 31 #include "content/public/browser/browser_context.h"
31 #include "content/public/browser/web_contents.h" 32 #include "content/public/browser/web_contents.h"
32 #include "jni/OfflinePageBridge_jni.h" 33 #include "jni/OfflinePageBridge_jni.h"
33 #include "jni/SavePageRequest_jni.h" 34 #include "jni/SavePageRequest_jni.h"
34 #include "net/base/filename_util.h" 35 #include "net/base/filename_util.h"
35 36
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 165
165 void OnGetAllRequestsDone(const ScopedJavaGlobalRef<jobject>& j_callback_obj, 166 void OnGetAllRequestsDone(const ScopedJavaGlobalRef<jobject>& j_callback_obj,
166 const std::vector<SavePageRequest>& all_requests) { 167 const std::vector<SavePageRequest>& all_requests) {
167 JNIEnv* env = base::android::AttachCurrentThread(); 168 JNIEnv* env = base::android::AttachCurrentThread();
168 169
169 ScopedJavaLocalRef<jobjectArray> j_result_obj = 170 ScopedJavaLocalRef<jobjectArray> j_result_obj =
170 CreateJavaSavePageRequests(env, all_requests); 171 CreateJavaSavePageRequests(env, all_requests);
171 base::android::RunCallbackAndroid(j_callback_obj, j_result_obj); 172 base::android::RunCallbackAndroid(j_callback_obj, j_result_obj);
172 } 173 }
173 174
175 void OnRemoveRequestsDone(
176 const ScopedJavaGlobalRef<jobject>& j_callback_obj,
177 const RequestQueue::UpdateMultipleRequestResults& removed_request_results) {
178 JNIEnv* env = base::android::AttachCurrentThread();
179
180 std::vector<int> update_request_results;
181 std::vector<int64_t> update_request_ids;
182
183 for (std::pair<int64_t, RequestQueue::UpdateRequestResult> remove_result :
184 removed_request_results) {
185 update_request_ids.emplace_back(std::get<0>(remove_result));
186 update_request_results.emplace_back(
187 static_cast<int>(std::get<1>(remove_result)));
188 }
189
190 ScopedJavaLocalRef<jlongArray> j_result_ids =
191 base::android::ToJavaLongArray(env, update_request_ids);
192 ScopedJavaLocalRef<jintArray> j_result_codes =
193 base::android::ToJavaIntArray(env, update_request_results);
194
195 Java_RequestsRemovedCallback_onResult(env, j_callback_obj, j_result_ids,
196 j_result_codes);
197 }
198
174 } // namespace 199 } // namespace
175 200
176 static jboolean IsOfflinePagesEnabled(JNIEnv* env, 201 static jboolean IsOfflinePagesEnabled(JNIEnv* env,
177 const JavaParamRef<jclass>& clazz) { 202 const JavaParamRef<jclass>& clazz) {
178 return offline_pages::IsOfflinePagesEnabled(); 203 return offline_pages::IsOfflinePagesEnabled();
179 } 204 }
180 205
181 static jboolean IsOfflineBookmarksEnabled(JNIEnv* env, 206 static jboolean IsOfflineBookmarksEnabled(JNIEnv* env,
182 const JavaParamRef<jclass>& clazz) { 207 const JavaParamRef<jclass>& clazz) {
183 return offline_pages::IsOfflineBookmarksEnabled(); 208 return offline_pages::IsOfflineBookmarksEnabled();
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 // Callback with null to signal that results are unavailable. 492 // Callback with null to signal that results are unavailable.
468 const JavaParamRef<jobject> empty_result(nullptr); 493 const JavaParamRef<jobject> empty_result(nullptr);
469 base::android::RunCallbackAndroid(j_callback_obj, empty_result); 494 base::android::RunCallbackAndroid(j_callback_obj, empty_result);
470 return; 495 return;
471 } 496 }
472 497
473 coordinator->GetAllRequests( 498 coordinator->GetAllRequests(
474 base::Bind(&OnGetAllRequestsDone, j_callback_ref)); 499 base::Bind(&OnGetAllRequestsDone, j_callback_ref));
475 } 500 }
476 501
502 void OfflinePageBridge::RemoveRequestsFromQueue(
503 JNIEnv* env,
504 const JavaParamRef<jobject>& obj,
505 const JavaParamRef<jlongArray>& j_request_ids_array,
506 const JavaParamRef<jobject>& j_callback_obj) {
507 std::vector<int64_t> request_ids;
508 base::android::JavaLongArrayToInt64Vector(env, j_request_ids_array,
509 &request_ids);
510 ScopedJavaGlobalRef<jobject> j_callback_ref(j_callback_obj);
511
512 RequestCoordinator* coordinator =
513 offline_pages::RequestCoordinatorFactory::GetInstance()
514 ->GetForBrowserContext(browser_context_);
515
516 if (!coordinator) {
517 // Callback with null to signal that results are unavailable.
518 const JavaParamRef<jobject> empty_result(nullptr);
519 base::android::RunCallbackAndroid(j_callback_obj, empty_result);
520 return;
521 }
522
523 coordinator->RemoveRequests(
524 request_ids, base::Bind(&OnRemoveRequestsDone, j_callback_ref));
525 }
526
477 void OfflinePageBridge::NotifyIfDoneLoading() const { 527 void OfflinePageBridge::NotifyIfDoneLoading() const {
478 if (!offline_page_model_->is_loaded()) 528 if (!offline_page_model_->is_loaded())
479 return; 529 return;
480 JNIEnv* env = base::android::AttachCurrentThread(); 530 JNIEnv* env = base::android::AttachCurrentThread();
481 Java_OfflinePageBridge_offlinePageModelLoaded(env, java_ref_); 531 Java_OfflinePageBridge_offlinePageModelLoaded(env, java_ref_);
482 } 532 }
483 533
484 534
485 ScopedJavaLocalRef<jobject> OfflinePageBridge::CreateClientId( 535 ScopedJavaLocalRef<jobject> OfflinePageBridge::CreateClientId(
486 JNIEnv* env, 536 JNIEnv* env,
487 const ClientId& client_id) const { 537 const ClientId& client_id) const {
488 return Java_OfflinePageBridge_createClientId( 538 return Java_OfflinePageBridge_createClientId(
489 env, ConvertUTF8ToJavaString(env, client_id.name_space), 539 env, ConvertUTF8ToJavaString(env, client_id.name_space),
490 ConvertUTF8ToJavaString(env, client_id.id)); 540 ConvertUTF8ToJavaString(env, client_id.id));
491 } 541 }
492 542
493 bool RegisterOfflinePageBridge(JNIEnv* env) { 543 bool RegisterOfflinePageBridge(JNIEnv* env) {
494 return RegisterNativesImpl(env); 544 return RegisterNativesImpl(env);
495 } 545 }
496 546
497 } // namespace android 547 } // namespace android
498 } // namespace offline_pages 548 } // namespace offline_pages
OLDNEW
« no previous file with comments | « chrome/browser/android/offline_pages/offline_page_bridge.h ('k') | components/offline_pages/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698