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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |