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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/offline_pages/OfflinePageStorageSpaceHeader.java

Issue 1307753002: [Offline pages] Adding capability to free up space used by Offline pages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Converting jlongarray to std::vector<int64> Created 5 years, 4 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/offline_pages/OfflinePageStorageSpaceHeader.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offline_pages/OfflinePageStorageSpaceHeader.java b/chrome/android/java/src/org/chromium/chrome/browser/offline_pages/OfflinePageStorageSpaceHeader.java
new file mode 100644
index 0000000000000000000000000000000000000000..8a29383db292c23e6c8b2207f441bdbd47665dda
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offline_pages/OfflinePageStorageSpaceHeader.java
@@ -0,0 +1,94 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.offline_pages;
+
+import android.app.Activity;
+import android.content.Context;
+import android.support.v7.widget.RecyclerView.ViewHolder;
+import android.text.format.Formatter;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import org.chromium.chrome.R;
+
+import java.util.List;
+
+/**
+ * Header shown in saved pages view to inform user of total used storage and offer freeing up
+ * space.
+ */
+public class OfflinePageStorageSpaceHeader {
+ /**
+ * Minimal total size of all pages, before a header will be shown to offer freeing up space.
+ */
+ private static final long MINIMUM_TOTAL_SIZE_BYTES = 10 * (1 << 20); // 10MB
+ /**
+ * Minimal size of pages to clean up, before a header will be shown to offer freeing up space.
+ */
+ private static final long MINIMUM_CEALNUP_SIZE_BYTES = 5 * (1 << 20); // 5MB
+
+ OfflinePageBridge mOfflinePageBridge;
+ Context mContext;
+ OfflinePageFreeUpSpaceCallback mCallback;
+
+ /**
+ * @param offlinePageBridge An object to access offline page functionality.
+ */
+ public OfflinePageStorageSpaceHeader(Context context, OfflinePageBridge offlinePageBridge,
+ OfflinePageFreeUpSpaceCallback callback) {
+ assert offlinePageBridge != null;
+ mOfflinePageBridge = offlinePageBridge;
+ mContext = context;
+ mCallback = callback;
+ }
+
+ /** @return Whether the header should be shown. */
+ public boolean shouldShow() {
+ return getSizeOfAllPages() > MINIMUM_TOTAL_SIZE_BYTES
+ && getSizeOfPagesToCleanUp() > MINIMUM_CEALNUP_SIZE_BYTES;
+ }
+
+ /** @return A view holder with the contents of the header. */
+ public ViewHolder createHolder(ViewGroup parent) {
+ // TODO(fgorski): Enable recalculation in case some pages were deleted.
+ ViewGroup header = (ViewGroup) LayoutInflater.from(mContext).inflate(
+ R.layout.eb_offline_pages_storage_space_header, parent, false);
+
+ ((TextView) header.findViewById(R.id.storage_header_message))
+ .setText(mContext.getString(R.string.offline_pages_storage_space_message,
+ Formatter.formatFileSize(mContext, getSizeOfAllPages())));
+
+ header.findViewById(R.id.storage_header_button)
+ .setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ OfflinePageFreeUpSpaceDialog dialog =
+ OfflinePageFreeUpSpaceDialog.newInstance(
+ mOfflinePageBridge, mCallback);
+ dialog.show(((Activity) mContext).getFragmentManager(), null);
+ }
+ });
+
+ return new ViewHolder(header) {};
+ }
+
+ private long getSizeOfAllPages() {
+ return getTotalSize(mOfflinePageBridge.getAllPages());
+ }
+
+ 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;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698