| 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..06dc5e1d96640317c61b487e8108b2b9aad913c6 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,39 @@ 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 onResult(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 = getTotalSize(offlinePages);
 | 
| +        mSizeOfPagesToCleanUp = 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,11 +70,11 @@ 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());
 | 
| +        return mSizeOfPagesToCleanUp;
 | 
|      }
 | 
|  
 | 
|      private long getTotalSize(List<OfflinePageItem> offlinePages) {
 | 
| 
 |