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

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

Issue 2429943002: Remove all synchronous methods from OfflinePageBridge. (Closed)
Patch Set: Fix a test and address nits. Created 4 years, 2 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 <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 offline_pages_vector.push_back(page.spec()); 87 offline_pages_vector.push_back(page.spec());
88 88
89 ScopedJavaLocalRef<jobjectArray> j_result_array = 89 ScopedJavaLocalRef<jobjectArray> j_result_array =
90 base::android::ToJavaArrayOfStrings(env, offline_pages_vector); 90 base::android::ToJavaArrayOfStrings(env, offline_pages_vector);
91 DCHECK(j_result_array.obj()); 91 DCHECK(j_result_array.obj());
92 92
93 Java_CheckPagesExistOfflineCallbackInternal_onResult(env, j_callback_obj, 93 Java_CheckPagesExistOfflineCallbackInternal_onResult(env, j_callback_obj,
94 j_result_array); 94 j_result_array);
95 } 95 }
96 96
97 void GetAllPagesCallback( 97 void MultipleOfflinePageItemCallback(
98 const ScopedJavaGlobalRef<jobject>& j_result_obj, 98 const ScopedJavaGlobalRef<jobject>& j_result_obj,
99 const ScopedJavaGlobalRef<jobject>& j_callback_obj, 99 const ScopedJavaGlobalRef<jobject>& j_callback_obj,
100 const OfflinePageModel::MultipleOfflinePageItemResult& result) { 100 const OfflinePageModel::MultipleOfflinePageItemResult& result) {
101 JNIEnv* env = base::android::AttachCurrentThread(); 101 JNIEnv* env = base::android::AttachCurrentThread();
102 ToJavaOfflinePageList(env, j_result_obj.obj(), result); 102 ToJavaOfflinePageList(env, j_result_obj.obj(), result);
103 base::android::RunCallbackAndroid(j_callback_obj, j_result_obj); 103 base::android::RunCallbackAndroid(j_callback_obj, j_result_obj);
104 } 104 }
105 105
106 void SavePageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, 106 void SavePageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj,
107 const GURL& url, 107 const GURL& url,
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 const JavaParamRef<jobject>& j_callback_obj) { 325 const JavaParamRef<jobject>& j_callback_obj) {
326 DCHECK(j_result_obj); 326 DCHECK(j_result_obj);
327 DCHECK(j_callback_obj); 327 DCHECK(j_callback_obj);
328 328
329 ScopedJavaGlobalRef<jobject> j_result_ref; 329 ScopedJavaGlobalRef<jobject> j_result_ref;
330 j_result_ref.Reset(env, j_result_obj); 330 j_result_ref.Reset(env, j_result_obj);
331 331
332 ScopedJavaGlobalRef<jobject> j_callback_ref; 332 ScopedJavaGlobalRef<jobject> j_callback_ref;
333 j_callback_ref.Reset(env, j_callback_obj); 333 j_callback_ref.Reset(env, j_callback_obj);
334 334
335 offline_page_model_->GetAllPages( 335 offline_page_model_->GetAllPages(base::Bind(&MultipleOfflinePageItemCallback,
336 base::Bind(&GetAllPagesCallback, j_result_ref, j_callback_ref)); 336 j_result_ref, j_callback_ref));
337 } 337 }
338 338
339 ScopedJavaLocalRef<jlongArray> OfflinePageBridge::GetOfflineIdsForClientId( 339 void OfflinePageBridge::GetPageByOfflineId(
340 JNIEnv* env, 340 JNIEnv* env,
341 const JavaParamRef<jobject>& obj, 341 const JavaParamRef<jobject>& obj,
342 const JavaParamRef<jstring>& j_namespace, 342 jlong offline_id,
343 const JavaParamRef<jstring>& j_client_id) { 343 const JavaParamRef<jobject>& j_callback_obj) {
344 DCHECK(offline_page_model_->is_loaded()); 344 ScopedJavaGlobalRef<jobject> j_callback_ref;
345 offline_pages::ClientId client_id; 345 j_callback_ref.Reset(env, j_callback_obj);
346 client_id.name_space = ConvertJavaStringToUTF8(env, j_namespace); 346 offline_page_model_->GetPageByOfflineId(
347 client_id.id = ConvertJavaStringToUTF8(env, j_client_id); 347 offline_id, base::Bind(&SingleOfflinePageItemCallback, j_callback_ref));
348
349 std::vector<int64_t> results =
350 offline_page_model_->MaybeGetOfflineIdsForClientId(client_id);
351
352 return base::android::ToJavaLongArray(env, results);
353 } 348 }
354 349
355 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetPageByOfflineId( 350 std::vector<ClientId> getClientIdsFromObjectArrays(
351 JNIEnv* env,
352 const JavaParamRef<jobjectArray>& j_namespaces_array,
353 const JavaParamRef<jobjectArray>& j_ids_array) {
354 std::vector<std::string> name_spaces;
355 std::vector<std::string> ids;
356 base::android::AppendJavaStringArrayToStringVector(
357 env, j_namespaces_array.obj(), &name_spaces);
358 base::android::AppendJavaStringArrayToStringVector(env, j_ids_array.obj(),
359 &ids);
360 DCHECK_EQ(name_spaces.size(), ids.size());
361 std::vector<ClientId> client_ids;
362
363 for (size_t i = 0; i < name_spaces.size(); i++) {
364 offline_pages::ClientId client_id;
365 client_id.name_space = name_spaces[i];
366 client_id.id = ids[i];
367 client_ids.emplace_back(client_id);
368 }
369
370 return client_ids;
371 }
372
373 void OfflinePageBridge::DeletePagesByClientId(
356 JNIEnv* env, 374 JNIEnv* env,
357 const JavaParamRef<jobject>& obj, 375 const JavaParamRef<jobject>& obj,
358 jlong offline_id) { 376 const JavaParamRef<jobjectArray>& j_namespaces_array,
359 const OfflinePageItem* offline_page = 377 const JavaParamRef<jobjectArray>& j_ids_array,
360 offline_page_model_->MaybeGetPageByOfflineId(offline_id); 378 const JavaParamRef<jobject>& j_callback_obj) {
361 if (!offline_page) 379 ScopedJavaGlobalRef<jobject> j_callback_ref;
362 return ScopedJavaLocalRef<jobject>(); 380 j_callback_ref.Reset(env, j_callback_obj);
363 return ToJavaOfflinePageItem(env, *offline_page); 381 std::vector<ClientId> client_ids =
382 getClientIdsFromObjectArrays(env, j_namespaces_array, j_ids_array);
383 offline_page_model_->DeletePagesByClientIds(
384 client_ids, base::Bind(&DeletePageCallback, j_callback_ref));
385 }
386
387 void OfflinePageBridge::GetPagesByClientId(
388 JNIEnv* env,
389 const JavaParamRef<jobject>& obj,
390 const JavaParamRef<jobject>& j_result_obj,
391 const JavaParamRef<jobjectArray>& j_namespaces_array,
392 const JavaParamRef<jobjectArray>& j_ids_array,
393 const JavaParamRef<jobject>& j_callback_obj) {
394 ScopedJavaGlobalRef<jobject> j_result_ref;
395 j_result_ref.Reset(env, j_result_obj);
396
397 ScopedJavaGlobalRef<jobject> j_callback_ref;
398 j_callback_ref.Reset(env, j_callback_obj);
399 std::vector<ClientId> client_ids =
400 getClientIdsFromObjectArrays(env, j_namespaces_array, j_ids_array);
401 offline_page_model_->GetPagesByClientIds(
402 client_ids, base::Bind(&MultipleOfflinePageItemCallback, j_result_ref,
403 j_callback_ref));
364 } 404 }
365 405
366 void OfflinePageBridge::SelectPageForOnlineUrl( 406 void OfflinePageBridge::SelectPageForOnlineUrl(
367 JNIEnv* env, 407 JNIEnv* env,
368 const JavaParamRef<jobject>& obj, 408 const JavaParamRef<jobject>& obj,
369 const JavaParamRef<jstring>& j_online_url, 409 const JavaParamRef<jstring>& j_online_url,
370 int tab_id, 410 int tab_id,
371 const JavaParamRef<jobject>& j_callback_obj) { 411 const JavaParamRef<jobject>& j_callback_obj) {
372 DCHECK(j_callback_obj); 412 DCHECK(j_callback_obj);
373 413
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 RequestCoordinator* coordinator = 466 RequestCoordinator* coordinator =
427 offline_pages::RequestCoordinatorFactory::GetInstance()-> 467 offline_pages::RequestCoordinatorFactory::GetInstance()->
428 GetForBrowserContext(browser_context_); 468 GetForBrowserContext(browser_context_);
429 469
430 coordinator->SavePageLater( 470 coordinator->SavePageLater(
431 GURL(ConvertJavaStringToUTF8(env, j_url)), client_id, 471 GURL(ConvertJavaStringToUTF8(env, j_url)), client_id,
432 static_cast<bool>(user_requested), 472 static_cast<bool>(user_requested),
433 RequestCoordinator::RequestAvailability::ENABLED_FOR_OFFLINER); 473 RequestCoordinator::RequestAvailability::ENABLED_FOR_OFFLINER);
434 } 474 }
435 475
436 void OfflinePageBridge::DeletePages(
437 JNIEnv* env,
438 const JavaParamRef<jobject>& obj,
439 const JavaParamRef<jobject>& j_callback_obj,
440 const JavaParamRef<jlongArray>& offline_ids_array) {
441 DCHECK(j_callback_obj);
442
443 ScopedJavaGlobalRef<jobject> j_callback_ref;
444 j_callback_ref.Reset(env, j_callback_obj);
445
446 std::vector<int64_t> offline_ids;
447 base::android::JavaLongArrayToInt64Vector(env, offline_ids_array,
448 &offline_ids);
449
450 offline_page_model_->DeletePagesByOfflineId(
451 offline_ids, base::Bind(&DeletePageCallback, j_callback_ref));
452 }
453
454 ScopedJavaLocalRef<jstring> OfflinePageBridge::GetOfflinePageHeaderForReload( 476 ScopedJavaLocalRef<jstring> OfflinePageBridge::GetOfflinePageHeaderForReload(
455 JNIEnv* env, 477 JNIEnv* env,
456 const base::android::JavaParamRef<jobject>& obj, 478 const base::android::JavaParamRef<jobject>& obj,
457 const JavaParamRef<jobject>& j_web_contents) { 479 const JavaParamRef<jobject>& j_web_contents) {
458 content::WebContents* web_contents = 480 content::WebContents* web_contents =
459 content::WebContents::FromJavaWebContents(j_web_contents); 481 content::WebContents::FromJavaWebContents(j_web_contents);
460 if (!web_contents) 482 if (!web_contents)
461 return ScopedJavaLocalRef<jstring>(); 483 return ScopedJavaLocalRef<jstring>();
462 484
463 const offline_pages::OfflinePageHeader* offline_header = 485 const offline_pages::OfflinePageHeader* offline_header =
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 env, ConvertUTF8ToJavaString(env, client_id.name_space), 562 env, ConvertUTF8ToJavaString(env, client_id.name_space),
541 ConvertUTF8ToJavaString(env, client_id.id)); 563 ConvertUTF8ToJavaString(env, client_id.id));
542 } 564 }
543 565
544 bool RegisterOfflinePageBridge(JNIEnv* env) { 566 bool RegisterOfflinePageBridge(JNIEnv* env) {
545 return RegisterNativesImpl(env); 567 return RegisterNativesImpl(env);
546 } 568 }
547 569
548 } // namespace android 570 } // namespace android
549 } // namespace offline_pages 571 } // namespace offline_pages
OLDNEW
« no previous file with comments | « chrome/browser/android/offline_pages/offline_page_bridge.h ('k') | components/offline_pages/offline_page_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698