Index: chrome/browser/search/suggestions/blacklist_store.cc |
diff --git a/chrome/browser/search/suggestions/blacklist_store.cc b/chrome/browser/search/suggestions/blacklist_store.cc |
deleted file mode 100644 |
index 85209724b5003fc69809148746e04e41c54e4f2d..0000000000000000000000000000000000000000 |
--- a/chrome/browser/search/suggestions/blacklist_store.cc |
+++ /dev/null |
@@ -1,175 +0,0 @@ |
-// Copyright 2014 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 "chrome/browser/search/suggestions/blacklist_store.h" |
- |
-#include <set> |
-#include <string> |
- |
-#include "base/base64.h" |
-#include "base/metrics/histogram.h" |
-#include "base/prefs/pref_service.h" |
-#include "chrome/common/pref_names.h" |
-#include "components/pref_registry/pref_registry_syncable.h" |
- |
-namespace suggestions { |
- |
-namespace { |
- |
-void PopulateBlacklistSet(const SuggestionsBlacklist& blacklist_proto, |
- std::set<std::string>* blacklist_set) { |
- blacklist_set->clear(); |
- for (int i = 0; i < blacklist_proto.urls_size(); ++i) { |
- blacklist_set->insert(blacklist_proto.urls(i)); |
- } |
-} |
- |
-void PopulateBlacklistProto(const std::set<std::string>& blacklist_set, |
- SuggestionsBlacklist* blacklist_proto) { |
- blacklist_proto->Clear(); |
- for (std::set<std::string>::const_iterator it = blacklist_set.begin(); |
- it != blacklist_set.end(); ++it) { |
- blacklist_proto->add_urls(*it); |
- } |
-} |
- |
-} // namespace |
- |
-BlacklistStore::BlacklistStore(PrefService* profile_prefs) |
- : pref_service_(profile_prefs) { |
- DCHECK(pref_service_); |
- |
- // Log the blacklist's size. A single BlacklistStore is created for the |
- // SuggestionsService; this will run once. |
- SuggestionsBlacklist blacklist_proto; |
- LoadBlacklist(&blacklist_proto); |
- UMA_HISTOGRAM_COUNTS_10000("Suggestions.LocalBlacklistSize", |
- blacklist_proto.urls_size()); |
-} |
- |
-BlacklistStore::~BlacklistStore() {} |
- |
-bool BlacklistStore::BlacklistUrl(const GURL& url) { |
- if (!url.is_valid()) return false; |
- |
- SuggestionsBlacklist blacklist_proto; |
- LoadBlacklist(&blacklist_proto); |
- |
- std::set<std::string> blacklist_set; |
- PopulateBlacklistSet(blacklist_proto, &blacklist_set); |
- |
- if (!blacklist_set.insert(url.spec()).second) { |
- // |url| was already in the blacklist. |
- return true; |
- } |
- |
- PopulateBlacklistProto(blacklist_set, &blacklist_proto); |
- return StoreBlacklist(blacklist_proto); |
-} |
- |
-bool BlacklistStore::GetFirstUrlFromBlacklist(GURL* url) { |
- SuggestionsBlacklist blacklist; |
- LoadBlacklist(&blacklist); |
- if (!blacklist.urls_size()) return false; |
- GURL blacklisted(blacklist.urls(0)); |
- url->Swap(&blacklisted); |
- return true; |
-} |
- |
-bool BlacklistStore::RemoveUrl(const GURL& url) { |
- if (!url.is_valid()) return false; |
- const std::string removal_candidate = url.spec(); |
- |
- SuggestionsBlacklist blacklist; |
- LoadBlacklist(&blacklist); |
- |
- SuggestionsBlacklist updated_blacklist; |
- for (int i = 0; i < blacklist.urls_size(); ++i) { |
- if (blacklist.urls(i) != removal_candidate) |
- updated_blacklist.add_urls(blacklist.urls(i)); |
- } |
- |
- return StoreBlacklist(updated_blacklist); |
-} |
- |
-void BlacklistStore::FilterSuggestions(SuggestionsProfile* profile) { |
- if (!profile->suggestions_size()) |
- return; // Empty profile, nothing to filter. |
- |
- SuggestionsBlacklist blacklist_proto; |
- if (!LoadBlacklist(&blacklist_proto)) { |
- // There was an error loading the blacklist. The blacklist was cleared and |
- // there's nothing to be done about it. |
- return; |
- } |
- if (!blacklist_proto.urls_size()) |
- return; // Empty blacklist, nothing to filter. |
- |
- std::set<std::string> blacklist_set; |
- PopulateBlacklistSet(blacklist_proto, &blacklist_set); |
- |
- // Populate the filtered suggestions. |
- SuggestionsProfile filtered_profile; |
- for (int i = 0; i < profile->suggestions_size(); ++i) { |
- if (blacklist_set.find(profile->suggestions(i).url()) == |
- blacklist_set.end()) { |
- // This suggestion is not blacklisted. |
- ChromeSuggestion* suggestion = filtered_profile.add_suggestions(); |
- // Note: swapping! |
- suggestion->Swap(profile->mutable_suggestions(i)); |
- } |
- } |
- |
- // Swap |profile| and |filtered_profile|. |
- profile->Swap(&filtered_profile); |
-} |
- |
-// static |
-void BlacklistStore::RegisterProfilePrefs( |
- user_prefs::PrefRegistrySyncable* registry) { |
- registry->RegisterStringPref( |
- prefs::kSuggestionsBlacklist, std::string(), |
- user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
-} |
- |
-bool BlacklistStore::LoadBlacklist(SuggestionsBlacklist* blacklist) { |
- DCHECK(blacklist); |
- |
- const std::string base64_blacklist_data = |
- pref_service_->GetString(prefs::kSuggestionsBlacklist); |
- if (base64_blacklist_data.empty()) { |
- blacklist->Clear(); |
- return false; |
- } |
- |
- // If the decode process fails, assume the pref value is corrupt and clear it. |
- std::string blacklist_data; |
- if (!base::Base64Decode(base64_blacklist_data, &blacklist_data) || |
- !blacklist->ParseFromString(blacklist_data)) { |
- VLOG(1) << "Suggestions blacklist data in profile pref is corrupt, " |
- << " clearing it."; |
- blacklist->Clear(); |
- ClearBlacklist(); |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool BlacklistStore::StoreBlacklist(const SuggestionsBlacklist& blacklist) { |
- std::string blacklist_data; |
- if (!blacklist.SerializeToString(&blacklist_data)) return false; |
- |
- std::string base64_blacklist_data; |
- base::Base64Encode(blacklist_data, &base64_blacklist_data); |
- |
- pref_service_->SetString(prefs::kSuggestionsBlacklist, base64_blacklist_data); |
- return true; |
-} |
- |
-void BlacklistStore::ClearBlacklist() { |
- pref_service_->ClearPref(prefs::kSuggestionsBlacklist); |
-} |
- |
-} // namespace suggestions |