Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(603)

Side by Side Diff: chrome/browser/android/offline_pages/offline_page_bridge.cc

Issue 1969233002: [OfflinePages] Make website settings popup rely on asynchronous API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698