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

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

Powered by Google App Engine
This is Rietveld 408576698