diff options
Diffstat (limited to 'chromium/components/browsing_data/core/browsing_data_utils.cc')
-rw-r--r-- | chromium/components/browsing_data/core/browsing_data_utils.cc | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/chromium/components/browsing_data/core/browsing_data_utils.cc b/chromium/components/browsing_data/core/browsing_data_utils.cc new file mode 100644 index 00000000000..b5b472bc19c --- /dev/null +++ b/chromium/components/browsing_data/core/browsing_data_utils.cc @@ -0,0 +1,176 @@ +// Copyright 2016 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. + +#include "components/browsing_data/core/browsing_data_utils.h" + +#include "components/browsing_data/core/counters/autofill_counter.h" +#include "components/browsing_data/core/counters/history_counter.h" +#include "components/browsing_data/core/counters/passwords_counter.h" +#include "components/browsing_data/core/pref_names.h" +#include "grit/components_strings.h" +#include "ui/base/l10n/l10n_util.h" + +namespace browsing_data { + +base::Time CalculateBeginDeleteTime(TimePeriod time_period) { + base::TimeDelta diff; + base::Time delete_begin_time = base::Time::Now(); + switch (time_period) { + case LAST_HOUR: + diff = base::TimeDelta::FromHours(1); + break; + case LAST_DAY: + diff = base::TimeDelta::FromHours(24); + break; + case LAST_WEEK: + diff = base::TimeDelta::FromHours(7 * 24); + break; + case FOUR_WEEKS: + diff = base::TimeDelta::FromHours(4 * 7 * 24); + break; + case ALL_TIME: + delete_begin_time = base::Time(); + break; + } + return delete_begin_time - diff; +} + +base::string16 GetCounterTextFromResult( + const browsing_data::BrowsingDataCounter::Result* result) { + base::string16 text; + std::string pref_name = result->source()->GetPrefName(); + + if (!result->Finished()) { + // The counter is still counting. + text = l10n_util::GetStringUTF16(IDS_CLEAR_BROWSING_DATA_CALCULATING); + + } else if (pref_name == browsing_data::prefs::kDeletePasswords || + pref_name == browsing_data::prefs::kDeleteDownloadHistory) { + // Counters with trivially formatted result: passwords and downloads. + browsing_data::BrowsingDataCounter::ResultInt count = + static_cast<const browsing_data::BrowsingDataCounter::FinishedResult*>( + result) + ->Value(); + text = l10n_util::GetPluralStringFUTF16( + pref_name == browsing_data::prefs::kDeletePasswords + ? IDS_DEL_PASSWORDS_COUNTER + : IDS_DEL_DOWNLOADS_COUNTER, + count); + } else if (pref_name == browsing_data::prefs::kDeleteBrowsingHistory) { + // History counter. + const browsing_data::HistoryCounter::HistoryResult* history_result = + static_cast<const browsing_data::HistoryCounter::HistoryResult*>( + result); + browsing_data::BrowsingDataCounter::ResultInt local_item_count = + history_result->Value(); + bool has_synced_visits = history_result->has_synced_visits(); + + text = has_synced_visits + ? l10n_util::GetPluralStringFUTF16( + IDS_DEL_BROWSING_HISTORY_COUNTER_SYNCED, local_item_count) + : l10n_util::GetPluralStringFUTF16( + IDS_DEL_BROWSING_HISTORY_COUNTER, local_item_count); + + } else if (pref_name == browsing_data::prefs::kDeleteFormData) { + // Autofill counter. + const browsing_data::AutofillCounter::AutofillResult* autofill_result = + static_cast<const browsing_data::AutofillCounter::AutofillResult*>( + result); + browsing_data::AutofillCounter::ResultInt num_suggestions = + autofill_result->Value(); + browsing_data::AutofillCounter::ResultInt num_credit_cards = + autofill_result->num_credit_cards(); + browsing_data::AutofillCounter::ResultInt num_addresses = + autofill_result->num_addresses(); + + std::vector<base::string16> displayed_strings; + + if (num_credit_cards) { + displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( + IDS_DEL_AUTOFILL_COUNTER_CREDIT_CARDS, num_credit_cards)); + } + if (num_addresses) { + displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( + IDS_DEL_AUTOFILL_COUNTER_ADDRESSES, num_addresses)); + } + if (num_suggestions) { + // We use a different wording for autocomplete suggestions based on the + // length of the entire string. + switch (displayed_strings.size()) { + case 0: + displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( + IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS, num_suggestions)); + break; + case 1: + displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( + IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS_LONG, num_suggestions)); + break; + case 2: + displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( + IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS_SHORT, num_suggestions)); + break; + default: + NOTREACHED(); + } + } + + // Construct the resulting string from the sections in |displayed_strings|. + switch (displayed_strings.size()) { + case 0: + text = l10n_util::GetStringUTF16(IDS_DEL_AUTOFILL_COUNTER_EMPTY); + break; + case 1: + text = displayed_strings[0]; + break; + case 2: + text = l10n_util::GetStringFUTF16(IDS_DEL_AUTOFILL_COUNTER_TWO_TYPES, + displayed_strings[0], + displayed_strings[1]); + break; + case 3: + text = l10n_util::GetStringFUTF16( + IDS_DEL_AUTOFILL_COUNTER_THREE_TYPES, displayed_strings[0], + displayed_strings[1], displayed_strings[2]); + break; + default: + NOTREACHED(); + } + } + + return text; +} + +bool GetDeletionPreferenceFromDataType( + BrowsingDataType data_type, + std::string* out_pref) { + switch (data_type) { + case HISTORY: + *out_pref = prefs::kDeleteBrowsingHistory; + return true; + case CACHE: + *out_pref = prefs::kDeleteCache; + return true; + case COOKIES: + *out_pref = prefs::kDeleteCookies; + return true; + case PASSWORDS: + *out_pref = prefs::kDeletePasswords; + return true; + case FORM_DATA: + *out_pref = prefs::kDeleteFormData; + return true; + case BOOKMARKS: + // Bookmarks are deleted on the Android side. No corresponding deletion + // preference. + return false; + case NUM_TYPES: + // This is not an actual type. + NOTREACHED(); + return false; + } + NOTREACHED(); + return false; +} + +} // namespace browsing_data |