| 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..756e3f4b5142615aa1f955d2c353b7ffd691d914 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
|
| @@ -8,6 +8,9 @@ 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 +22,47 @@ 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.
|
| + * Callback that is fired when a policy object is ready after calling |create|.
|
| + */
|
| + public interface CreateCallback {
|
| + public void onCreateDone(OfflinePageStorageSpacePolicy policy);
|
| + }
|
| +
|
| + /**
|
| + * 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 CreateCallback callback) {
|
| assert offlinePageBridge != null;
|
| - mOfflinePageBridge = offlinePageBridge;
|
| + offlinePageBridge.getAllPages(new OfflinePageBridge.GetAllPagesCallback() {
|
| + @Override
|
| + public void onGetAllPagesDone(List<OfflinePageItem> allPages) {
|
| + callback.onCreateDone(
|
| + 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 = getSizeOfPagesToCleanUp();
|
| }
|
|
|
| /** @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 +76,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) {
|
| - long totalSize = 0;
|
| - for (OfflinePageItem page : offlinePages) {
|
| - totalSize += page.getFileSize();
|
| - }
|
| - return totalSize;
|
| + return mSizeOfPagesToCleanUp;
|
| }
|
| }
|
|
|