| Index: chrome/browser/browsing_data/origin_filter_builder.cc
|
| diff --git a/chrome/browser/browsing_data/origin_filter_builder.cc b/chrome/browser/browsing_data/origin_filter_builder.cc
|
| index 900b018310032b7c25264d00343dea8c920a9868..5a25e487fadcac5fc54d241ce61b7d171b97bf6a 100644
|
| --- a/chrome/browser/browsing_data/origin_filter_builder.cc
|
| +++ b/chrome/browser/browsing_data/origin_filter_builder.cc
|
| @@ -8,6 +8,7 @@
|
| #include <vector>
|
|
|
| #include "base/bind.h"
|
| +#include "components/content_settings/core/common/content_settings_pattern.h"
|
|
|
| namespace {
|
|
|
| @@ -47,6 +48,10 @@ void OriginFilterBuilder::SetMode(Mode mode) {
|
| mode_ = mode;
|
| }
|
|
|
| +bool OriginFilterBuilder::IsEmptyBlacklist() const {
|
| + return mode_ == Mode::BLACKLIST && origin_list_.empty();
|
| +}
|
| +
|
| base::Callback<bool(const GURL&)>
|
| OriginFilterBuilder::BuildSameOriginFilter() const {
|
| std::set<url::Origin>* origins = new std::set<url::Origin>(origin_list_);
|
| @@ -54,6 +59,20 @@ base::Callback<bool(const GURL&)>
|
| base::Owned(origins), mode_);
|
| }
|
|
|
| +base::Callback<bool(const ContentSettingsPattern& pattern)>
|
| + OriginFilterBuilder::BuildSameOriginContentSettingsFilter() const {
|
| + std::set<url::Origin>* origins = new std::set<url::Origin>(origin_list_);
|
| + return base::Bind(&OriginFilterBuilder::MatchesContentSettingsPattern,
|
| + base::Owned(origins), mode_);
|
| +}
|
| +
|
| +base::Callback<bool(const net::CanonicalCookie& pattern)>
|
| + OriginFilterBuilder::BuildDomainCookieFilter() const {
|
| + std::set<url::Origin>* origins = new std::set<url::Origin>(origin_list_);
|
| + return base::Bind(&OriginFilterBuilder::MatchesCookieWithAllSchemes,
|
| + base::Owned(origins), mode_);
|
| +}
|
| +
|
| base::Callback<bool(const GURL&)>
|
| OriginFilterBuilder::BuildDomainFilter() const {
|
| std::set<url::Origin>* origins = new std::set<url::Origin>(origin_list_);
|
| @@ -74,6 +93,44 @@ bool OriginFilterBuilder::MatchesURL(
|
| }
|
|
|
| // static
|
| +bool OriginFilterBuilder::MatchesContentSettingsPattern(
|
| + std::set<url::Origin>* origins,
|
| + Mode mode,
|
| + const ContentSettingsPattern& pattern) {
|
| + for (const url::Origin& origin : *origins) {
|
| + if (pattern.Matches(GURL(origin.Serialize())))
|
| + return mode == WHITELIST;
|
| + }
|
| + return mode != WHITELIST;
|
| +}
|
| +
|
| +// static
|
| +bool OriginFilterBuilder::MatchesCookieWithAllSchemes(
|
| + std::set<url::Origin>* origins,
|
| + Mode mode,
|
| + const net::CanonicalCookie& cookie) {
|
| + if (origins->empty())
|
| + return mode == BLACKLIST;
|
| +
|
| + std::string host = cookie.Domain();
|
| + if (cookie.IsDomainCookie()) {
|
| + host = host.substr(1);
|
| + }
|
| + bool found = false;
|
| + for (const url::Origin& origin : *origins) {
|
| + GURL origin_url(origin.Serialize());
|
| + if (origin_url.DomainIs(host)) {
|
| + found = true;
|
| + break;
|
| + }
|
| + }
|
| + if (mode == WHITELIST) {
|
| + return found;
|
| + }
|
| + return !found;
|
| +}
|
| +
|
| +// static
|
| bool OriginFilterBuilder::MatchesURLWithSubdomains(
|
| std::set<url::Origin>* origins, Mode mode, const GURL& url) {
|
| if (origins->empty())
|
|
|