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

Unified Diff: chrome/browser/content_settings/content_settings_pattern.h

Issue 7885006: Moving ContentSettingsPattern from chrome/browser/content_settings to chrome/common. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Keeping up to date with trunk. Created 9 years, 3 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/content_settings/content_settings_pattern.h
diff --git a/chrome/browser/content_settings/content_settings_pattern.h b/chrome/browser/content_settings/content_settings_pattern.h
deleted file mode 100644
index 232b96b7b0311446e4d32a60ad8f17f7e6756db4..0000000000000000000000000000000000000000
--- a/chrome/browser/content_settings/content_settings_pattern.h
+++ /dev/null
@@ -1,257 +0,0 @@
-// Copyright (c) 2011 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.
-
-// Patterns used in content setting rules.
-
-#ifndef CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_PATTERN_H_
-#define CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_PATTERN_H_
-#pragma once
-
-#include <ostream>
-#include <string>
-
-#include "base/basictypes.h"
-
-class GURL;
-
-namespace content_settings {
-class PatternParser;
-}
-
-// A pattern used in content setting rules. See |IsValid| for a description of
-// possible patterns.
-class ContentSettingsPattern {
- public:
- // Each content settings pattern describes a set of origins. Patterns, and the
- // sets they describe, have specific relations. |Relation| describes the
- // relation of two patterns A and B. When pattern A is compared with pattern B
- // (A compare B) interesting relations are:
- // - IDENTITY:
- // Pattern A and B are identical. The patterns are equal.
- //
- // - DISJOINT_ORDER_PRE:
- // Pattern A and B have no intersection. A and B never match the origin of
- // a URL at the same time. But pattern A has a higher precedence than
- // pattern B when patterns are sorted.
- //
- // - DISJOINT_ORDER_POST:
- // Pattern A and B have no intersection. A and B never match the origin of
- // a URL at the same time. But pattern A has a lower precedence than
- // pattern B when patterns are sorted.
- //
- // - SUCCESSOR:
- // Pattern A and B have an intersection. But pattern B has a higher
- // precedence than pattern A for URLs that are matched by both pattern.
- //
- // - PREDECESSOR:
- // Pattern A and B have an intersection. But pattern A has a higher
- // precedence than pattern B for URLs that are matched by both pattern.
- enum Relation {
- DISJOINT_ORDER_POST = -2,
- SUCCESSOR = -1,
- IDENTITY = 0,
- PREDECESSOR = 1,
- DISJOINT_ORDER_PRE = 2,
- };
-
- class BuilderInterface {
- public:
- virtual ~BuilderInterface() {}
-
- virtual BuilderInterface* WithPort(const std::string& port) = 0;
-
- virtual BuilderInterface* WithPortWildcard() = 0;
-
- virtual BuilderInterface* WithHost(const std::string& host) = 0;
-
- virtual BuilderInterface* WithDomainWildcard() = 0;
-
- virtual BuilderInterface* WithScheme(const std::string& scheme) = 0;
-
- virtual BuilderInterface* WithSchemeWildcard() = 0;
-
- virtual BuilderInterface* WithPath(const std::string& path) = 0;
-
- virtual BuilderInterface* Invalid() = 0;
-
- // Returns a content settings pattern according to the current configuration
- // of the builder.
- virtual ContentSettingsPattern Build() = 0;
- };
-
- static BuilderInterface* CreateBuilder(bool use_legacy_validate);
-
- // The version of the pattern format implemented.
- static const int kContentSettingsPatternVersion;
-
- // The format of a domain wildcard.
- static const char* kDomainWildcard;
-
- // The length of kDomainWildcard (without the trailing '\0').
- static const size_t kDomainWildcardLength;
-
- // Returns a wildcard content settings pattern that matches all possible valid
- // origins.
- static ContentSettingsPattern Wildcard();
-
- // Returns a pattern that matches the scheme and host of this URL, as well as
- // all subdomains and ports.
- static ContentSettingsPattern FromURL(const GURL& url);
-
- // Returns a pattern that matches exactly this URL.
- static ContentSettingsPattern FromURLNoWildcard(const GURL& url);
-
- // Returns a pattern that matches the given pattern specification.
- // Valid patterns specifications are:
- // - [*.]domain.tld (matches domain.tld and all sub-domains)
- // - host (matches an exact hostname)
- // - scheme://host:port (supported schemes: http,https)
- // - scheme://[*.]domain.tld:port (supported schemes: http,https)
- // - file://path (The path has to be an absolute path and start with a '/')
- // - a.b.c.d (matches an exact IPv4 ip)
- // - [a:b:c:d:e:f:g:h] (matches an exact IPv6 ip)
- static ContentSettingsPattern FromString(const std::string& pattern_spec);
-
- static ContentSettingsPattern LegacyFromString(
- const std::string& pattern_spec);
-
- // Constructs an empty pattern. Empty patterns are invalid patterns. Invalid
- // patterns match nothing.
- ContentSettingsPattern();
-
- // True if this is a valid pattern.
- bool IsValid() const { return is_valid_; }
-
- // True if |url| matches this pattern.
- bool Matches(const GURL& url) const;
-
- // Returns a std::string representation of this pattern.
- const std::string ToString() const;
-
- // Compares the pattern with a given |other| pattern and returns the
- // |Relation| of the two patterns.
- Relation Compare(const ContentSettingsPattern& other) const;
-
- // Returns true if the pattern and the |other| pattern are identical.
- bool operator==(const ContentSettingsPattern& other) const;
-
- // Returns true if the pattern and the |other| pattern are not identical.
- bool operator!=(const ContentSettingsPattern& other) const;
-
- // Returns true if the pattern has a lower priority than the |other| pattern.
- bool operator<(const ContentSettingsPattern& other) const;
-
- // Returns true if the pattern has a higher priority than the |other| pattern.
- bool operator>(const ContentSettingsPattern& other) const;
-
- private:
- friend class content_settings::PatternParser;
- friend class ContentSettingsPatternParserTest_SerializePatterns_Test;
- friend class Builder;
-
- struct PatternParts {
- PatternParts();
- ~PatternParts();
-
- // Lowercase string of the URL scheme to match. This string is empty if the
- // |is_scheme_wildcard| flag is set.
- std::string scheme;
-
- // True if the scheme wildcard is set.
- bool is_scheme_wildcard;
-
- // Normalized string that is either of the following:
- // - IPv4 or IPv6
- // - hostname
- // - domain
- // - empty string if the |is_host_wildcard flag is set.
- std::string host;
-
- // True if the domain wildcard is set.
- bool has_domain_wildcard;
-
- // String with the port to match. This string is empty if the
- // |is_port_wildcard| flag is set.
- std::string port;
-
- // True if the port wildcard is set.
- bool is_port_wildcard;
-
- // TODO(markusheintz): Needed for legacy reasons. Remove. Path
- // specification. Only used for content settings pattern with a "file"
- // scheme part.
- std::string path;
- };
-
- class Builder : public BuilderInterface {
- public:
- explicit Builder(bool use_legacy_validate);
- virtual ~Builder();
-
- // Overrides BuilderInterface
- virtual BuilderInterface* WithPort(const std::string& port);
-
- virtual BuilderInterface* WithPortWildcard();
-
- virtual BuilderInterface* WithHost(const std::string& host);
-
- virtual BuilderInterface* WithDomainWildcard();
-
- virtual BuilderInterface* WithScheme(const std::string& scheme);
-
- virtual BuilderInterface* WithSchemeWildcard();
-
- virtual BuilderInterface* WithPath(const std::string& path);
-
- virtual BuilderInterface* Invalid();
-
- virtual ContentSettingsPattern Build();
- private:
- // Canonicalizes the pattern parts so that they are ASCII only, either
- // in original (if it was already ASCII) or punycode form.
- static void Canonicalize(PatternParts* parts);
-
- // Returns true when the pattern |parts| represent a valid pattern.
- static bool Validate(const PatternParts& parts);
-
- static bool LegacyValidate(const PatternParts& parts);
-
- bool is_valid_;
-
- bool use_legacy_validate_;
-
- PatternParts parts_;
-
- DISALLOW_COPY_AND_ASSIGN(Builder);
- };
-
- static Relation CompareScheme(
- const ContentSettingsPattern::PatternParts& parts,
- const ContentSettingsPattern::PatternParts& other_parts);
-
- static Relation CompareHost(
- const ContentSettingsPattern::PatternParts& parts,
- const ContentSettingsPattern::PatternParts& other_parts);
-
- static Relation ComparePort(
- const ContentSettingsPattern::PatternParts& parts,
- const ContentSettingsPattern::PatternParts& other_parts);
-
- static bool Validate(const PatternParts& parts);
-
- ContentSettingsPattern(const PatternParts& parts, bool valid);
-
- PatternParts parts_;
-
- bool is_valid_;
-};
-
-// Stream operator so ContentSettingsPattern can be used in assertion
-// statements.
-inline std::ostream& operator<<(
- std::ostream& out, const ContentSettingsPattern& pattern) {
- return out << pattern.ToString();
-}
-
-#endif // CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_PATTERN_H_

Powered by Google App Engine
This is Rietveld 408576698