| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/evaluation/offline_page_evaluatio
n_bridge.h" | 5 #include "chrome/browser/android/offline_pages/evaluation/offline_page_evaluatio
n_bridge.h" |
| 6 | 6 |
| 7 #include "base/android/callback_android.h" | 7 #include "base/android/callback_android.h" |
| 8 #include "base/android/jni_android.h" | 8 #include "base/android/jni_android.h" |
| 9 #include "base/android/jni_array.h" |
| 9 #include "base/android/jni_string.h" | 10 #include "base/android/jni_string.h" |
| 10 #include "base/memory/ptr_util.h" | 11 #include "base/memory/ptr_util.h" |
| 11 #include "base/sequenced_task_runner.h" | 12 #include "base/sequenced_task_runner.h" |
| 12 #include "chrome/browser/android/offline_pages/background_scheduler_bridge.h" | 13 #include "chrome/browser/android/offline_pages/background_scheduler_bridge.h" |
| 13 #include "chrome/browser/android/offline_pages/downloads/offline_page_notificati
on_bridge.h" | 14 #include "chrome/browser/android/offline_pages/downloads/offline_page_notificati
on_bridge.h" |
| 14 #include "chrome/browser/android/offline_pages/evaluation/evaluation_test_schedu
ler.h" | 15 #include "chrome/browser/android/offline_pages/evaluation/evaluation_test_schedu
ler.h" |
| 15 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h" | 16 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h" |
| 16 #include "chrome/browser/android/offline_pages/prerendering_offliner_factory.h" | 17 #include "chrome/browser/android/offline_pages/prerendering_offliner_factory.h" |
| 17 #include "chrome/browser/android/offline_pages/request_coordinator_factory.h" | 18 #include "chrome/browser/android/offline_pages/request_coordinator_factory.h" |
| 18 #include "chrome/browser/net/nqe/ui_network_quality_estimator_service.h" | 19 #include "chrome/browser/net/nqe/ui_network_quality_estimator_service.h" |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 ScopedJavaLocalRef<jobject> ToJavaSavePageRequest( | 73 ScopedJavaLocalRef<jobject> ToJavaSavePageRequest( |
| 73 JNIEnv* env, | 74 JNIEnv* env, |
| 74 const SavePageRequest& request) { | 75 const SavePageRequest& request) { |
| 75 return Java_SavePageRequest_create( | 76 return Java_SavePageRequest_create( |
| 76 env, static_cast<int>(request.request_state()), request.request_id(), | 77 env, static_cast<int>(request.request_state()), request.request_id(), |
| 77 ConvertUTF8ToJavaString(env, request.url().spec()), | 78 ConvertUTF8ToJavaString(env, request.url().spec()), |
| 78 ConvertUTF8ToJavaString(env, request.client_id().name_space), | 79 ConvertUTF8ToJavaString(env, request.client_id().name_space), |
| 79 ConvertUTF8ToJavaString(env, request.client_id().id)); | 80 ConvertUTF8ToJavaString(env, request.client_id().id)); |
| 80 } | 81 } |
| 81 | 82 |
| 83 ScopedJavaLocalRef<jobjectArray> CreateJavaSavePageRequests( |
| 84 JNIEnv* env, |
| 85 std::vector<std::unique_ptr<SavePageRequest>> requests) { |
| 86 ScopedJavaLocalRef<jclass> save_page_request_clazz = base::android::GetClass( |
| 87 env, "org/chromium/chrome/browser/offlinepages/SavePageRequest"); |
| 88 jobjectArray joa = env->NewObjectArray( |
| 89 requests.size(), save_page_request_clazz.obj(), nullptr); |
| 90 base::android::CheckException(env); |
| 91 |
| 92 for (size_t i = 0; i < requests.size(); i++) { |
| 93 SavePageRequest request = *(requests[i]); |
| 94 ScopedJavaLocalRef<jobject> j_save_page_request = |
| 95 ToJavaSavePageRequest(env, request); |
| 96 env->SetObjectArrayElement(joa, i, j_save_page_request.obj()); |
| 97 } |
| 98 |
| 99 return ScopedJavaLocalRef<jobjectArray>(env, joa); |
| 100 } |
| 101 |
| 82 void GetAllPagesCallback( | 102 void GetAllPagesCallback( |
| 83 const ScopedJavaGlobalRef<jobject>& j_result_obj, | 103 const ScopedJavaGlobalRef<jobject>& j_result_obj, |
| 84 const ScopedJavaGlobalRef<jobject>& j_callback_obj, | 104 const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 85 const OfflinePageModel::MultipleOfflinePageItemResult& result) { | 105 const OfflinePageModel::MultipleOfflinePageItemResult& result) { |
| 86 JNIEnv* env = base::android::AttachCurrentThread(); | 106 JNIEnv* env = base::android::AttachCurrentThread(); |
| 87 ToJavaOfflinePageList(env, j_result_obj.obj(), result); | 107 ToJavaOfflinePageList(env, j_result_obj.obj(), result); |
| 88 base::android::RunCallbackAndroid(j_callback_obj, j_result_obj); | 108 base::android::RunCallbackAndroid(j_callback_obj, j_result_obj); |
| 89 } | 109 } |
| 90 | 110 |
| 91 void OnPushRequestsDone(const ScopedJavaGlobalRef<jobject>& j_callback_obj, | 111 void OnPushRequestsDone(const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 92 bool result) { | 112 bool result) { |
| 93 base::android::RunCallbackAndroid(j_callback_obj, result); | 113 base::android::RunCallbackAndroid(j_callback_obj, result); |
| 94 } | 114 } |
| 95 | 115 |
| 116 void OnGetAllRequestsDone( |
| 117 const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 118 std::vector<std::unique_ptr<SavePageRequest>> all_requests) { |
| 119 JNIEnv* env = base::android::AttachCurrentThread(); |
| 120 |
| 121 ScopedJavaLocalRef<jobjectArray> j_result_obj = |
| 122 CreateJavaSavePageRequests(env, std::move(all_requests)); |
| 123 base::android::RunCallbackAndroid(j_callback_obj, j_result_obj); |
| 124 } |
| 125 |
| 126 void OnRemoveRequestsDone(const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 127 const MultipleItemStatuses& removed_request_results) { |
| 128 base::android::RunCallbackAndroid(j_callback_obj, |
| 129 int(removed_request_results.size())); |
| 130 } |
| 96 } // namespace | 131 } // namespace |
| 97 | 132 |
| 98 static ScopedJavaLocalRef<jobject> GetBridgeForProfile( | 133 static ScopedJavaLocalRef<jobject> GetBridgeForProfile( |
| 99 JNIEnv* env, | 134 JNIEnv* env, |
| 100 const JavaParamRef<jclass>& jcaller, | 135 const JavaParamRef<jclass>& jcaller, |
| 101 const JavaParamRef<jobject>& j_profile, | 136 const JavaParamRef<jobject>& j_profile, |
| 102 const jboolean j_use_evaluation_scheduler) { | 137 const jboolean j_use_evaluation_scheduler) { |
| 103 Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile); | 138 Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile); |
| 104 | 139 |
| 105 OfflinePageModel* offline_page_model = | 140 OfflinePageModel* offline_page_model = |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 offline_pages::ClientId client_id; | 309 offline_pages::ClientId client_id; |
| 275 client_id.name_space = ConvertJavaStringToUTF8(env, j_namespace); | 310 client_id.name_space = ConvertJavaStringToUTF8(env, j_namespace); |
| 276 client_id.id = ConvertJavaStringToUTF8(env, j_client_id); | 311 client_id.id = ConvertJavaStringToUTF8(env, j_client_id); |
| 277 | 312 |
| 278 request_coordinator_->SavePageLater( | 313 request_coordinator_->SavePageLater( |
| 279 GURL(ConvertJavaStringToUTF8(env, j_url)), client_id, | 314 GURL(ConvertJavaStringToUTF8(env, j_url)), client_id, |
| 280 static_cast<bool>(user_requested), | 315 static_cast<bool>(user_requested), |
| 281 RequestCoordinator::RequestAvailability::ENABLED_FOR_OFFLINER); | 316 RequestCoordinator::RequestAvailability::ENABLED_FOR_OFFLINER); |
| 282 } | 317 } |
| 283 | 318 |
| 319 void OfflinePageEvaluationBridge::GetRequestsInQueue( |
| 320 JNIEnv* env, |
| 321 const JavaParamRef<jobject>& obj, |
| 322 const JavaParamRef<jobject>& j_callback_obj) { |
| 323 ScopedJavaGlobalRef<jobject> j_callback_ref(j_callback_obj); |
| 324 request_coordinator_->GetAllRequests( |
| 325 base::Bind(&OnGetAllRequestsDone, j_callback_ref)); |
| 326 } |
| 327 |
| 328 void OfflinePageEvaluationBridge::RemoveRequestsFromQueue( |
| 329 JNIEnv* env, |
| 330 const JavaParamRef<jobject>& obj, |
| 331 const JavaParamRef<jlongArray>& j_request_ids, |
| 332 const JavaParamRef<jobject>& j_callback_obj) { |
| 333 std::vector<int64_t> request_ids; |
| 334 base::android::JavaLongArrayToInt64Vector(env, j_request_ids, &request_ids); |
| 335 ScopedJavaGlobalRef<jobject> j_callback_ref(j_callback_obj); |
| 336 request_coordinator_->RemoveRequests( |
| 337 request_ids, base::Bind(&OnRemoveRequestsDone, j_callback_ref)); |
| 338 } |
| 339 |
| 284 void OfflinePageEvaluationBridge::NotifyIfDoneLoading() const { | 340 void OfflinePageEvaluationBridge::NotifyIfDoneLoading() const { |
| 285 if (!offline_page_model_->is_loaded()) | 341 if (!offline_page_model_->is_loaded()) |
| 286 return; | 342 return; |
| 287 JNIEnv* env = base::android::AttachCurrentThread(); | 343 JNIEnv* env = base::android::AttachCurrentThread(); |
| 288 Java_OfflinePageEvaluationBridge_offlinePageModelLoaded(env, java_ref_); | 344 Java_OfflinePageEvaluationBridge_offlinePageModelLoaded(env, java_ref_); |
| 289 } | 345 } |
| 290 | 346 |
| 291 } // namespace android | 347 } // namespace android |
| 292 } // namespace offline_pages | 348 } // namespace offline_pages |
| OLD | NEW |