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

Unified Diff: chrome/browser/ui/webui/settings/site_settings_handler.cc

Issue 1661533002: Implement deletion of storage per site. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address nits 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/browser/ui/webui/settings/site_settings_handler.cc
diff --git a/chrome/browser/ui/webui/settings/site_settings_handler.cc b/chrome/browser/ui/webui/settings/site_settings_handler.cc
index 490b179cdd99f2faa87296836592619fefa73e0b..e2d31cc02424368aacb04beeabc6d253b78ac67e 100644
--- a/chrome/browser/ui/webui/settings/site_settings_handler.cc
+++ b/chrome/browser/ui/webui/settings/site_settings_handler.cc
@@ -6,6 +6,7 @@
#include "base/bind.h"
#include "base/values.h"
+#include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h"
#include "chrome/browser/profiles/profile.h"
#include "components/content_settings/core/common/content_settings_types.h"
#include "content/public/browser/browser_thread.h"
@@ -17,11 +18,15 @@ namespace settings {
SiteSettingsHandler::SiteSettingsHandler(Profile* profile)
: profile_(profile) {
+ storage::QuotaManager* quota_manager =
+ content::BrowserContext::GetDefaultStoragePartition(
+ profile_)->GetQuotaManager();
+ storage_info_fetcher_ = new StorageInfoFetcher(quota_manager);
+ storage_info_fetcher_->AddObserver(this);
}
SiteSettingsHandler::~SiteSettingsHandler() {
- if (storage_info_fetcher_.get())
- storage_info_fetcher_->RemoveObserver(this);
+ storage_info_fetcher_->RemoveObserver(this);
}
void SiteSettingsHandler::RegisterMessages() {
@@ -29,6 +34,10 @@ void SiteSettingsHandler::RegisterMessages() {
"fetchUsageTotal",
base::Bind(&SiteSettingsHandler::HandleFetchUsageTotal,
base::Unretained(this)));
+ web_ui()->RegisterMessageCallback(
+ "clearUsage",
+ base::Bind(&SiteSettingsHandler::HandleClearUsage,
+ base::Unretained(this)));
}
void SiteSettingsHandler::OnGetUsageInfo(
@@ -41,23 +50,50 @@ void SiteSettingsHandler::OnGetUsageInfo(
web_ui()->CallJavascriptFunction(
"settings.WebsiteUsagePrivateApi.returnUsageTotal",
base::StringValue(entry.host),
- base::StringValue(ui::FormatBytes(entry.usage)));
- return;
+ base::StringValue(ui::FormatBytes(entry.usage)),
+ base::FundamentalValue(entry.type));
}
}
}
+void SiteSettingsHandler::OnUsageInfoCleared(storage::QuotaStatusCode code) {
+ if (code == storage::kQuotaStatusOk) {
+ web_ui()->CallJavascriptFunction(
+ "settings.WebsiteUsagePrivateApi.onUsageCleared",
+ base::StringValue(clearing_origin_));
+ }
+}
+
void SiteSettingsHandler::HandleFetchUsageTotal(
const base::ListValue* args) {
CHECK_EQ(1U, args->GetSize());
std::string host;
CHECK(args->GetString(0, &host));
usage_host_ = host;
- storage_info_fetcher_ = new StorageInfoFetcher(
- content::BrowserContext::GetDefaultStoragePartition(
- profile_)->GetQuotaManager());
- storage_info_fetcher_->AddObserver(this);
- storage_info_fetcher_->Run();
+ storage_info_fetcher_->FetchStorageInfo();
+}
+
+void SiteSettingsHandler::HandleClearUsage(
+ const base::ListValue* args) {
+ CHECK_EQ(2U, args->GetSize());
+ std::string origin;
+ CHECK(args->GetString(0, &origin));
+ int type;
+ CHECK(args->GetInteger(1, &type));
+
+ GURL url(origin);
+ if (url.is_valid()) {
+ clearing_origin_ = origin;
+
+ // Start by clearing the storage data asynchronously.
+ storage_info_fetcher_->ClearStorage(
+ url.host(), static_cast<storage::StorageType>(type));
+
+ // Also clear the *local* storage data.
+ scoped_refptr<BrowsingDataLocalStorageHelper> local_storage_helper =
+ new BrowsingDataLocalStorageHelper(profile_);
+ local_storage_helper->DeleteOrigin(url);
+ }
}
} // namespace settings
« no previous file with comments | « chrome/browser/ui/webui/settings/site_settings_handler.h ('k') | chrome/test/data/webui/settings/site_list_tests.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698