Chromium Code Reviews| 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 | |
| 58 ScopedJavaLocalRef<jobject> ToJavaOfflinePageItem( | |
|
dewittj
2016/05/16 21:07:46
nit: I think I prefer this as CreateJavaOfflinePag
chili
2016/05/16 23:06:41
I renamed this to 'ToJavaOfflinePageItem' to be co
dewittj
2016/05/17 17:36:02
I guess it is a little different to me, since ToJa
| |
| 59 JNIEnv* env, | |
| 60 const OfflinePageItem& offline_page) { | |
| 61 return Java_OfflinePageBridge_createOfflinePageItem( | |
| 62 env, ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), | |
| 63 offline_page.offline_id, | |
| 64 ConvertUTF8ToJavaString(env, offline_page.client_id.name_space).obj(), | |
| 65 ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(), | |
| 66 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), | |
| 67 offline_page.file_size, offline_page.creation_time.ToJavaTime(), | |
| 68 offline_page.access_count, offline_page.last_access_time.ToJavaTime()); | |
| 69 } | |
| 70 | |
| 57 void CheckPagesExistOfflineCallback( | 71 void CheckPagesExistOfflineCallback( |
| 58 const ScopedJavaGlobalRef<jobject>& j_callback_obj, | 72 const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 59 const OfflinePageModel::CheckPagesExistOfflineResult& offline_pages) { | 73 const OfflinePageModel::CheckPagesExistOfflineResult& offline_pages) { |
| 60 JNIEnv* env = base::android::AttachCurrentThread(); | 74 JNIEnv* env = base::android::AttachCurrentThread(); |
| 61 | 75 |
| 62 std::vector<std::string> offline_pages_vector; | 76 std::vector<std::string> offline_pages_vector; |
| 63 for (const GURL& page : offline_pages) | 77 for (const GURL& page : offline_pages) |
| 64 offline_pages_vector.push_back(page.spec()); | 78 offline_pages_vector.push_back(page.spec()); |
| 65 | 79 |
| 66 ScopedJavaLocalRef<jobjectArray> j_result_array = | 80 ScopedJavaLocalRef<jobjectArray> j_result_array = |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 100 } | 114 } |
| 101 | 115 |
| 102 void DeletePageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, | 116 void DeletePageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 103 OfflinePageModel::DeletePageResult result) { | 117 OfflinePageModel::DeletePageResult result) { |
| 104 JNIEnv* env = base::android::AttachCurrentThread(); | 118 JNIEnv* env = base::android::AttachCurrentThread(); |
| 105 | 119 |
| 106 Java_DeletePageCallback_onDeletePageDone( | 120 Java_DeletePageCallback_onDeletePageDone( |
| 107 env, j_callback_obj.obj(), static_cast<int>(result)); | 121 env, j_callback_obj.obj(), static_cast<int>(result)); |
| 108 } | 122 } |
| 109 | 123 |
| 124 void SingleOfflinePageItemCallback( | |
| 125 const ScopedJavaGlobalRef<jobject>& j_callback_obj, | |
| 126 const OfflinePageModel::SingleOfflinePageItemResult& result) { | |
| 127 JNIEnv* env = base::android::AttachCurrentThread(); | |
| 128 ScopedJavaGlobalRef<jobject> emptyResult; | |
|
dewittj
2016/05/16 21:07:46
should this be ScopedJavaLocalRef?
chili
2016/05/16 23:06:41
Done.
| |
| 129 | |
| 130 if (result) { | |
| 131 Java_SingleOfflinePageItemCallback_onResult( | |
|
dewittj
2016/05/16 21:07:46
This code would be simpler if you just rename empt
chili
2016/05/16 23:06:41
I did start with that in a previous iteration. Pe
| |
| 132 env, j_callback_obj.obj(), ToJavaOfflinePageItem(env, *result).obj()); | |
| 133 } else { | |
| 134 Java_SingleOfflinePageItemCallback_onResult( | |
| 135 env, j_callback_obj.obj(), emptyResult.obj()); | |
| 136 } | |
| 137 } | |
| 110 | 138 |
| 111 } // namespace | 139 } // namespace |
| 112 | 140 |
| 113 static jboolean IsOfflinePagesEnabled(JNIEnv* env, | 141 static jboolean IsOfflinePagesEnabled(JNIEnv* env, |
| 114 const JavaParamRef<jclass>& clazz) { | 142 const JavaParamRef<jclass>& clazz) { |
| 115 return offline_pages::IsOfflinePagesEnabled(); | 143 return offline_pages::IsOfflinePagesEnabled(); |
| 116 } | 144 } |
| 117 | 145 |
| 118 static jboolean IsOfflineBookmarksEnabled(JNIEnv* env, | 146 static jboolean IsOfflineBookmarksEnabled(JNIEnv* env, |
| 119 const JavaParamRef<jclass>& clazz) { | 147 const JavaParamRef<jclass>& clazz) { |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 256 } | 284 } |
| 257 | 285 |
| 258 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetPageByOfflineId( | 286 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetPageByOfflineId( |
| 259 JNIEnv* env, | 287 JNIEnv* env, |
| 260 const JavaParamRef<jobject>& obj, | 288 const JavaParamRef<jobject>& obj, |
| 261 jlong offline_id) { | 289 jlong offline_id) { |
| 262 const OfflinePageItem* offline_page = | 290 const OfflinePageItem* offline_page = |
| 263 offline_page_model_->MaybeGetPageByOfflineId(offline_id); | 291 offline_page_model_->MaybeGetPageByOfflineId(offline_id); |
| 264 if (!offline_page) | 292 if (!offline_page) |
| 265 return ScopedJavaLocalRef<jobject>(); | 293 return ScopedJavaLocalRef<jobject>(); |
| 266 return CreateOfflinePageItem(env, *offline_page); | 294 return ToJavaOfflinePageItem(env, *offline_page); |
| 267 } | 295 } |
| 268 | 296 |
| 269 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetBestPageForOnlineURL( | 297 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetBestPageForOnlineURL( |
| 270 JNIEnv* env, | 298 JNIEnv* env, |
| 271 const JavaParamRef<jobject>& obj, | 299 const JavaParamRef<jobject>& obj, |
| 272 const JavaParamRef<jstring>& online_url) { | 300 const JavaParamRef<jstring>& online_url) { |
| 273 const OfflinePageItem* offline_page = | 301 const OfflinePageItem* offline_page = |
| 274 offline_page_model_->MaybeGetBestPageForOnlineURL( | 302 offline_page_model_->MaybeGetBestPageForOnlineURL( |
| 275 GURL(ConvertJavaStringToUTF8(env, online_url))); | 303 GURL(ConvertJavaStringToUTF8(env, online_url))); |
| 276 if (!offline_page) | 304 if (!offline_page) |
| 277 return ScopedJavaLocalRef<jobject>(); | 305 return ScopedJavaLocalRef<jobject>(); |
| 278 return CreateOfflinePageItem(env, *offline_page); | 306 return ToJavaOfflinePageItem(env, *offline_page); |
| 279 } | 307 } |
| 280 | 308 |
| 281 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetPageByOfflineUrl( | 309 void OfflinePageBridge::GetPageByOfflineUrl( |
| 282 JNIEnv* env, | 310 JNIEnv* env, |
| 283 const JavaParamRef<jobject>& obj, | 311 const JavaParamRef<jobject>& obj, |
| 284 const JavaParamRef<jstring>& j_offline_url) { | 312 const JavaParamRef<jstring>& j_offline_url, |
| 285 const OfflinePageItem* offline_page = | 313 const JavaParamRef<jobject>& j_callback_obj) { |
| 286 offline_page_model_->MaybeGetPageByOfflineURL( | 314 DCHECK(j_callback_obj); |
| 287 GURL(ConvertJavaStringToUTF8(env, j_offline_url))); | 315 |
| 288 if (!offline_page) | 316 ScopedJavaGlobalRef<jobject> j_callback_ref; |
| 289 return ScopedJavaLocalRef<jobject>(); | 317 j_callback_ref.Reset(env, j_callback_obj); |
| 290 return CreateOfflinePageItem(env, *offline_page); | 318 |
| 319 offline_page_model_->GetPageByOfflineURL( | |
| 320 GURL(ConvertJavaStringToUTF8(env, j_offline_url)), | |
| 321 base::Bind(&SingleOfflinePageItemCallback, j_callback_ref)); | |
| 291 } | 322 } |
| 292 | 323 |
| 293 void OfflinePageBridge::SavePage( | 324 void OfflinePageBridge::SavePage( |
| 294 JNIEnv* env, | 325 JNIEnv* env, |
| 295 const JavaParamRef<jobject>& obj, | 326 const JavaParamRef<jobject>& obj, |
| 296 const JavaParamRef<jobject>& j_callback_obj, | 327 const JavaParamRef<jobject>& j_callback_obj, |
| 297 const JavaParamRef<jobject>& j_web_contents, | 328 const JavaParamRef<jobject>& j_web_contents, |
| 298 const JavaParamRef<jstring>& j_namespace, | 329 const JavaParamRef<jstring>& j_namespace, |
| 299 const JavaParamRef<jstring>& j_client_id) { | 330 const JavaParamRef<jstring>& j_client_id) { |
| 300 DCHECK(j_callback_obj); | 331 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); | 402 total_space_bytes, free_space_bytes, reporting_after_delete); |
| 372 } | 403 } |
| 373 | 404 |
| 374 void OfflinePageBridge::NotifyIfDoneLoading() const { | 405 void OfflinePageBridge::NotifyIfDoneLoading() const { |
| 375 if (!offline_page_model_->is_loaded()) | 406 if (!offline_page_model_->is_loaded()) |
| 376 return; | 407 return; |
| 377 JNIEnv* env = base::android::AttachCurrentThread(); | 408 JNIEnv* env = base::android::AttachCurrentThread(); |
| 378 Java_OfflinePageBridge_offlinePageModelLoaded(env, java_ref_.obj()); | 409 Java_OfflinePageBridge_offlinePageModelLoaded(env, java_ref_.obj()); |
| 379 } | 410 } |
| 380 | 411 |
| 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 | 412 |
| 394 ScopedJavaLocalRef<jobject> OfflinePageBridge::CreateClientId( | 413 ScopedJavaLocalRef<jobject> OfflinePageBridge::CreateClientId( |
| 395 JNIEnv* env, | 414 JNIEnv* env, |
| 396 const ClientId& client_id) const { | 415 const ClientId& client_id) const { |
| 397 return Java_OfflinePageBridge_createClientId( | 416 return Java_OfflinePageBridge_createClientId( |
| 398 env, | 417 env, |
| 399 ConvertUTF8ToJavaString(env, client_id.name_space).obj(), | 418 ConvertUTF8ToJavaString(env, client_id.name_space).obj(), |
| 400 ConvertUTF8ToJavaString(env, client_id.id).obj()); | 419 ConvertUTF8ToJavaString(env, client_id.id).obj()); |
| 401 } | 420 } |
| 402 | 421 |
| 403 bool RegisterOfflinePageBridge(JNIEnv* env) { | 422 bool RegisterOfflinePageBridge(JNIEnv* env) { |
| 404 return RegisterNativesImpl(env); | 423 return RegisterNativesImpl(env); |
| 405 } | 424 } |
| 406 | 425 |
| 407 } // namespace android | 426 } // namespace android |
| 408 } // namespace offline_pages | 427 } // namespace offline_pages |
| OLD | NEW |