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

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

Issue 1307753002: [Offline pages] Adding capability to free up space used by Offline pages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing a crash from a second round of manual pass Created 5 years, 4 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 "base/android/jni_array.h"
7 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
8 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
9 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
10 #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h" 11 #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h"
11 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h" 12 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h"
12 #include "chrome/browser/download/download_prefs.h" 13 #include "chrome/browser/download/download_prefs.h"
13 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/profiles/profile_android.h" 15 #include "chrome/browser/profiles/profile_android.h"
15 #include "components/offline_pages/offline_page_feature.h" 16 #include "components/offline_pages/offline_page_feature.h"
16 #include "components/offline_pages/offline_page_item.h" 17 #include "components/offline_pages/offline_page_item.h"
(...skipping 30 matching lines...) Expand all
47 void DeletePageCallback(ScopedJavaGlobalRef<jobject>* j_callback_obj, 48 void DeletePageCallback(ScopedJavaGlobalRef<jobject>* j_callback_obj,
48 OfflinePageModel::DeletePageResult result) { 49 OfflinePageModel::DeletePageResult result) {
49 JNIEnv* env = base::android::AttachCurrentThread(); 50 JNIEnv* env = base::android::AttachCurrentThread();
50 51
51 scoped_ptr<ScopedJavaGlobalRef<jobject>> j_callback_ptr(j_callback_obj); 52 scoped_ptr<ScopedJavaGlobalRef<jobject>> j_callback_ptr(j_callback_obj);
52 53
53 Java_DeletePageCallback_onDeletePageDone( 54 Java_DeletePageCallback_onDeletePageDone(
54 env, j_callback_ptr->obj(), static_cast<int>(result)); 55 env, j_callback_ptr->obj(), static_cast<int>(result));
55 } 56 }
56 57
58 void ToJavaOfflinePageList(JNIEnv* env,
59 jobject j_result_obj,
60 const std::vector<OfflinePageItem>& offline_pages) {
61 for (const OfflinePageItem& offline_page : offline_pages) {
62 Java_OfflinePageBridge_createOfflinePageAndAddToList(
63 env, j_result_obj,
64 ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(),
65 offline_page.bookmark_id,
66 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(),
67 offline_page.file_size);
68 }
69 }
70
57 } // namespace 71 } // namespace
58 72
59 static jboolean IsOfflinePagesEnabled(JNIEnv* env, jclass clazz) { 73 static jboolean IsOfflinePagesEnabled(JNIEnv* env, jclass clazz) {
60 return offline_pages::IsOfflinePagesEnabled(); 74 return offline_pages::IsOfflinePagesEnabled();
61 } 75 }
62 76
63 OfflinePageBridge::OfflinePageBridge(JNIEnv* env, 77 OfflinePageBridge::OfflinePageBridge(JNIEnv* env,
64 jobject obj, 78 jobject obj,
65 content::BrowserContext* browser_context) 79 content::BrowserContext* browser_context)
66 : weak_java_ref_(env, obj), 80 : weak_java_ref_(env, obj),
(...skipping 14 matching lines...) Expand all
81 NotifyIfDoneLoading(); 95 NotifyIfDoneLoading();
82 } 96 }
83 97
84 void OfflinePageBridge::GetAllPages(JNIEnv* env, 98 void OfflinePageBridge::GetAllPages(JNIEnv* env,
85 jobject obj, 99 jobject obj,
86 jobject j_result_obj) { 100 jobject j_result_obj) {
87 DCHECK(offline_page_model_->is_loaded()); 101 DCHECK(offline_page_model_->is_loaded());
88 DCHECK(j_result_obj); 102 DCHECK(j_result_obj);
89 const std::vector<OfflinePageItem>& offline_pages = 103 const std::vector<OfflinePageItem>& offline_pages =
90 offline_page_model_->GetAllPages(); 104 offline_page_model_->GetAllPages();
105 ToJavaOfflinePageList(env, j_result_obj, offline_pages);
106 }
91 107
92 for (const OfflinePageItem& offline_page : offline_pages) { 108 void OfflinePageBridge::GetPagesToCleanUp(JNIEnv* env,
93 Java_OfflinePageBridge_createOfflinePageAndAddToList( 109 jobject obj,
94 env, j_result_obj, 110 jobject j_result_obj) {
95 ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), 111 DCHECK(offline_page_model_->is_loaded());
96 offline_page.bookmark_id, 112 DCHECK(j_result_obj);
97 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), 113 const std::vector<OfflinePageItem>& offline_pages =
98 offline_page.file_size); 114 offline_page_model_->GetPagesToCleanUp();
99 } 115 ToJavaOfflinePageList(env, j_result_obj, offline_pages);
100 } 116 }
101 117
102 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetPageByBookmarkId( 118 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetPageByBookmarkId(
103 JNIEnv* env, 119 JNIEnv* env,
104 jobject obj, 120 jobject obj,
105 jlong bookmark_id) { 121 jlong bookmark_id) {
106 OfflinePageItem offline_page; 122 OfflinePageItem offline_page;
107 if (!offline_page_model_->GetPageByBookmarkId(bookmark_id, &offline_page)) 123 if (!offline_page_model_->GetPageByBookmarkId(bookmark_id, &offline_page))
108 return ScopedJavaLocalRef<jobject>(); 124 return ScopedJavaLocalRef<jobject>();
109 125
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 DCHECK(j_callback_obj); 162 DCHECK(j_callback_obj);
147 163
148 scoped_ptr<ScopedJavaGlobalRef<jobject>> j_callback_obj_ptr( 164 scoped_ptr<ScopedJavaGlobalRef<jobject>> j_callback_obj_ptr(
149 new ScopedJavaGlobalRef<jobject>()); 165 new ScopedJavaGlobalRef<jobject>());
150 j_callback_obj_ptr->Reset(env, j_callback_obj); 166 j_callback_obj_ptr->Reset(env, j_callback_obj);
151 167
152 offline_page_model_->DeletePageByBookmarkId(bookmark_id, base::Bind( 168 offline_page_model_->DeletePageByBookmarkId(bookmark_id, base::Bind(
153 &DeletePageCallback, j_callback_obj_ptr.release())); 169 &DeletePageCallback, j_callback_obj_ptr.release()));
154 } 170 }
155 171
172 void OfflinePageBridge::DeletePages(JNIEnv* env,
173 jobject obj,
174 jobject j_callback_obj,
175 jlongArray bookmark_ids_array) {
176 DCHECK(j_callback_obj);
177
178 scoped_ptr<ScopedJavaGlobalRef<jobject>> j_callback_obj_ptr(
179 new ScopedJavaGlobalRef<jobject>());
180 j_callback_obj_ptr->Reset(env, j_callback_obj);
181
182 std::vector<jlong> bookmark_ids;
183 base::android::JavaLongArrayToLongVector(env, bookmark_ids_array,
184 &bookmark_ids);
185
186 offline_page_model_->DeletePagesByBookmarkId(
187 bookmark_ids,
188 base::Bind(&DeletePageCallback, j_callback_obj_ptr.release()));
189 }
190
156 void OfflinePageBridge::NotifyIfDoneLoading() const { 191 void OfflinePageBridge::NotifyIfDoneLoading() const {
157 if (!offline_page_model_->is_loaded()) 192 if (!offline_page_model_->is_loaded())
158 return; 193 return;
159 JNIEnv* env = base::android::AttachCurrentThread(); 194 JNIEnv* env = base::android::AttachCurrentThread();
160 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); 195 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
161 if (obj.is_null()) 196 if (obj.is_null())
162 return; 197 return;
163 Java_OfflinePageBridge_offlinePageModelLoaded(env, obj.obj()); 198 Java_OfflinePageBridge_offlinePageModelLoaded(env, obj.obj());
164 } 199 }
165 200
(...skipping 24 matching lines...) Expand all
190 return reinterpret_cast<jlong>(new OfflinePageBridge( 225 return reinterpret_cast<jlong>(new OfflinePageBridge(
191 env, obj, ProfileAndroid::FromProfileAndroid(j_profile))); 226 env, obj, ProfileAndroid::FromProfileAndroid(j_profile)));
192 } 227 }
193 228
194 bool RegisterOfflinePageBridge(JNIEnv* env) { 229 bool RegisterOfflinePageBridge(JNIEnv* env) {
195 return RegisterNativesImpl(env); 230 return RegisterNativesImpl(env);
196 } 231 }
197 232
198 } // namespace android 233 } // namespace android
199 } // namespace offline_pages 234 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698