| OLD | NEW |
| 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 <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), | 47 ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), |
| 48 offline_page.offline_id, | 48 offline_page.offline_id, |
| 49 ConvertUTF8ToJavaString(env, offline_page.client_id.name_space).obj(), | 49 ConvertUTF8ToJavaString(env, offline_page.client_id.name_space).obj(), |
| 50 ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(), | 50 ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(), |
| 51 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), | 51 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), |
| 52 offline_page.file_size, offline_page.creation_time.ToJavaTime(), | 52 offline_page.file_size, offline_page.creation_time.ToJavaTime(), |
| 53 offline_page.access_count, offline_page.last_access_time.ToJavaTime()); | 53 offline_page.access_count, offline_page.last_access_time.ToJavaTime()); |
| 54 } | 54 } |
| 55 } | 55 } |
| 56 | 56 |
| 57 ScopedJavaLocalRef<jobject> ToJavaOfflinePageItem( |
| 58 JNIEnv* env, |
| 59 const OfflinePageItem& offline_page) { |
| 60 return Java_OfflinePageBridge_createOfflinePageItem( |
| 61 env, ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), |
| 62 offline_page.offline_id, |
| 63 ConvertUTF8ToJavaString(env, offline_page.client_id.name_space).obj(), |
| 64 ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(), |
| 65 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), |
| 66 offline_page.file_size, offline_page.creation_time.ToJavaTime(), |
| 67 offline_page.access_count, offline_page.last_access_time.ToJavaTime()); |
| 68 } |
| 69 |
| 57 void CheckPagesExistOfflineCallback( | 70 void CheckPagesExistOfflineCallback( |
| 58 const ScopedJavaGlobalRef<jobject>& j_callback_obj, | 71 const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 59 const OfflinePageModel::CheckPagesExistOfflineResult& offline_pages) { | 72 const OfflinePageModel::CheckPagesExistOfflineResult& offline_pages) { |
| 60 JNIEnv* env = base::android::AttachCurrentThread(); | 73 JNIEnv* env = base::android::AttachCurrentThread(); |
| 61 | 74 |
| 62 std::vector<std::string> offline_pages_vector; | 75 std::vector<std::string> offline_pages_vector; |
| 63 for (const GURL& page : offline_pages) | 76 for (const GURL& page : offline_pages) |
| 64 offline_pages_vector.push_back(page.spec()); | 77 offline_pages_vector.push_back(page.spec()); |
| 65 | 78 |
| 66 ScopedJavaLocalRef<jobjectArray> j_result_array = | 79 ScopedJavaLocalRef<jobjectArray> j_result_array = |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 } | 113 } |
| 101 | 114 |
| 102 void DeletePageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, | 115 void DeletePageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 103 OfflinePageModel::DeletePageResult result) { | 116 OfflinePageModel::DeletePageResult result) { |
| 104 JNIEnv* env = base::android::AttachCurrentThread(); | 117 JNIEnv* env = base::android::AttachCurrentThread(); |
| 105 | 118 |
| 106 Java_DeletePageCallback_onDeletePageDone( | 119 Java_DeletePageCallback_onDeletePageDone( |
| 107 env, j_callback_obj.obj(), static_cast<int>(result)); | 120 env, j_callback_obj.obj(), static_cast<int>(result)); |
| 108 } | 121 } |
| 109 | 122 |
| 123 void SingleOfflinePageItemCallback( |
| 124 const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 125 const OfflinePageModel::SingleOfflinePageItemResult& result) { |
| 126 JNIEnv* env = base::android::AttachCurrentThread(); |
| 127 ScopedJavaLocalRef<jobject> j_result; |
| 128 |
| 129 if (result) |
| 130 j_result = ToJavaOfflinePageItem(env, *result); |
| 131 Java_SingleOfflinePageItemCallback_onResult(env, j_callback_obj.obj(), |
| 132 j_result.obj()); |
| 133 } |
| 110 | 134 |
| 111 } // namespace | 135 } // namespace |
| 112 | 136 |
| 113 static jboolean IsOfflinePagesEnabled(JNIEnv* env, | 137 static jboolean IsOfflinePagesEnabled(JNIEnv* env, |
| 114 const JavaParamRef<jclass>& clazz) { | 138 const JavaParamRef<jclass>& clazz) { |
| 115 return offline_pages::IsOfflinePagesEnabled(); | 139 return offline_pages::IsOfflinePagesEnabled(); |
| 116 } | 140 } |
| 117 | 141 |
| 118 static jboolean IsOfflineBookmarksEnabled(JNIEnv* env, | 142 static jboolean IsOfflineBookmarksEnabled(JNIEnv* env, |
| 119 const JavaParamRef<jclass>& clazz) { | 143 const JavaParamRef<jclass>& clazz) { |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 } | 280 } |
| 257 | 281 |
| 258 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetPageByOfflineId( | 282 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetPageByOfflineId( |
| 259 JNIEnv* env, | 283 JNIEnv* env, |
| 260 const JavaParamRef<jobject>& obj, | 284 const JavaParamRef<jobject>& obj, |
| 261 jlong offline_id) { | 285 jlong offline_id) { |
| 262 const OfflinePageItem* offline_page = | 286 const OfflinePageItem* offline_page = |
| 263 offline_page_model_->MaybeGetPageByOfflineId(offline_id); | 287 offline_page_model_->MaybeGetPageByOfflineId(offline_id); |
| 264 if (!offline_page) | 288 if (!offline_page) |
| 265 return ScopedJavaLocalRef<jobject>(); | 289 return ScopedJavaLocalRef<jobject>(); |
| 266 return CreateOfflinePageItem(env, *offline_page); | 290 return ToJavaOfflinePageItem(env, *offline_page); |
| 267 } | 291 } |
| 268 | 292 |
| 269 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetBestPageForOnlineURL( | 293 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetBestPageForOnlineURL( |
| 270 JNIEnv* env, | 294 JNIEnv* env, |
| 271 const JavaParamRef<jobject>& obj, | 295 const JavaParamRef<jobject>& obj, |
| 272 const JavaParamRef<jstring>& online_url) { | 296 const JavaParamRef<jstring>& online_url) { |
| 273 const OfflinePageItem* offline_page = | 297 const OfflinePageItem* offline_page = |
| 274 offline_page_model_->MaybeGetBestPageForOnlineURL( | 298 offline_page_model_->MaybeGetBestPageForOnlineURL( |
| 275 GURL(ConvertJavaStringToUTF8(env, online_url))); | 299 GURL(ConvertJavaStringToUTF8(env, online_url))); |
| 276 if (!offline_page) | 300 if (!offline_page) |
| 277 return ScopedJavaLocalRef<jobject>(); | 301 return ScopedJavaLocalRef<jobject>(); |
| 278 return CreateOfflinePageItem(env, *offline_page); | 302 return ToJavaOfflinePageItem(env, *offline_page); |
| 279 } | 303 } |
| 280 | 304 |
| 281 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetPageByOfflineUrl( | 305 void OfflinePageBridge::GetPageByOfflineUrl( |
| 282 JNIEnv* env, | 306 JNIEnv* env, |
| 283 const JavaParamRef<jobject>& obj, | 307 const JavaParamRef<jobject>& obj, |
| 284 const JavaParamRef<jstring>& j_offline_url) { | 308 const JavaParamRef<jstring>& j_offline_url, |
| 285 const OfflinePageItem* offline_page = | 309 const JavaParamRef<jobject>& j_callback_obj) { |
| 286 offline_page_model_->MaybeGetPageByOfflineURL( | 310 DCHECK(j_callback_obj); |
| 287 GURL(ConvertJavaStringToUTF8(env, j_offline_url))); | 311 |
| 288 if (!offline_page) | 312 ScopedJavaGlobalRef<jobject> j_callback_ref; |
| 289 return ScopedJavaLocalRef<jobject>(); | 313 j_callback_ref.Reset(env, j_callback_obj); |
| 290 return CreateOfflinePageItem(env, *offline_page); | 314 |
| 315 offline_page_model_->GetPageByOfflineURL( |
| 316 GURL(ConvertJavaStringToUTF8(env, j_offline_url)), |
| 317 base::Bind(&SingleOfflinePageItemCallback, j_callback_ref)); |
| 291 } | 318 } |
| 292 | 319 |
| 293 void OfflinePageBridge::SavePage( | 320 void OfflinePageBridge::SavePage( |
| 294 JNIEnv* env, | 321 JNIEnv* env, |
| 295 const JavaParamRef<jobject>& obj, | 322 const JavaParamRef<jobject>& obj, |
| 296 const JavaParamRef<jobject>& j_callback_obj, | 323 const JavaParamRef<jobject>& j_callback_obj, |
| 297 const JavaParamRef<jobject>& j_web_contents, | 324 const JavaParamRef<jobject>& j_web_contents, |
| 298 const JavaParamRef<jstring>& j_namespace, | 325 const JavaParamRef<jstring>& j_namespace, |
| 299 const JavaParamRef<jstring>& j_client_id) { | 326 const JavaParamRef<jstring>& j_client_id) { |
| 300 DCHECK(j_callback_obj); | 327 DCHECK(j_callback_obj); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 total_space_bytes, free_space_bytes, reporting_after_delete); | 398 total_space_bytes, free_space_bytes, reporting_after_delete); |
| 372 } | 399 } |
| 373 | 400 |
| 374 void OfflinePageBridge::NotifyIfDoneLoading() const { | 401 void OfflinePageBridge::NotifyIfDoneLoading() const { |
| 375 if (!offline_page_model_->is_loaded()) | 402 if (!offline_page_model_->is_loaded()) |
| 376 return; | 403 return; |
| 377 JNIEnv* env = base::android::AttachCurrentThread(); | 404 JNIEnv* env = base::android::AttachCurrentThread(); |
| 378 Java_OfflinePageBridge_offlinePageModelLoaded(env, java_ref_.obj()); | 405 Java_OfflinePageBridge_offlinePageModelLoaded(env, java_ref_.obj()); |
| 379 } | 406 } |
| 380 | 407 |
| 381 ScopedJavaLocalRef<jobject> OfflinePageBridge::CreateOfflinePageItem( | |
| 382 JNIEnv* env, | |
| 383 const OfflinePageItem& offline_page) const { | |
| 384 return Java_OfflinePageBridge_createOfflinePageItem( | |
| 385 env, ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), | |
| 386 offline_page.offline_id, | |
| 387 ConvertUTF8ToJavaString(env, offline_page.client_id.name_space).obj(), | |
| 388 ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(), | |
| 389 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), | |
| 390 offline_page.file_size, offline_page.creation_time.ToJavaTime(), | |
| 391 offline_page.access_count, offline_page.last_access_time.ToJavaTime()); | |
| 392 } | |
| 393 | 408 |
| 394 ScopedJavaLocalRef<jobject> OfflinePageBridge::CreateClientId( | 409 ScopedJavaLocalRef<jobject> OfflinePageBridge::CreateClientId( |
| 395 JNIEnv* env, | 410 JNIEnv* env, |
| 396 const ClientId& client_id) const { | 411 const ClientId& client_id) const { |
| 397 return Java_OfflinePageBridge_createClientId( | 412 return Java_OfflinePageBridge_createClientId( |
| 398 env, | 413 env, |
| 399 ConvertUTF8ToJavaString(env, client_id.name_space).obj(), | 414 ConvertUTF8ToJavaString(env, client_id.name_space).obj(), |
| 400 ConvertUTF8ToJavaString(env, client_id.id).obj()); | 415 ConvertUTF8ToJavaString(env, client_id.id).obj()); |
| 401 } | 416 } |
| 402 | 417 |
| 403 bool RegisterOfflinePageBridge(JNIEnv* env) { | 418 bool RegisterOfflinePageBridge(JNIEnv* env) { |
| 404 return RegisterNativesImpl(env); | 419 return RegisterNativesImpl(env); |
| 405 } | 420 } |
| 406 | 421 |
| 407 } // namespace android | 422 } // namespace android |
| 408 } // namespace offline_pages | 423 } // namespace offline_pages |
| OLD | NEW |