| 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 |