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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java

Issue 1465363002: [Storage] Android - ManageSpace UI, Important Origins, and CBD Dialog (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments, working Created 4 years, 8 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/preferences/website/SingleCategoryPreferences.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
index 3d9092f09021db545bd67ddfd4ab88bf5a81273b..b6c9d81051f6629cbe88f10641e0228efda146cd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
@@ -13,10 +13,14 @@ import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.widget.SearchView;
+import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
+import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
@@ -33,6 +37,7 @@ import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate;
import org.chromium.chrome.browser.preferences.ManagedPreferencesUtils;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.preferences.ProtectedContentResetCredentialConfirmDialogFragment;
+import org.chromium.chrome.browser.preferences.website.Website.StoredDataClearedCallback;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.widget.TintedDrawable;
import org.chromium.ui.widget.Toast;
@@ -52,7 +57,8 @@ import java.util.Set;
public class SingleCategoryPreferences extends PreferenceFragment
implements OnPreferenceChangeListener, OnPreferenceClickListener,
AddExceptionPreference.SiteAddedCallback,
- ProtectedContentResetCredentialConfirmDialogFragment.Listener {
+ ProtectedContentResetCredentialConfirmDialogFragment.Listener,
+ ClearAllStorageAction.CanClearStorage {
// The key to use to pass which category this preference should display,
// e.g. Location/Popups/All sites (if blank).
public static final String EXTRA_CATEGORY = "category";
@@ -62,6 +68,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
private TextView mEmptyView;
// The view for searching the list of items.
private SearchView mSearchView;
+ // The clear button displayed in the Storage view.
+ private Button mClearButton;
// The Site Settings Category we are showing.
private SiteSettingsCategory mCategory;
// If not blank, represents a substring to use to search for site names.
@@ -76,6 +84,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
private boolean mIsInitialRun = true;
// The number of sites that are on the Allowed list.
private int mAllowedSiteCount = 0;
+ // The websites that are currently displayed to the user.
+ private List<WebsitePreference> mWebsites = null;
// Keys for individual preferences.
public static final String READ_WRITE_TOGGLE_KEY = "read_write_toggle";
@@ -111,6 +121,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
// This method may be called after the activity has been destroyed.
// In that case, bail out.
if (getActivity() == null) return;
+ mWebsites = null;
// First we scan origins to get settings from there.
List<WebsitePreference> websites = new ArrayList<>();
@@ -188,6 +199,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
}
}
+ mWebsites = websites;
updateBlockedHeader(blocked);
ChromeSwitchPreference globalToggle = (ChromeSwitchPreference)
getPreferenceScreen().findPreference(READ_WRITE_TOGGLE_KEY);
@@ -278,13 +290,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
}
@Override
- public void onActivityCreated(Bundle savedInstanceState) {
- addPreferencesFromResource(R.xml.website_preferences);
- ListView listView = (ListView) getView().findViewById(android.R.id.list);
- mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
- listView.setEmptyView(mEmptyView);
- listView.setDivider(null);
-
+ public View onCreateView(
+ LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Read which category we should be showing.
String category = "";
if (getArguments() != null) {
@@ -294,6 +301,63 @@ public class SingleCategoryPreferences extends PreferenceFragment
if (mCategory == null) {
mCategory = SiteSettingsCategory.fromString(SiteSettingsCategory.CATEGORY_ALL_SITES);
}
+ if (!mCategory.showStorageSites()) {
+ return super.onCreateView(inflater, container, savedInstanceState);
+ } else {
+ return inflater.inflate(R.layout.storage_preference_fragment, container, false);
+ }
+ }
+
+ @Override
+ public void clearStorage() {
+ if (mWebsites == null) {
+ return;
+ }
+ getInfoForOrigins();
+ // The goal is to refresh the info for origins again after we've cleared all of them.
Theresa 2016/04/27 21:11:00 Expand on this comment explaining how we're achiev
dmurph 2016/04/29 23:53:49 Done.
+ final int[] numLeft = new int[1];
Theresa 2016/04/27 21:11:00 numWebsitesLeft? This variable name is a little un
dmurph 2016/04/29 23:53:49 Please tell me there's a better way to do this hah
+ numLeft[0] = mWebsites.size();
+ for (WebsitePreference preference : mWebsites) {
+ preference.site().clearAllStoredData(new StoredDataClearedCallback() {
+ @Override
+ public void onStoredDataCleared() {
+ if (--numLeft[0] <= 0) {
+ getInfoForOrigins();
+ }
+ }
+ });
+ }
+ }
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ addPreferencesFromResource(R.xml.website_preferences);
+ ListView listView = (ListView) getView().findViewById(android.R.id.list);
+ mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
+ listView.setEmptyView(mEmptyView);
+ listView.setDivider(null);
+
+ mClearButton = (Button) getView().findViewById(R.id.clear_button);
+ if (mClearButton != null) {
+ mClearButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (getActivity() == null) return;
+
+ getInfoForOrigins();
Theresa 2016/04/27 21:11:00 We fetch origins in onResume, correct? Do we need
dmurph 2016/04/29 23:53:49 Yeah, probably not. I was just trying to be thorou
+ long totalUsage = 0;
+ if (mWebsites != null) {
+ for (WebsitePreference preference : mWebsites) {
+ totalUsage += preference.site().getTotalUsage();
+ }
+ }
+
+ ClearAllStorageAction clearAllAction =
+ new ClearAllStorageAction(SingleCategoryPreferences.this);
+ clearAllAction.showClearAllDialog(getActivity(), totalUsage);
+ }
+ });
+ }
String title = getArguments().getString(EXTRA_TITLE);
if (title != null) getActivity().setTitle(title);

Powered by Google App Engine
This is Rietveld 408576698