Commit 9bf4ba9b authored by Christian Dullweber's avatar Christian Dullweber Committed by Commit Bot

Show storage usage in PageInfo

Show amount of used storage in cookies page in PageInfo.
Fix cookie deletion by using a populated website object.

Screenshot: https://crbug.com/1077766#c46
Bug: 1077766
Change-Id: Ifce703ba4af9bdd14da8403516871b7c8001eb02
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2416371
Commit-Queue: Christian Dullweber <dullweber@chromium.org>
Reviewed-by: default avatarEhimare Okoyomon <eokoyomon@chromium.org>
Cr-Commit-Position: refs/heads/master@{#809750}
parent 509fe7c0
......@@ -277,7 +277,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
* @param websites The websites to search in.
* @return The merged website.
*/
private static Website mergePermissionAndStorageInfoForTopLevelOrigin(
public static Website mergePermissionAndStorageInfoForTopLevelOrigin(
WebsiteAddress address, Collection<Website> websites) {
String origin = address.getOrigin();
String host = Uri.parse(origin).getHost();
......
......@@ -9,15 +9,20 @@ import android.view.ViewGroup;
import androidx.appcompat.app.AppCompatActivity;
import org.chromium.components.browser_ui.site_settings.SingleWebsiteSettings;
import org.chromium.components.browser_ui.site_settings.SiteDataCleaner;
import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
import org.chromium.components.browser_ui.site_settings.Website;
import org.chromium.components.browser_ui.site_settings.WebsiteAddress;
import org.chromium.components.browser_ui.site_settings.WebsitePermissionsFetcher;
import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
import org.chromium.components.content_settings.CookieControlsBridge;
import org.chromium.components.content_settings.CookieControlsEnforcement;
import org.chromium.components.content_settings.CookieControlsObserver;
import org.chromium.components.embedder_support.util.Origin;
import java.util.Collection;
/**
* Class for controlling the page info cookies section.
*/
......@@ -35,6 +40,7 @@ public class PageInfoCookiesController
private int mBlockedCookies;
private int mStatus;
private boolean mIsEnforced;
private Website mWebsite;
public PageInfoCookiesController(PageInfoMainController mainController, PageInfoRowView rowView,
PageInfoControllerDelegate delegate, String fullUrl) {
......@@ -80,18 +86,31 @@ public class PageInfoCookiesController
mSubPage.setCookiesCount(mAllowedCookies, mBlockedCookies);
mSubPage.setCookieBlockingStatus(mStatus, mIsEnforced);
SiteSettingsCategory storageCategory = SiteSettingsCategory.createFromType(
mMainController.getBrowserContext(), SiteSettingsCategory.Type.USE_STORAGE);
new WebsitePermissionsFetcher(mMainController.getBrowserContext())
.fetchPreferencesForCategory(storageCategory, this::onStorageFetched);
return mSubPage.requireView();
}
private void onStorageFetched(Collection<Website> result) {
String origin = Origin.createOrThrow(mFullUrl).toString();
WebsiteAddress address = WebsiteAddress.create(origin);
mWebsite = SingleWebsiteSettings.mergePermissionAndStorageInfoForTopLevelOrigin(
address, result);
mSubPage.setStorageUsage(mWebsite.getTotalUsage());
}
private void onCheckedChangedCallback(boolean state) {
mBridge.setThirdPartyCookieBlockingEnabledForSite(state);
}
private void clearData() {
String origin = Origin.createOrThrow(mFullUrl).toString();
WebsiteAddress address = WebsiteAddress.create(origin);
new SiteDataCleaner().clearData(mMainController.getBrowserContext(),
new Website(address, address), mMainController::exitSubpage);
if (mWebsite == null) return;
new SiteDataCleaner().clearData(
mMainController.getBrowserContext(), mWebsite, mMainController::exitSubpage);
}
@Override
......
......@@ -4,6 +4,7 @@
package org.chromium.components.page_info;
import android.os.Bundle;
import android.text.format.Formatter;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
......@@ -94,4 +95,12 @@ public class PageInfoCookiesPreference extends PreferenceFragmentCompat {
mCookieInUse.setTitle(getContext().getResources().getQuantityString(
R.plurals.page_info_cookies_in_use, allowedCookies, allowedCookies));
}
public void setStorageUsage(long storageUsage) {
mCookieInUse.setSummary(
storageUsage > 0 ? String.format(
getContext().getString(R.string.origin_settings_storage_usage_brief),
Formatter.formatShortFileSize(getContext(), storageUsage))
: null);
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment