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

Unified Diff: chrome/common/content_settings_pattern.cc

Issue 440423003: Clean content_settings_pattern_parser.* from unnecessary dependencies. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed the clients Created 6 years, 4 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/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();
}

Powered by Google App Engine
This is Rietveld 408576698