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

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

Issue 2752263003: Count site data size for important sites (Closed)
Patch Set: rebase Created 3 years, 7 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
« no previous file with comments | « chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.h ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
diff --git a/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc b/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
index dcab617ab5f88efaf0d355616450eb3a788f8732..8ba91de6eac3e4977effc485c0bf650d7f80ba75 100644
--- a/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
+++ b/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
@@ -18,6 +18,7 @@
#include "chrome/browser/browsing_data/browsing_data_helper.h"
#include "chrome/browser/browsing_data/browsing_data_important_sites_util.h"
#include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
+#include "chrome/browser/engagement/important_sites_usage_counter.h"
#include "chrome/browser/engagement/important_sites_util.h"
#include "chrome/browser/history/web_history_service_factory.h"
#include "chrome/browser/sync/profile_sync_service_factory.h"
@@ -28,6 +29,7 @@
#include "components/browsing_data/core/pref_names.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/browsing_data_filter_builder.h"
+#include "content/public/browser/storage_partition.h"
#include "content/public/browser/web_ui.h"
#include "ui/base/text/bytes_formatting.h"
@@ -37,8 +39,6 @@ namespace {
const int kMaxTimesHistoryNoticeShown = 1;
-const int kMaxImportantSites = 10;
-
// TODO(msramek): Get the list of deletion preferences from the JS side.
const char* kCounterPrefs[] = {
browsing_data::prefs::kDeleteBrowsingHistory,
@@ -282,38 +282,54 @@ void ClearBrowsingDataHandler::OnClearingTaskFinished(
void ClearBrowsingDataHandler::HandleGetImportantSites(
const base::ListValue* args) {
AllowJavascript();
- const base::Value* callback_id;
- CHECK(args->Get(0, &callback_id));
+ std::string callback_id;
+ CHECK(args->GetString(0, &callback_id));
DCHECK(base::FeatureList::IsEnabled(features::kImportantSitesInCbd));
Profile* profile = profile_->GetOriginalProfile();
bool important_sites_dialog_disabled =
ImportantSitesUtil::IsDialogDisabled(profile);
- base::ListValue important_sites_list;
- if (!important_sites_dialog_disabled) {
- std::vector<ImportantSitesUtil::ImportantDomainInfo> important_sites =
- ImportantSitesUtil::GetImportantRegisterableDomains(profile,
- kMaxImportantSites);
- for (const auto& info : important_sites) {
- auto entry = base::MakeUnique<base::DictionaryValue>();
- entry->SetString(kRegisterableDomainField, info.registerable_domain);
- // The |reason_bitfield| is only passed to Javascript to be logged
- // from |HandleClearBrowsingData|.
- entry->SetInteger(kReasonBitField, info.reason_bitfield);
- entry->SetString(kExampleOriginField, info.example_origin.spec());
- // Initially all sites are selected for deletion.
- entry->SetBoolean(kIsCheckedField, true);
- // TODO(dullweber): Get size.
- entry->SetString(kStorageSizeField, ui::FormatBytes(0));
- bool has_notifications =
- (info.reason_bitfield & (1 << ImportantReason::NOTIFICATIONS)) != 0;
- entry->SetBoolean(kHasNotificationsField, has_notifications);
- important_sites_list.Append(std::move(entry));
- }
+ if (important_sites_dialog_disabled) {
+ ResolveJavascriptCallback(base::Value(callback_id), base::ListValue());
+ return;
}
- ResolveJavascriptCallback(*callback_id, important_sites_list);
+ std::vector<ImportantSitesUtil::ImportantDomainInfo> important_sites =
+ ImportantSitesUtil::GetImportantRegisterableDomains(
+ profile, ImportantSitesUtil::kMaxImportantSites);
+ content::StoragePartition* partition =
+ content::BrowserContext::GetDefaultStoragePartition(profile);
+ storage::QuotaManager* quota_manager = partition->GetQuotaManager();
+ content::DOMStorageContext* dom_storage = partition->GetDOMStorageContext();
+
+ ImportantSitesUsageCounter::GetUsage(
+ std::move(important_sites), quota_manager, dom_storage,
+ base::BindOnce(&ClearBrowsingDataHandler::OnFetchImportantSitesFinished,
+ weak_ptr_factory_.GetWeakPtr(), callback_id));
+}
+
+void ClearBrowsingDataHandler::OnFetchImportantSitesFinished(
+ const std::string& callback_id,
+ std::vector<ImportantSitesUtil::ImportantDomainInfo> important_sites) {
+ base::ListValue important_sites_list;
+
+ for (const auto& info : important_sites) {
+ auto entry = base::MakeUnique<base::DictionaryValue>();
+ entry->SetString(kRegisterableDomainField, info.registerable_domain);
+ // The |reason_bitfield| is only passed to Javascript to be logged
+ // from |HandleClearBrowsingData|.
+ entry->SetInteger(kReasonBitField, info.reason_bitfield);
+ entry->SetString(kExampleOriginField, info.example_origin.spec());
+ // Initially all sites are selected for deletion.
+ entry->SetBoolean(kIsCheckedField, true);
+ entry->SetString(kStorageSizeField, ui::FormatBytes(info.usage));
+ bool has_notifications =
+ (info.reason_bitfield & (1 << ImportantReason::NOTIFICATIONS)) != 0;
+ entry->SetBoolean(kHasNotificationsField, has_notifications);
+ important_sites_list.Append(std::move(entry));
+ }
+ ResolveJavascriptCallback(base::Value(callback_id), important_sites_list);
}
void ClearBrowsingDataHandler::HandleInitialize(const base::ListValue* args) {
« no previous file with comments | « chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.h ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698