| Index: chrome/browser/browsing_data/browsing_data_filter_builder.h
|
| diff --git a/chrome/browser/browsing_data/browsing_data_filter_builder.h b/chrome/browser/browsing_data/browsing_data_filter_builder.h
|
| index 878df03ae2873a2a921f0c3f7f6ed1a3fa816a17..835721f8774cd8fc10ad7222f655bb96a844cd0d 100644
|
| --- a/chrome/browser/browsing_data/browsing_data_filter_builder.h
|
| +++ b/chrome/browser/browsing_data/browsing_data_filter_builder.h
|
| @@ -5,11 +5,13 @@
|
| #ifndef CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_FILTER_BUILDER_H_
|
| #define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_FILTER_BUILDER_H_
|
|
|
| +#include <memory>
|
| #include <ostream>
|
| #include <set>
|
| +#include <string>
|
| #include <vector>
|
|
|
| -#include "base/callback.h"
|
| +#include "base/callback_forward.h"
|
|
|
| class GURL;
|
|
|
| @@ -17,10 +19,13 @@ namespace net {
|
| class CanonicalCookie;
|
| }
|
|
|
| -// An abstract class that builds GURL->bool predicates to filter browsing data.
|
| -// These filters can be of two modes - a whitelist or a blacklist. Different
|
| -// subclasses can have different ways of defining the set of URLs - for example,
|
| -// as domains or origins.
|
| +namespace url {
|
| +class Origin;
|
| +}
|
| +
|
| +// An class that builds GURL->bool predicates to filter browsing data.
|
| +// These filters can be of two modes - a whitelist or a blacklist. The filter
|
| +// entries can be origins or registrable domains.
|
| //
|
| // This class defines interface to build filters for various kinds of browsing
|
| // data. |BuildGeneralFilter()| is useful for most browsing data storage
|
| @@ -36,32 +41,43 @@ class BrowsingDataFilterBuilder {
|
| };
|
|
|
| // Constructs a filter with the given |mode| - whitelist or blacklist.
|
| - explicit BrowsingDataFilterBuilder(Mode mode);
|
| + static std::unique_ptr<BrowsingDataFilterBuilder> Create(Mode mode);
|
|
|
| - virtual ~BrowsingDataFilterBuilder();
|
| + virtual ~BrowsingDataFilterBuilder() = default;
|
|
|
| - // Sets the |mode| of the filter.
|
| - void SetMode(Mode mode);
|
| + // Adds an origin to the filter. Note that this makes it impossible to
|
| + // create cookie, channel ID, or plugin filters, as those datatypes are
|
| + // scoped more broadly than an origin.
|
| + virtual void AddOrigin(const url::Origin& origin) = 0;
|
| +
|
| + // Adds a registrable domain (e.g. google.com), an internal hostname
|
| + // (e.g. localhost), or an IP address (e.g. 127.0.0.1). Other domains, such
|
| + // as third and lower level domains (e.g. www.google.com) are not accepted.
|
| + // Formally, it must hold that GetDomainAndRegistry(|registrable_domain|, _)
|
| + // is |registrable_domain| itself or an empty string for this method
|
| + // to accept it.
|
| + virtual void AddRegisterableDomain(const std::string& registrable_domain) = 0;
|
|
|
| // Returns true if we're an empty blacklist, where we delete everything.
|
| - bool IsEmptyBlacklist() const;
|
| + virtual bool IsEmptyBlacklist() const = 0;
|
|
|
| // Builds a filter that matches URLs that are in the whitelist,
|
| // or aren't in the blacklist.
|
| - virtual base::Callback<bool(const GURL&)> BuildGeneralFilter() const = 0;
|
| + virtual base::RepeatingCallback<bool(const GURL&)>
|
| + BuildGeneralFilter() const = 0;
|
|
|
| // Builds a filter that matches cookies whose sources are in the whitelist,
|
| // or aren't in the blacklist.
|
| - virtual base::Callback<bool(const net::CanonicalCookie& pattern)>
|
| + virtual base::RepeatingCallback<bool(const net::CanonicalCookie& pattern)>
|
| BuildCookieFilter() const = 0;
|
|
|
| // Builds a filter that matches channel IDs whose server identifiers are in
|
| // the whitelist, or aren't in the blacklist.
|
| - virtual base::Callback<bool(const std::string& server_id)>
|
| + virtual base::RepeatingCallback<bool(const std::string& server_id)>
|
| BuildChannelIDFilter() const = 0;
|
|
|
| // Builds a filter that matches the |site| of a plugin.
|
| - virtual base::Callback<bool(const std::string& site)>
|
| + virtual base::RepeatingCallback<bool(const std::string& site)>
|
| BuildPluginFilter() const = 0;
|
|
|
| // A convenience method to produce an empty blacklist, a filter that matches
|
| @@ -69,16 +85,14 @@ class BrowsingDataFilterBuilder {
|
| static base::Callback<bool(const GURL&)> BuildNoopFilter();
|
|
|
| // The mode of the filter.
|
| - Mode mode() const { return mode_; }
|
| -
|
| - protected:
|
| - // Whether or not any URLs have been added to this builder.
|
| - virtual bool IsEmpty() const = 0;
|
| + virtual Mode GetMode() const = 0;
|
|
|
| - private:
|
| - Mode mode_;
|
| + // Create a new filter builder with the same set of origins, set of domains,
|
| + // and mode.
|
| + virtual std::unique_ptr<BrowsingDataFilterBuilder> Copy() const = 0;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(BrowsingDataFilterBuilder);
|
| + // Comparison.
|
| + virtual bool operator==(const BrowsingDataFilterBuilder& other) const = 0;
|
| };
|
|
|
| #endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_FILTER_BUILDER_H_
|
|
|