Index: chrome/common/content_settings_pattern.cc |
diff --git a/chrome/common/content_settings_pattern.cc b/chrome/common/content_settings_pattern.cc |
index 809bc29f39c8d4c57e6787dc159794ea9a5562ff..a5f015ccef1b62f79b388d4806a064a40581a43c 100644 |
--- a/chrome/common/content_settings_pattern.cc |
+++ b/chrome/common/content_settings_pattern.cc |
@@ -11,13 +11,10 @@ |
#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 +82,44 @@ typedef ContentSettingsPattern::BuilderInterface BuilderInterface; |
// //////////////////////////////////////////////////////////////////////////// |
// ContentSettingsPattern::Builder |
// |
+class ContentSettingsPattern::Builder : |
+ public ContentSettingsPattern::BuilderInterface { |
+ public: |
+ explicit Builder(bool use_legacy_validate); |
+ virtual ~Builder(); |
+ |
+ // Overrides BuilderInterface |
vabr (Chromium)
2014/08/06 15:14:00
nit: Overrides -> Implements ?
vasilii
2014/08/11 13:57:18
Done.
|
+ 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 +346,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 +415,11 @@ ContentSettingsPattern ContentSettingsPattern::FromURLNoWildcard( |
// static |
ContentSettingsPattern ContentSettingsPattern::FromString( |
+ content_settings::ContentSettingsClient* client, |
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(client, pattern_spec, builder.get()); |
return builder->Build(); |
} |
@@ -497,9 +519,10 @@ bool ContentSettingsPattern::MatchesAllHosts() const { |
return parts_.has_domain_wildcard && parts_.host.empty(); |
} |
-const std::string ContentSettingsPattern::ToString() const { |
+std::string ContentSettingsPattern::ToString( |
+ content_settings::ContentSettingsClient* client) const { |
if (IsValid()) |
- return content_settings::PatternParser::ToString(parts_); |
+ return content_settings::PatternParser::ToString(client, parts_); |
else |
return std::string(); |
} |