| 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 <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 | 43 |
| 44 const char kOfflinePageBridgeKey[] = "offline-page-bridge"; | 44 const char kOfflinePageBridgeKey[] = "offline-page-bridge"; |
| 45 const bool kUserRequested = true; | 45 const bool kUserRequested = true; |
| 46 | 46 |
| 47 void ToJavaOfflinePageList(JNIEnv* env, | 47 void ToJavaOfflinePageList(JNIEnv* env, |
| 48 jobject j_result_obj, | 48 jobject j_result_obj, |
| 49 const std::vector<OfflinePageItem>& offline_pages) { | 49 const std::vector<OfflinePageItem>& offline_pages) { |
| 50 for (const OfflinePageItem& offline_page : offline_pages) { | 50 for (const OfflinePageItem& offline_page : offline_pages) { |
| 51 Java_OfflinePageBridge_createOfflinePageAndAddToList( | 51 Java_OfflinePageBridge_createOfflinePageAndAddToList( |
| 52 env, j_result_obj, | 52 env, j_result_obj, |
| 53 ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), | 53 ConvertUTF8ToJavaString(env, offline_page.url.spec()), |
| 54 offline_page.offline_id, | 54 offline_page.offline_id, |
| 55 ConvertUTF8ToJavaString(env, offline_page.client_id.name_space).obj(), | 55 ConvertUTF8ToJavaString(env, offline_page.client_id.name_space), |
| 56 ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(), | 56 ConvertUTF8ToJavaString(env, offline_page.client_id.id), |
| 57 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), | 57 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()), |
| 58 ConvertUTF8ToJavaString(env, offline_page.file_path.value()).obj(), | 58 ConvertUTF8ToJavaString(env, offline_page.file_path.value()), |
| 59 offline_page.file_size, offline_page.creation_time.ToJavaTime(), | 59 offline_page.file_size, offline_page.creation_time.ToJavaTime(), |
| 60 offline_page.access_count, offline_page.last_access_time.ToJavaTime()); | 60 offline_page.access_count, offline_page.last_access_time.ToJavaTime()); |
| 61 } | 61 } |
| 62 } | 62 } |
| 63 | 63 |
| 64 ScopedJavaLocalRef<jobject> ToJavaOfflinePageItem( | 64 ScopedJavaLocalRef<jobject> ToJavaOfflinePageItem( |
| 65 JNIEnv* env, | 65 JNIEnv* env, |
| 66 const OfflinePageItem& offline_page) { | 66 const OfflinePageItem& offline_page) { |
| 67 return Java_OfflinePageBridge_createOfflinePageItem( | 67 return Java_OfflinePageBridge_createOfflinePageItem( |
| 68 env, ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), | 68 env, ConvertUTF8ToJavaString(env, offline_page.url.spec()), |
| 69 offline_page.offline_id, | 69 offline_page.offline_id, |
| 70 ConvertUTF8ToJavaString(env, offline_page.client_id.name_space).obj(), | 70 ConvertUTF8ToJavaString(env, offline_page.client_id.name_space), |
| 71 ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(), | 71 ConvertUTF8ToJavaString(env, offline_page.client_id.id), |
| 72 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), | 72 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()), |
| 73 ConvertUTF8ToJavaString(env, offline_page.file_path.value()).obj(), | 73 ConvertUTF8ToJavaString(env, offline_page.file_path.value()), |
| 74 offline_page.file_size, offline_page.creation_time.ToJavaTime(), | 74 offline_page.file_size, offline_page.creation_time.ToJavaTime(), |
| 75 offline_page.access_count, offline_page.last_access_time.ToJavaTime()); | 75 offline_page.access_count, offline_page.last_access_time.ToJavaTime()); |
| 76 } | 76 } |
| 77 | 77 |
| 78 void CheckPagesExistOfflineCallback( | 78 void CheckPagesExistOfflineCallback( |
| 79 const ScopedJavaGlobalRef<jobject>& j_callback_obj, | 79 const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 80 const OfflinePageModel::CheckPagesExistOfflineResult& offline_pages) { | 80 const OfflinePageModel::CheckPagesExistOfflineResult& offline_pages) { |
| 81 JNIEnv* env = base::android::AttachCurrentThread(); | 81 JNIEnv* env = base::android::AttachCurrentThread(); |
| 82 | 82 |
| 83 std::vector<std::string> offline_pages_vector; | 83 std::vector<std::string> offline_pages_vector; |
| 84 for (const GURL& page : offline_pages) | 84 for (const GURL& page : offline_pages) |
| 85 offline_pages_vector.push_back(page.spec()); | 85 offline_pages_vector.push_back(page.spec()); |
| 86 | 86 |
| 87 ScopedJavaLocalRef<jobjectArray> j_result_array = | 87 ScopedJavaLocalRef<jobjectArray> j_result_array = |
| 88 base::android::ToJavaArrayOfStrings(env, offline_pages_vector); | 88 base::android::ToJavaArrayOfStrings(env, offline_pages_vector); |
| 89 DCHECK(j_result_array.obj()); | 89 DCHECK(j_result_array.obj()); |
| 90 | 90 |
| 91 Java_CheckPagesExistOfflineCallbackInternal_onResult( | 91 Java_CheckPagesExistOfflineCallbackInternal_onResult(env, j_callback_obj, |
| 92 env, j_callback_obj.obj(), j_result_array.obj()); | 92 j_result_array); |
| 93 } | 93 } |
| 94 | 94 |
| 95 void GetAllPagesCallback( | 95 void GetAllPagesCallback( |
| 96 const ScopedJavaGlobalRef<jobject>& j_result_obj, | 96 const ScopedJavaGlobalRef<jobject>& j_result_obj, |
| 97 const ScopedJavaGlobalRef<jobject>& j_callback_obj, | 97 const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 98 const OfflinePageModel::MultipleOfflinePageItemResult& result) { | 98 const OfflinePageModel::MultipleOfflinePageItemResult& result) { |
| 99 JNIEnv* env = base::android::AttachCurrentThread(); | 99 JNIEnv* env = base::android::AttachCurrentThread(); |
| 100 ToJavaOfflinePageList(env, j_result_obj.obj(), result); | 100 ToJavaOfflinePageList(env, j_result_obj.obj(), result); |
| 101 base::android::RunCallbackAndroid(j_callback_obj, j_result_obj); | 101 base::android::RunCallbackAndroid(j_callback_obj, j_result_obj); |
| 102 } | 102 } |
| 103 | 103 |
| 104 void HasPagesCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, | 104 void HasPagesCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 105 bool result) { | 105 bool result) { |
| 106 base::android::RunCallbackAndroid(j_callback_obj, result); | 106 base::android::RunCallbackAndroid(j_callback_obj, result); |
| 107 } | 107 } |
| 108 | 108 |
| 109 void SavePageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, | 109 void SavePageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 110 const GURL& url, | 110 const GURL& url, |
| 111 OfflinePageModel::SavePageResult result, | 111 OfflinePageModel::SavePageResult result, |
| 112 int64_t offline_id) { | 112 int64_t offline_id) { |
| 113 JNIEnv* env = base::android::AttachCurrentThread(); | 113 JNIEnv* env = base::android::AttachCurrentThread(); |
| 114 | 114 |
| 115 Java_SavePageCallback_onSavePageDone( | 115 Java_SavePageCallback_onSavePageDone( |
| 116 env, j_callback_obj.obj(), static_cast<int>(result), | 116 env, j_callback_obj, static_cast<int>(result), |
| 117 ConvertUTF8ToJavaString(env, url.spec()).obj(), offline_id); | 117 ConvertUTF8ToJavaString(env, url.spec()), offline_id); |
| 118 } | 118 } |
| 119 | 119 |
| 120 void DeletePageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, | 120 void DeletePageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 121 OfflinePageModel::DeletePageResult result) { | 121 OfflinePageModel::DeletePageResult result) { |
| 122 base::android::RunCallbackAndroid(j_callback_obj, static_cast<int>(result)); | 122 base::android::RunCallbackAndroid(j_callback_obj, static_cast<int>(result)); |
| 123 } | 123 } |
| 124 | 124 |
| 125 void SingleOfflinePageItemCallback( | 125 void SingleOfflinePageItemCallback( |
| 126 const ScopedJavaGlobalRef<jobject>& j_callback_obj, | 126 const ScopedJavaGlobalRef<jobject>& j_callback_obj, |
| 127 const OfflinePageItem* result) { | 127 const OfflinePageItem* result) { |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 java_ref_.Reset(j_offline_page_bridge); | 201 java_ref_.Reset(j_offline_page_bridge); |
| 202 | 202 |
| 203 NotifyIfDoneLoading(); | 203 NotifyIfDoneLoading(); |
| 204 offline_page_model_->AddObserver(this); | 204 offline_page_model_->AddObserver(this); |
| 205 } | 205 } |
| 206 | 206 |
| 207 OfflinePageBridge::~OfflinePageBridge() { | 207 OfflinePageBridge::~OfflinePageBridge() { |
| 208 JNIEnv* env = base::android::AttachCurrentThread(); | 208 JNIEnv* env = base::android::AttachCurrentThread(); |
| 209 | 209 |
| 210 // Native shutdown causes the destruction of |this|. | 210 // Native shutdown causes the destruction of |this|. |
| 211 Java_OfflinePageBridge_offlinePageBridgeDestroyed(env, java_ref_.obj()); | 211 Java_OfflinePageBridge_offlinePageBridgeDestroyed(env, java_ref_); |
| 212 } | 212 } |
| 213 | 213 |
| 214 void OfflinePageBridge::OfflinePageModelLoaded(OfflinePageModel* model) { | 214 void OfflinePageBridge::OfflinePageModelLoaded(OfflinePageModel* model) { |
| 215 DCHECK_EQ(offline_page_model_, model); | 215 DCHECK_EQ(offline_page_model_, model); |
| 216 NotifyIfDoneLoading(); | 216 NotifyIfDoneLoading(); |
| 217 } | 217 } |
| 218 | 218 |
| 219 void OfflinePageBridge::OfflinePageModelChanged(OfflinePageModel* model) { | 219 void OfflinePageBridge::OfflinePageModelChanged(OfflinePageModel* model) { |
| 220 DCHECK_EQ(offline_page_model_, model); | 220 DCHECK_EQ(offline_page_model_, model); |
| 221 JNIEnv* env = base::android::AttachCurrentThread(); | 221 JNIEnv* env = base::android::AttachCurrentThread(); |
| 222 Java_OfflinePageBridge_offlinePageModelChanged(env, java_ref_.obj()); | 222 Java_OfflinePageBridge_offlinePageModelChanged(env, java_ref_); |
| 223 } | 223 } |
| 224 | 224 |
| 225 void OfflinePageBridge::OfflinePageDeleted(int64_t offline_id, | 225 void OfflinePageBridge::OfflinePageDeleted(int64_t offline_id, |
| 226 const ClientId& client_id) { | 226 const ClientId& client_id) { |
| 227 JNIEnv* env = base::android::AttachCurrentThread(); | 227 JNIEnv* env = base::android::AttachCurrentThread(); |
| 228 Java_OfflinePageBridge_offlinePageDeleted( | 228 Java_OfflinePageBridge_offlinePageDeleted(env, java_ref_, offline_id, |
| 229 env, java_ref_.obj(), offline_id, CreateClientId(env, client_id).obj()); | 229 CreateClientId(env, client_id)); |
| 230 } | 230 } |
| 231 | 231 |
| 232 void OfflinePageBridge::HasPages(JNIEnv* env, | 232 void OfflinePageBridge::HasPages(JNIEnv* env, |
| 233 const JavaParamRef<jobject>& obj, | 233 const JavaParamRef<jobject>& obj, |
| 234 const JavaParamRef<jstring>& j_namespace, | 234 const JavaParamRef<jstring>& j_namespace, |
| 235 const JavaParamRef<jobject>& j_callback_obj) { | 235 const JavaParamRef<jobject>& j_callback_obj) { |
| 236 std::string name_space = ConvertJavaStringToUTF8(env, j_namespace); | 236 std::string name_space = ConvertJavaStringToUTF8(env, j_namespace); |
| 237 | 237 |
| 238 ScopedJavaGlobalRef<jobject> j_callback_ref; | 238 ScopedJavaGlobalRef<jobject> j_callback_ref; |
| 239 j_callback_ref.Reset(env, j_callback_obj); | 239 j_callback_ref.Reset(env, j_callback_obj); |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 void OfflinePageBridge::CheckMetadataConsistency( | 412 void OfflinePageBridge::CheckMetadataConsistency( |
| 413 JNIEnv* env, | 413 JNIEnv* env, |
| 414 const JavaParamRef<jobject>& obj) { | 414 const JavaParamRef<jobject>& obj) { |
| 415 offline_page_model_->CheckMetadataConsistency(); | 415 offline_page_model_->CheckMetadataConsistency(); |
| 416 } | 416 } |
| 417 | 417 |
| 418 void OfflinePageBridge::NotifyIfDoneLoading() const { | 418 void OfflinePageBridge::NotifyIfDoneLoading() const { |
| 419 if (!offline_page_model_->is_loaded()) | 419 if (!offline_page_model_->is_loaded()) |
| 420 return; | 420 return; |
| 421 JNIEnv* env = base::android::AttachCurrentThread(); | 421 JNIEnv* env = base::android::AttachCurrentThread(); |
| 422 Java_OfflinePageBridge_offlinePageModelLoaded(env, java_ref_.obj()); | 422 Java_OfflinePageBridge_offlinePageModelLoaded(env, java_ref_); |
| 423 } | 423 } |
| 424 | 424 |
| 425 | 425 |
| 426 ScopedJavaLocalRef<jobject> OfflinePageBridge::CreateClientId( | 426 ScopedJavaLocalRef<jobject> OfflinePageBridge::CreateClientId( |
| 427 JNIEnv* env, | 427 JNIEnv* env, |
| 428 const ClientId& client_id) const { | 428 const ClientId& client_id) const { |
| 429 return Java_OfflinePageBridge_createClientId( | 429 return Java_OfflinePageBridge_createClientId( |
| 430 env, | 430 env, ConvertUTF8ToJavaString(env, client_id.name_space), |
| 431 ConvertUTF8ToJavaString(env, client_id.name_space).obj(), | 431 ConvertUTF8ToJavaString(env, client_id.id)); |
| 432 ConvertUTF8ToJavaString(env, client_id.id).obj()); | |
| 433 } | 432 } |
| 434 | 433 |
| 435 bool RegisterOfflinePageBridge(JNIEnv* env) { | 434 bool RegisterOfflinePageBridge(JNIEnv* env) { |
| 436 return RegisterNativesImpl(env); | 435 return RegisterNativesImpl(env); |
| 437 } | 436 } |
| 438 | 437 |
| 439 } // namespace android | 438 } // namespace android |
| 440 } // namespace offline_pages | 439 } // namespace offline_pages |
| OLD | NEW |