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

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: 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 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();
}

Powered by Google App Engine
This is Rietveld 408576698