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

Unified Diff: chrome/browser/privacy_blacklist/blacklist.cc

Issue 2862041: Remove abonded privacy blacklist implementation. (Closed)
Patch Set: fix unit tests Created 10 years, 6 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/privacy_blacklist/blacklist.cc
diff --git a/chrome/browser/privacy_blacklist/blacklist.cc b/chrome/browser/privacy_blacklist/blacklist.cc
deleted file mode 100644
index 9b4bda1464d9d371e2ecebc54fabec7caf4740ed..0000000000000000000000000000000000000000
--- a/chrome/browser/privacy_blacklist/blacklist.cc
+++ /dev/null
@@ -1,223 +0,0 @@
-// Copyright (c) 2009 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/privacy_blacklist/blacklist.h"
-
-#include <algorithm>
-#include <limits>
-#include <string>
-
-#include "base/file_path.h"
-#include "base/file_util.h"
-#include "base/string_util.h"
-#include "chrome/browser/pref_service.h"
-#include "chrome/browser/profile.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/common/url_constants.h"
-#include "net/http/http_util.h"
-
-namespace {
-
-const char* const cookie_headers[2] = { "cookie", "set-cookie" };
-
-} // namespace
-
-const unsigned int Blacklist::kBlockAll = 1;
-const unsigned int Blacklist::kBlockCookies = 1 << 1;
-const unsigned int Blacklist::kDontSendReferrer = 1 << 2;
-const unsigned int Blacklist::kDontSendUserAgent = 1 << 3;
-const unsigned int Blacklist::kBlockUnsecure = 1 << 4;
-const unsigned int Blacklist::kBlockRequest = kBlockAll | kBlockUnsecure;
-const unsigned int Blacklist::kModifySentHeaders =
- kBlockCookies | kDontSendUserAgent | kDontSendReferrer;
-const unsigned int Blacklist::kModifyReceivedHeaders = kBlockCookies;
-
-// static
-bool Blacklist::Matches(const std::string& pattern, const std::string& url) {
- if (pattern.size() > url.size())
- return false;
-
- std::string::size_type p = 0;
- std::string::size_type u = 0;
-
- while (pattern[p] != '\0' && url[u] != '\0') {
- if (pattern[p] == '@') {
- while (pattern[++p] == '@') {} // Consecutive @ are redundant.
-
- if (pattern[p] == '\0')
- return true; // Nothing to match after the @.
-
- // Look for another wildcard to determine pattern-chunk.
- std::string::size_type tp = pattern.find_first_of("@", p);
-
- // If it must match until the end, compare the last characters.
- if (tp == std::string::npos) {
- std::string::size_type ur = url.size() - u;
- std::string::size_type pr = pattern.size() - p;
- return (pr <= ur) &&
- (url.compare(url.size() - pr, pr, pattern.c_str() + p) == 0);
- }
-
- // Else find the pattern chunk which is pattern[p:tp]
- std::string::size_type tu = url.find(pattern.c_str() + p, u, tp - p);
- if (tu == std::string::npos)
- return false; // Pattern chunk not found.
-
- // Since tp is strictly greater than p, both u and p always increase.
- u = tu + tp - p;
- p = tp;
- continue;
- }
-
- // Match non-wildcard character.
- if (pattern[p++] != url[u++])
- return false;
- }
- return pattern[p] == '\0';
-}
-
-bool Blacklist::Entry::IsBlocked(const GURL& url) const {
- return (attributes_ & kBlockAll) ||
- ((attributes_ & kBlockUnsecure) && !url.SchemeIsSecure());
-}
-
-Blacklist::Entry::Entry(const std::string& pattern, const Provider* provider,
- bool is_exception)
- : attributes_(0),
- is_exception_(is_exception),
- pattern_(pattern),
- provider_(provider) {}
-
-void Blacklist::Entry::AddAttributes(unsigned int attributes) {
- attributes_ |= attributes;
-}
-
-bool Blacklist::Match::IsBlocked(const GURL& url) const {
- return (attributes() & kBlockAll) ||
- ((attributes() & kBlockUnsecure) && !url.SchemeIsSecure());
-}
-
-Blacklist::Match::Match() : matching_attributes_(0), exception_attributes_(0) {}
-
-void Blacklist::Match::AddEntry(const Entry* entry) {
- if (entry->is_exception()) {
- exception_attributes_ |= entry->attributes();
- exception_entries_.push_back(entry);
- } else {
- matching_attributes_ |= entry->attributes();
- matching_entries_.push_back(entry);
- }
-}
-
-Blacklist::Blacklist(PrefService* prefs) : prefs_(prefs) {
- LoadPreferences();
-}
-
-Blacklist::~Blacklist() {
-}
-
-void Blacklist::AddEntry(Entry* entry) {
- DCHECK(entry);
- blacklist_.push_back(linked_ptr<Entry>(entry));
-}
-
-void Blacklist::AddProvider(Provider* provider) {
- DCHECK(provider);
- providers_.push_back(linked_ptr<Provider>(provider));
-}
-
-// Returns a pointer to the Blacklist-owned entry which matches the given
-// URL. If no matching Entry is found, returns null.
-Blacklist::Match* Blacklist::FindMatch(const GURL& url) const {
- // Never match something which is not http, https or ftp.
- // TODO(idanan): Investigate if this would be an inclusion test instead of an
- // exclusion test and if there are other schemes to test for.
- if (!url.SchemeIs(chrome::kHttpScheme) &&
- !url.SchemeIs(chrome::kHttpsScheme) &&
- !url.SchemeIs(chrome::kFtpScheme))
- return 0;
- std::string url_spec = GetURLAsLookupString(url);
- Match* match = NULL;
- for (EntryList::const_iterator i = blacklist_.begin();
- i != blacklist_.end(); ++i) {
- if (Matches((*i)->pattern(), url_spec)) {
- if (!match)
- match = new Match;
- match->AddEntry(i->get());
- }
- }
- return match;
-}
-
-bool Blacklist::LoadEntryPreference(const ListValue& pref,
- const Provider* provider) {
- EntryList entries;
- for (ListValue::const_iterator i = pref.begin(); i != pref.end(); ++i) {
- if (!(*i)->IsType(Value::TYPE_DICTIONARY))
- return false;
- const DictionaryValue* entry_pref = static_cast<DictionaryValue*>(*i);
- std::string pattern;
- int attributes;
- bool is_exception;
- if (!(entry_pref->GetString(L"pattern", &pattern) &&
- entry_pref->GetInteger(L"attributes", &attributes) &&
- entry_pref->GetBoolean(L"exception", &is_exception)))
- return false;
- Entry* entry = new Entry(pattern, provider, is_exception);
- entry->AddAttributes(static_cast<unsigned int>(attributes));
- entries.push_back(linked_ptr<Entry>(entry));
- }
- blacklist_.insert(blacklist_.end(), entries.begin(), entries.end());
- return true;
-}
-
-bool Blacklist::LoadProviderPreference(const DictionaryValue& pref,
- const std::wstring& path) {
- std::string name, url;
- ListValue* entries;
- if (!(pref.GetString(L"name", &name) && pref.GetString(L"url", &url) &&
- pref.GetList(L"entries", &entries)))
- return false;
- linked_ptr<Provider> provider(new Provider(name, url, path));
- if (LoadEntryPreference(*entries, provider.get()))
- providers_.push_back(provider);
- return true;
- return false;
-}
-
-bool Blacklist::LoadPreferences() {
- DCHECK(prefs_);
- const DictionaryValue* blacklist_rules = prefs_->GetDictionary(
- prefs::kPrivacyFilterRules);
- if (!blacklist_rules)
- return false;
- bool result = true;
- for (DictionaryValue::key_iterator key = blacklist_rules->begin_keys();
- key != blacklist_rules->end_keys(); ++key) {
- DictionaryValue* provider;
- if (!(blacklist_rules->GetDictionaryWithoutPathExpansion(*key, &provider) &&
- LoadProviderPreference(*provider, *key)))
- result = false;
- }
- return result;
-}
-
-// static
-std::string Blacklist::GetURLAsLookupString(const GURL& url) {
- std::string url_spec = url.host() + url.path();
- if (!url.query().empty())
- url_spec = url_spec + "?" + url.query();
-
- return url_spec;
-}
-
-// static
-void Blacklist::RegisterUserPrefs(PrefService* user_prefs) {
- user_prefs->RegisterDictionaryPref(prefs::kPrivacyFilterRules);
-}
-
-// static
-std::string Blacklist::StripCookies(const std::string& header) {
- return net::HttpUtil::StripHeaders(header, cookie_headers, 2);
-}
« no previous file with comments | « chrome/browser/privacy_blacklist/blacklist.h ('k') | chrome/browser/privacy_blacklist/blacklist_interceptor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698