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 |