Chromium Code Reviews| 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 |