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