Index: chrome/common/content_settings_pattern.cc |
diff --git a/chrome/common/content_settings_pattern.cc b/chrome/common/content_settings_pattern.cc |
index 03a746ee618ce49dcc44ffa2597aec36758b75f8..b50c5074a4b0d29ce458b0e768e69c309cd907b4 100644 |
--- a/chrome/common/content_settings_pattern.cc |
+++ b/chrome/common/content_settings_pattern.cc |
@@ -8,16 +8,12 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/strings/string_split.h" |
-#include "base/strings/string_util.h" |
#include "chrome/common/content_settings_pattern_parser.h" |
#include "chrome/common/render_messages.h" |
-#include "chrome/common/url_constants.h" |
#include "extensions/common/constants.h" |
-#include "ipc/ipc_message_utils.h" |
#include "net/base/dns_util.h" |
#include "net/base/net_util.h" |
#include "url/gurl.h" |
-#include "url/url_canon.h" |
namespace { |
@@ -85,6 +81,44 @@ typedef ContentSettingsPattern::BuilderInterface BuilderInterface; |
// //////////////////////////////////////////////////////////////////////////// |
// ContentSettingsPattern::Builder |
// |
+class ContentSettingsPattern::Builder : |
+ public ContentSettingsPattern::BuilderInterface { |
+ public: |
+ explicit Builder(bool use_legacy_validate); |
+ virtual ~Builder(); |
+ |
+ // BuilderInterface: |
+ virtual BuilderInterface* WithPort(const std::string& port) OVERRIDE; |
+ virtual BuilderInterface* WithPortWildcard() OVERRIDE; |
+ virtual BuilderInterface* WithHost(const std::string& host) OVERRIDE; |
+ virtual BuilderInterface* WithDomainWildcard() OVERRIDE; |
+ virtual BuilderInterface* WithScheme(const std::string& scheme) OVERRIDE; |
+ virtual BuilderInterface* WithSchemeWildcard() OVERRIDE; |
+ virtual BuilderInterface* WithPath(const std::string& path) OVERRIDE; |
+ virtual BuilderInterface* WithPathWildcard() OVERRIDE; |
+ virtual BuilderInterface* Invalid() OVERRIDE; |
+ virtual ContentSettingsPattern Build() OVERRIDE; |
+ |
+ private: |
+ // Canonicalizes the pattern parts so that they are ASCII only, either |
+ // in original (if it was already ASCII) or punycode form. Returns true if |
+ // the canonicalization was successful. |
+ static bool 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); |
+}; |
+ |
ContentSettingsPattern::Builder::Builder(bool use_legacy_validate) |
: is_valid_(true), |
use_legacy_validate_(use_legacy_validate) {} |
@@ -311,11 +345,6 @@ ContentSettingsPattern::PatternParts::~PatternParts() {} |
// TODO(jochen): update once this feature is no longer behind a flag. |
const int ContentSettingsPattern::kContentSettingsPatternVersion = 1; |
-// TODO(markusheintz): These two constants were moved to the Pattern Parser. |
-// Remove once the dependency of the ContentSettingsBaseProvider is removed. |
-const char* ContentSettingsPattern::kDomainWildcard = "[*.]"; |
-const size_t ContentSettingsPattern::kDomainWildcardLength = 4; |
- |
// static |
BuilderInterface* ContentSettingsPattern::CreateBuilder( |
bool validate) { |
@@ -385,19 +414,13 @@ ContentSettingsPattern ContentSettingsPattern::FromURLNoWildcard( |
// static |
ContentSettingsPattern ContentSettingsPattern::FromString( |
+ const char* extension_scheme, |
const std::string& pattern_spec) { |
scoped_ptr<ContentSettingsPattern::BuilderInterface> builder( |
ContentSettingsPattern::CreateBuilder(false)); |
- content_settings::PatternParser::Parse(pattern_spec, builder.get()); |
- return builder->Build(); |
-} |
- |
-// static |
-ContentSettingsPattern ContentSettingsPattern::LegacyFromString( |
- const std::string& pattern_spec) { |
- scoped_ptr<ContentSettingsPattern::BuilderInterface> builder( |
- ContentSettingsPattern::CreateBuilder(true)); |
- content_settings::PatternParser::Parse(pattern_spec, builder.get()); |
+ content_settings::PatternParser::Parse(extension_scheme, |
+ pattern_spec, |
+ builder.get()); |
return builder->Build(); |
} |
@@ -497,9 +520,10 @@ bool ContentSettingsPattern::MatchesAllHosts() const { |
return parts_.has_domain_wildcard && parts_.host.empty(); |
} |
-const std::string ContentSettingsPattern::ToString() const { |
+std::string ContentSettingsPattern::ToString( |
+ const char* extension_scheme) const { |
if (IsValid()) |
- return content_settings::PatternParser::ToString(parts_); |
+ return content_settings::PatternParser::ToString(extension_scheme, parts_); |
else |
return std::string(); |
} |