Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(967)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageStorageSpacePolicy.java

Issue 1739503002: Makes the OfflinePageBridge.getAllPages method asynchronous. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}
}

Powered by Google App Engine
This is Rietveld 408576698