Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageStorageSpacePolicy.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageStorageSpacePolicy.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageStorageSpacePolicy.java |
| index 68732e6b33d9cb195f9778636c00df0a89d74af9..11d0ffc1716327117139a8aa927ca3e92069bb9b 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageStorageSpacePolicy.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageStorageSpacePolicy.java |
| @@ -4,10 +4,15 @@ |
| package org.chromium.chrome.browser.offlinepages; |
| +import org.chromium.base.Callback; |
| + |
| import java.util.List; |
| /** |
| * Manages the storage space policy for offline pages. |
| + * |
| + * When created, it records the size on disk that is being used, this value never changes after |
| + * creation so make a new OfflinePageStorageSpacePolicy whenever a new measurement is desired. |
| */ |
| public class OfflinePageStorageSpacePolicy { |
| /** |
| @@ -19,19 +24,40 @@ public class OfflinePageStorageSpacePolicy { |
| */ |
| private static final long MINIMUM_CLEANUP_SIZE_BYTES = 5 * (1 << 20); // 5MB |
| - private OfflinePageBridge mOfflinePageBridge; |
| + private long mSizeOfAllPages; |
| + private long mSizeOfPagesToCleanUp; |
| /** |
| - * @param offlinePageBridge An object to access offline page functionality. |
| + * Asynchronously creates an OffinePageStorageSpacePolicy which is prefilled with information |
| + * about the state of the disk usage of Offline Pages. |
| */ |
| - public OfflinePageStorageSpacePolicy(OfflinePageBridge offlinePageBridge) { |
| + public static void create(final OfflinePageBridge offlinePageBridge, |
| + final Callback<OfflinePageStorageSpacePolicy> callback) { |
| assert offlinePageBridge != null; |
| - mOfflinePageBridge = offlinePageBridge; |
| + offlinePageBridge.getAllPages(new OfflinePageBridge.MultipleOfflinePageItemCallback() { |
| + @Override |
| + public void onGetItems(List<OfflinePageItem> allPages) { |
| + callback.onResult(new OfflinePageStorageSpacePolicy(offlinePageBridge, allPages)); |
| + } |
| + }); |
| + } |
| + |
| + /** |
| + * Creates a policy object with the given list of offline pages. |
| + * |
| + * @param offlinePageBridge An object to access offline page functionality. |
| + * @param offlinePages The list of all offline pages. |
| + */ |
| + private OfflinePageStorageSpacePolicy( |
| + OfflinePageBridge offlinePageBridge, List<OfflinePageItem> offlinePages) { |
| + mSizeOfAllPages = offlinePageBridge.getTotalSize(offlinePages); |
| + mSizeOfPagesToCleanUp = |
| + offlinePageBridge.getTotalSize(offlinePageBridge.getPagesToCleanUp()); |
| } |
| /** @return Whether there exists offline pages that could be cleaned up to make space. */ |
| public boolean hasPagesToCleanUp() { |
| - return getSizeOfPagesToCleanUp() > 0; |
| + return mSizeOfPagesToCleanUp > 0; |
| } |
| /** |
| @@ -45,18 +71,10 @@ public class OfflinePageStorageSpacePolicy { |
| /** @return Total size, in bytes, of all saved pages. */ |
| public long getSizeOfAllPages() { |
| - return getTotalSize(mOfflinePageBridge.getAllPages()); |
| + return mSizeOfAllPages; |
| } |
| private long getSizeOfPagesToCleanUp() { |
| - return getTotalSize(mOfflinePageBridge.getPagesToCleanUp()); |
| - } |
| - |
| - private long getTotalSize(List<OfflinePageItem> offlinePages) { |
|
fgorski
2016/03/28 17:58:46
keep this method here, as it is not needed on the
dewittj
2016/03/31 18:43:18
Done.
|
| - long totalSize = 0; |
| - for (OfflinePageItem page : offlinePages) { |
| - totalSize += page.getFileSize(); |
| - } |
| - return totalSize; |
| + return mSizeOfPagesToCleanUp; |
| } |
| } |