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 package org.chromium.chrome.browser.offlinepages; | 5 package org.chromium.chrome.browser.offlinepages; |
6 | 6 |
7 import android.os.AsyncTask; | 7 import android.os.AsyncTask; |
8 | 8 |
9 import org.chromium.base.ObserverList; | 9 import org.chromium.base.ObserverList; |
10 import org.chromium.base.ThreadUtils; | 10 import org.chromium.base.ThreadUtils; |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
147 percentageOfFree, 101); | 147 percentageOfFree, 101); |
148 } | 148 } |
149 return null; | 149 return null; |
150 } | 150 } |
151 }.execute(); | 151 }.execute(); |
152 } | 152 } |
153 | 153 |
154 /** | 154 /** |
155 * Creates offline pages bridge for a given profile. | 155 * Creates offline pages bridge for a given profile. |
156 */ | 156 */ |
157 @VisibleForTesting | |
158 public OfflinePageBridge(Profile profile) { | 157 public OfflinePageBridge(Profile profile) { |
159 mNativeOfflinePageBridge = nativeInit(profile); | 158 mNativeOfflinePageBridge = nativeInit(profile); |
160 } | 159 } |
161 | 160 |
162 /** | 161 /** |
163 * Returns true if the offline pages feature is enabled. | 162 * Returns true if the offline pages feature is enabled. |
164 */ | 163 */ |
165 public static boolean isEnabled() { | 164 public static boolean isEnabled() { |
166 ThreadUtils.assertOnUiThread(); | 165 ThreadUtils.assertOnUiThread(); |
167 if (sIsEnabled == null) { | 166 if (sIsEnabled == null) { |
(...skipping 19 matching lines...) Expand all Loading... | |
187 assert mNativeOfflinePageBridge != 0; | 186 assert mNativeOfflinePageBridge != 0; |
188 nativeDestroy(mNativeOfflinePageBridge); | 187 nativeDestroy(mNativeOfflinePageBridge); |
189 mIsNativeOfflinePageModelLoaded = false; | 188 mIsNativeOfflinePageModelLoaded = false; |
190 mNativeOfflinePageBridge = 0; | 189 mNativeOfflinePageBridge = 0; |
191 } | 190 } |
192 | 191 |
193 /** | 192 /** |
194 * Adds an observer to offline page model changes. | 193 * Adds an observer to offline page model changes. |
195 * @param observer The observer to be added. | 194 * @param observer The observer to be added. |
196 */ | 195 */ |
197 @VisibleForTesting | |
198 public void addObserver(OfflinePageModelObserver observer) { | 196 public void addObserver(OfflinePageModelObserver observer) { |
199 mObservers.addObserver(observer); | 197 mObservers.addObserver(observer); |
200 } | 198 } |
201 | 199 |
202 /** | 200 /** |
203 * Removes an observer to offline page model changes. | 201 * Removes an observer to offline page model changes. |
204 * @param observer The observer to be removed. | 202 * @param observer The observer to be removed. |
205 */ | 203 */ |
206 @VisibleForTesting | |
207 public void removeObserver(OfflinePageModelObserver observer) { | 204 public void removeObserver(OfflinePageModelObserver observer) { |
208 mObservers.removeObserver(observer); | 205 mObservers.removeObserver(observer); |
209 } | 206 } |
210 | 207 |
211 /** | 208 /** |
212 * @return Gets all available offline pages. Requires that the model is alre ady loaded. | 209 * @return Gets all available offline pages. Requires that the model is alre ady loaded. |
213 */ | 210 */ |
214 @VisibleForTesting | |
215 public List<OfflinePageItem> getAllPages() { | 211 public List<OfflinePageItem> getAllPages() { |
216 assert mIsNativeOfflinePageModelLoaded; | 212 assert mIsNativeOfflinePageModelLoaded; |
217 List<OfflinePageItem> result = new ArrayList<OfflinePageItem>(); | 213 List<OfflinePageItem> result = new ArrayList<OfflinePageItem>(); |
218 nativeGetAllPages(mNativeOfflinePageBridge, result); | 214 nativeGetAllPages(mNativeOfflinePageBridge, result); |
219 return result; | 215 return result; |
220 } | 216 } |
221 | 217 |
222 /** | 218 /** |
223 * Gets an offline page associated with a provided bookmark ID. | 219 * Gets an offline page associated with a provided bookmark ID. |
224 * | 220 * |
225 * @param bookmarkId Id of the bookmark associated with an offline page. | 221 * @param bookmarkId Id of the bookmark associated with an offline page. |
226 * @return An {@link OfflinePageItem} matching the bookmark Id or <code>null </code> if none | 222 * @return An {@link OfflinePageItem} matching the bookmark Id or <code>null </code> if none |
227 * exist. | 223 * exist. |
228 */ | 224 */ |
229 @VisibleForTesting | |
230 public OfflinePageItem getPageByBookmarkId(BookmarkId bookmarkId) { | 225 public OfflinePageItem getPageByBookmarkId(BookmarkId bookmarkId) { |
231 return nativeGetPageByBookmarkId(mNativeOfflinePageBridge, bookmarkId.ge tId()); | 226 return nativeGetPageByBookmarkId(mNativeOfflinePageBridge, bookmarkId.ge tId()); |
232 } | 227 } |
233 | 228 |
234 /** | 229 /** |
235 * Gets an offline page associated with a provided online URL. | 230 * Gets an offline page associated with a provided online URL. |
236 * | 231 * |
237 * @param onlineURL URL of the page. | 232 * @param onlineURL URL of the page. |
238 * @return An {@link OfflinePageItem} matching the URL or <code>null</code> if none exist. | 233 * @return An {@link OfflinePageItem} matching the URL or <code>null</code> if none exist. |
239 */ | 234 */ |
240 @VisibleForTesting | |
241 public OfflinePageItem getPageByOnlineURL(String onlineURL) { | 235 public OfflinePageItem getPageByOnlineURL(String onlineURL) { |
242 return nativeGetPageByOnlineURL(mNativeOfflinePageBridge, onlineURL); | 236 return nativeGetPageByOnlineURL(mNativeOfflinePageBridge, onlineURL); |
243 } | 237 } |
244 | 238 |
245 /** | 239 /** |
246 * Saves the web page loaded into web contents offline. | 240 * Saves the web page loaded into web contents offline. |
247 * | 241 * |
248 * @param webContents Contents of the page to save. | 242 * @param webContents Contents of the page to save. |
249 * @param bookmarkId Id of the bookmark related to the offline page. | 243 * @param bookmarkId Id of the bookmark related to the offline page. |
250 * @param callback Interface that contains a callback. | 244 * @param callback Interface that contains a callback. |
251 * @see SavePageCallback | 245 * @see SavePageCallback |
252 */ | 246 */ |
253 @VisibleForTesting | |
254 public void savePage(final WebContents webContents, final BookmarkId bookmar kId, | 247 public void savePage(final WebContents webContents, final BookmarkId bookmar kId, |
255 final SavePageCallback callback) { | 248 final SavePageCallback callback) { |
256 assert mIsNativeOfflinePageModelLoaded; | 249 assert mIsNativeOfflinePageModelLoaded; |
257 assert webContents != null; | 250 assert webContents != null; |
258 | 251 |
259 SavePageCallback callbackWrapper = new SavePageCallback() { | 252 SavePageCallback callbackWrapper = new SavePageCallback() { |
260 @Override | 253 @Override |
261 public void onSavePageDone(int savePageResult, String url) { | 254 public void onSavePageDone(int savePageResult, String url) { |
262 // TODO(fgorski): Eliminate call to getAllPages() here. | 255 // TODO(fgorski): Eliminate call to getAllPages() here. |
263 // See http://crbug.com/566939 | 256 // See http://crbug.com/566939 |
(...skipping 19 matching lines...) Expand all Loading... | |
283 nativeMarkPageAccessed(mNativeOfflinePageBridge, bookmarkId.getId()); | 276 nativeMarkPageAccessed(mNativeOfflinePageBridge, bookmarkId.getId()); |
284 } | 277 } |
285 | 278 |
286 /** | 279 /** |
287 * Deletes an offline page related to a specified bookmark. | 280 * Deletes an offline page related to a specified bookmark. |
288 * | 281 * |
289 * @param bookmarkId Bookmark ID for which the offline copy will be deleted. | 282 * @param bookmarkId Bookmark ID for which the offline copy will be deleted. |
290 * @param callback Interface that contains a callback. | 283 * @param callback Interface that contains a callback. |
291 * @see DeletePageCallback | 284 * @see DeletePageCallback |
292 */ | 285 */ |
293 @VisibleForTesting | |
294 public void deletePage(final BookmarkId bookmarkId, DeletePageCallback callb ack) { | 286 public void deletePage(final BookmarkId bookmarkId, DeletePageCallback callb ack) { |
295 assert mIsNativeOfflinePageModelLoaded; | 287 assert mIsNativeOfflinePageModelLoaded; |
296 | 288 |
297 recordFreeSpaceHistograms("OfflinePages.DeletePage.FreeSpacePercentage", | 289 recordFreeSpaceHistograms("OfflinePages.DeletePage.FreeSpacePercentage", |
298 "OfflinePages.DeletePage.FreeSpaceMB"); | 290 "OfflinePages.DeletePage.FreeSpaceMB"); |
299 | 291 |
300 DeletePageCallback callbackWrapper = wrapCallbackWithHistogramReporting( callback); | 292 DeletePageCallback callbackWrapper = wrapCallbackWithHistogramReporting( callback); |
301 nativeDeletePage(mNativeOfflinePageBridge, callbackWrapper, bookmarkId.g etId()); | 293 nativeDeletePage(mNativeOfflinePageBridge, callbackWrapper, bookmarkId.g etId()); |
302 } | 294 } |
303 | 295 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
340 return result; | 332 return result; |
341 } | 333 } |
342 | 334 |
343 /** | 335 /** |
344 * Starts a check of offline page metadata, e.g. are all offline copies pres ent. | 336 * Starts a check of offline page metadata, e.g. are all offline copies pres ent. |
345 */ | 337 */ |
346 public void checkOfflinePageMetadata() { | 338 public void checkOfflinePageMetadata() { |
347 nativeCheckMetadataConsistency(mNativeOfflinePageBridge); | 339 nativeCheckMetadataConsistency(mNativeOfflinePageBridge); |
348 } | 340 } |
349 | 341 |
342 /** | |
343 * Gets the offline URL of based on the online url of an offline page, if on e exists. | |
jianli
2015/12/16 01:41:23
Gets the offline URL of an offline page that is sa
fgorski
2015/12/16 22:12:58
Done.
| |
344 * @param onlineUrl Online URL, which might have offline copy. | |
345 * @return URL pointing to the offline copy or <code>null</code> in none exi sts. | |
jianli
2015/12/16 01:41:23
in => if
fgorski
2015/12/16 22:12:58
Done.
| |
346 */ | |
347 public String getOfflineUrlByOnlineUrl(String onlineUrl) { | |
348 assert mIsNativeOfflinePageModelLoaded; | |
349 return nativeGetOfflineUrlByOnlineUrl(mNativeOfflinePageBridge, onlineUr l); | |
350 } | |
351 | |
352 /** | |
353 * Checks whether a provided url belongs to an offline page. | |
jianli
2015/12/16 01:41:23
Returns true if an offline page stored in the prov
fgorski
2015/12/16 22:12:58
Done.
| |
354 * @param offlineUrl A URL potentially pointing to an offline copy of an off line page. | |
355 * @return Whether a provided url points to an offline copy of an offline pa ge. | |
356 */ | |
357 @VisibleForTesting | |
358 public boolean isOfflinePageUrl(String offlineUrl) { | |
359 assert mIsNativeOfflinePageModelLoaded; | |
360 return nativeIsOfflinePageUrl(mNativeOfflinePageBridge, offlineUrl); | |
361 } | |
362 | |
350 private DeletePageCallback wrapCallbackWithHistogramReporting( | 363 private DeletePageCallback wrapCallbackWithHistogramReporting( |
351 final DeletePageCallback callback) { | 364 final DeletePageCallback callback) { |
352 final long totalPageSizeBefore = getTotalSize(getAllPages()); | 365 final long totalPageSizeBefore = getTotalSize(getAllPages()); |
353 return new DeletePageCallback() { | 366 return new DeletePageCallback() { |
354 @Override | 367 @Override |
355 public void onDeletePageDone(int deletePageResult) { | 368 public void onDeletePageDone(int deletePageResult) { |
356 // TODO(fgorski): Eliminate call to getAllPages() here. | 369 // TODO(fgorski): Eliminate call to getAllPages() here. |
357 // See http://crbug.com/566939 | 370 // See http://crbug.com/566939 |
358 if (deletePageResult == DeletePageResult.SUCCESS && isOfflinePag eModelLoaded()) { | 371 if (deletePageResult == DeletePageResult.SUCCESS && isOfflinePag eModelLoaded()) { |
359 long totalPageSizeAfter = getTotalSize(getAllPages()); | 372 long totalPageSizeAfter = getTotalSize(getAllPages()); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
418 private native void nativeSavePage(long nativeOfflinePageBridge, SavePageCal lback callback, | 431 private native void nativeSavePage(long nativeOfflinePageBridge, SavePageCal lback callback, |
419 WebContents webContents, long bookmarkId); | 432 WebContents webContents, long bookmarkId); |
420 private native void nativeMarkPageAccessed(long nativeOfflinePageBridge, lon g bookmarkId); | 433 private native void nativeMarkPageAccessed(long nativeOfflinePageBridge, lon g bookmarkId); |
421 private native void nativeDeletePage(long nativeOfflinePageBridge, | 434 private native void nativeDeletePage(long nativeOfflinePageBridge, |
422 DeletePageCallback callback, long bookmarkId); | 435 DeletePageCallback callback, long bookmarkId); |
423 private native void nativeDeletePages( | 436 private native void nativeDeletePages( |
424 long nativeOfflinePageBridge, DeletePageCallback callback, long[] bo okmarkIds); | 437 long nativeOfflinePageBridge, DeletePageCallback callback, long[] bo okmarkIds); |
425 private native void nativeGetPagesToCleanUp( | 438 private native void nativeGetPagesToCleanUp( |
426 long nativeOfflinePageBridge, List<OfflinePageItem> offlinePages); | 439 long nativeOfflinePageBridge, List<OfflinePageItem> offlinePages); |
427 private native void nativeCheckMetadataConsistency(long nativeOfflinePageBri dge); | 440 private native void nativeCheckMetadataConsistency(long nativeOfflinePageBri dge); |
441 private native String nativeGetOfflineUrlByOnlineUrl( | |
442 long nativeOfflinePageBridge, String onlineUrl); | |
443 private native boolean nativeIsOfflinePageUrl(long nativeOfflinePageBridge, String offlineUrl); | |
428 } | 444 } |
OLD | NEW |