Index: chrome/browser/browsing_data/registrable_domain_filter_builder.cc |
diff --git a/chrome/browser/browsing_data/registrable_domain_filter_builder.cc b/chrome/browser/browsing_data/registrable_domain_filter_builder.cc |
index 139b046f7983f020dc8bceddcb5d071c3f61baf0..2fe4b83f356503b10cff17e06b7e5fd1bdfc3c91 100644 |
--- a/chrome/browser/browsing_data/registrable_domain_filter_builder.cc |
+++ b/chrome/browser/browsing_data/registrable_domain_filter_builder.cc |
@@ -107,6 +107,16 @@ RegistrableDomainFilterBuilder::BuildChannelIDFilter() const { |
base::Owned(domains_and_ips), mode()); |
} |
+base::Callback<bool(const std::string& site)> |
+RegistrableDomainFilterBuilder::BuildPluginFilter() const { |
+ std::set<std::string>* domains_and_ips = |
+ new std::set<std::string>(domain_list_); |
+ return base::Bind( |
+ &RegistrableDomainFilterBuilder |
+ ::MatchesPluginSiteForRegisterableDomainsAndIPs, |
+ base::Owned(domains_and_ips), mode()); |
+} |
+ |
bool RegistrableDomainFilterBuilder::operator==( |
const RegistrableDomainFilterBuilder& other) const { |
return domain_list_ == other.domain_list_ && mode() == other.mode(); |
@@ -172,3 +182,19 @@ RegistrableDomainFilterBuilder::MatchesChannelIDForRegisterableDomainsAndIPs( |
return ((mode == WHITELIST) == (domains_and_ips->find(channel_id_server_id) != |
domains_and_ips->end())); |
} |
+ |
+// static |
+bool |
+RegistrableDomainFilterBuilder::MatchesPluginSiteForRegisterableDomainsAndIPs( |
+ std::set<std::string>* domains_and_ips, |
+ Mode mode, |
+ const std::string& site) { |
+ // If |site| is a third- or lower-level domain, find the corresponding eTLD+1. |
+ std::string domain_or_ip = |
+ GetDomainAndRegistry(site, INCLUDE_PRIVATE_REGISTRIES); |
+ if (domain_or_ip.empty()) |
+ domain_or_ip = site; |
+ |
+ return ((mode == WHITELIST) == (domains_and_ips->find(domain_or_ip) != |
+ domains_and_ips->end())); |
+} |