Chromium Code Reviews| Index: chrome/browser/android/offline_pages/offline_page_bridge.cc |
| diff --git a/chrome/browser/android/offline_pages/offline_page_bridge.cc b/chrome/browser/android/offline_pages/offline_page_bridge.cc |
| index 27c315f7fc6789bc6f56f77b086a77f8017fec12..d00b881a0246dd67d5fa6c88078bbdefece6baee 100644 |
| --- a/chrome/browser/android/offline_pages/offline_page_bridge.cc |
| +++ b/chrome/browser/android/offline_pages/offline_page_bridge.cc |
| @@ -4,7 +4,9 @@ |
| #include "chrome/browser/android/offline_pages/offline_page_bridge.h" |
| +#include "base/android/jni_array.h" |
| #include "base/android/jni_string.h" |
| +#include "base/basictypes.h" |
| #include "base/files/file_path.h" |
| #include "base/strings/string_util.h" |
| #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h" |
| @@ -54,6 +56,19 @@ void DeletePageCallback(ScopedJavaGlobalRef<jobject>* j_callback_obj, |
| env, j_callback_ptr->obj(), static_cast<int>(result)); |
| } |
| +void ToJavaOfflinePageList(JNIEnv* env, |
| + jobject j_result_obj, |
| + const std::vector<OfflinePageItem>& offline_pages) { |
| + for (const OfflinePageItem& offline_page : offline_pages) { |
| + Java_OfflinePageBridge_createOfflinePageAndAddToList( |
| + env, j_result_obj, |
| + ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), |
| + offline_page.bookmark_id, |
| + ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), |
| + offline_page.file_size); |
| + } |
| +} |
| + |
| } // namespace |
| static jboolean IsOfflinePagesEnabled(JNIEnv* env, jclass clazz) { |
| @@ -88,15 +103,17 @@ void OfflinePageBridge::GetAllPages(JNIEnv* env, |
| DCHECK(j_result_obj); |
| const std::vector<OfflinePageItem>& offline_pages = |
| offline_page_model_->GetAllPages(); |
| + ToJavaOfflinePageList(env, j_result_obj, offline_pages); |
| +} |
| - for (const OfflinePageItem& offline_page : offline_pages) { |
| - Java_OfflinePageBridge_createOfflinePageAndAddToList( |
| - env, j_result_obj, |
| - ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), |
| - offline_page.bookmark_id, |
| - ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), |
| - offline_page.file_size); |
| - } |
| +void OfflinePageBridge::GetPagesToCleanUp(JNIEnv* env, |
| + jobject obj, |
| + jobject j_result_obj) { |
| + DCHECK(offline_page_model_->is_loaded()); |
| + DCHECK(j_result_obj); |
| + const std::vector<OfflinePageItem>& offline_pages = |
| + offline_page_model_->GetPagesToCleanUp(); |
| + ToJavaOfflinePageList(env, j_result_obj, offline_pages); |
| } |
| ScopedJavaLocalRef<jobject> OfflinePageBridge::GetPageByBookmarkId( |
| @@ -153,6 +170,25 @@ void OfflinePageBridge::DeletePage(JNIEnv* env, |
| &DeletePageCallback, j_callback_obj_ptr.release())); |
| } |
| +void OfflinePageBridge::DeletePages(JNIEnv* env, |
| + jobject obj, |
| + jobject j_callback_obj, |
| + jlongArray bookmark_ids_array) { |
| + DCHECK(j_callback_obj); |
| + |
| + scoped_ptr<ScopedJavaGlobalRef<jobject>> j_callback_obj_ptr( |
|
newt (away)
2015/08/24 22:37:08
Don't wrap ScopedJavaGlobalRef in a scoped_ptr. Ju
fgorski
2015/08/25 18:25:25
Done.
newt (away)
2015/08/27 03:13:27
Thanks for this cleanup.
|
| + new ScopedJavaGlobalRef<jobject>()); |
| + j_callback_obj_ptr->Reset(env, j_callback_obj); |
| + |
| + std::vector<int64> bookmark_ids; |
| + base::android::JavaLongArrayToLongVector(env, bookmark_ids_array, |
| + &bookmark_ids); |
| + |
| + offline_page_model_->DeletePagesByBookmarkId( |
| + bookmark_ids, |
| + base::Bind(&DeletePageCallback, j_callback_obj_ptr.release())); |
| +} |
| + |
| void OfflinePageBridge::NotifyIfDoneLoading() const { |
| if (!offline_page_model_->is_loaded()) |
| return; |