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

Side by Side Diff: chrome/common/extensions/url_pattern.h

Issue 8885022: Move URLPattern::ParseOption into a field. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more minor sprucing Created 9 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/common/extensions/extension_messages.cc ('k') | chrome/common/extensions/url_pattern.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 #ifndef CHROME_COMMON_EXTENSIONS_URL_PATTERN_H_ 4 #ifndef CHROME_COMMON_EXTENSIONS_URL_PATTERN_H_
5 #define CHROME_COMMON_EXTENSIONS_URL_PATTERN_H_ 5 #define CHROME_COMMON_EXTENSIONS_URL_PATTERN_H_
6 #pragma once 6 #pragma once
7 7
8 #include <functional> 8 #include <functional>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 PARSE_ERROR_INVALID_HOST_WILDCARD, 116 PARSE_ERROR_INVALID_HOST_WILDCARD,
117 PARSE_ERROR_EMPTY_PATH, 117 PARSE_ERROR_EMPTY_PATH,
118 PARSE_ERROR_HAS_COLON, // Only checked when parsing with ERROR_ON_PORTS. 118 PARSE_ERROR_HAS_COLON, // Only checked when parsing with ERROR_ON_PORTS.
119 PARSE_ERROR_INVALID_PORT, // Only checked when parsing with USE_PORTS. 119 PARSE_ERROR_INVALID_PORT, // Only checked when parsing with USE_PORTS.
120 NUM_PARSE_RESULTS 120 NUM_PARSE_RESULTS
121 }; 121 };
122 122
123 // The <all_urls> string pattern. 123 // The <all_urls> string pattern.
124 static const char kAllUrlsPattern[]; 124 static const char kAllUrlsPattern[];
125 125
126 // Construct an URLPattern with the given set of allowable schemes. See 126 explicit URLPattern(ParseOption parse_option, int valid_schemes);
127 // valid_schemes_ for more info.
128 explicit URLPattern(int valid_schemes);
129 127
130 // Convenience to construct a URLPattern from a string. The string is expected 128 // Convenience to construct a URLPattern from a string. The string is expected
131 // to be a valid pattern. If the string is not known ahead of time, use 129 // to be a valid pattern when parsed with USE_PORTS. If the string is not
132 // Parse() instead, which returns success or failure. 130 // known ahead of time, use Parse() instead, which returns success or failure.
133 URLPattern(int valid_schemes, const std::string& pattern); 131 URLPattern(int valid_schemes, const std::string& pattern);
134 132
135 // Note: don't use this directly. This exists so URLPattern can be used
136 // with STL containers.
137 URLPattern(); 133 URLPattern();
138 ~URLPattern(); 134 ~URLPattern();
139 135
140 bool operator<(const URLPattern& other) const; 136 bool operator<(const URLPattern& other) const;
141 bool operator==(const URLPattern& other) const; 137 bool operator==(const URLPattern& other) const;
142 138
143 // Initializes this instance by parsing the provided string. Returns 139 // Initializes this instance by parsing the provided string. Returns
144 // URLPattern::PARSE_SUCCESS on success, or an error code otherwise. On 140 // URLPattern::PARSE_SUCCESS on success, or an error code otherwise. On
145 // failure, this instance will have some intermediate values and is in an 141 // failure, this instance will have some intermediate values and is in an
146 // invalid state. Adding error checks to URLPattern::Parse() can cause 142 // invalid state.
147 // patterns in installed extensions to fail. If an installed extension 143 ParseResult Parse(const std::string& pattern_str);
148 // uses a pattern that was valid but fails a new error check, the
149 // extension will fail to load when chrome is auto-updated. To avoid
150 // this, new parse checks are enabled only when |strictness| is
151 // OPTION_STRICT. OPTION_STRICT should be used when loading in developer
152 // mode, or when an extension's patterns are controlled by chrome (such
153 // as component extensions).
154 ParseResult Parse(const std::string& pattern_str,
155 ParseOption strictness);
156 144
157 // Gets the bitmask of valid schemes. 145 // Gets the bitmask of valid schemes.
158 int valid_schemes() const { return valid_schemes_; } 146 int valid_schemes() const { return valid_schemes_; }
159 void SetValidSchemes(int valid_schemes); 147 void SetValidSchemes(int valid_schemes);
160 148
149 // Gets or sets the parse option used with Parse().
150 ParseOption parse_option() const { return parse_option_; }
151 void SetParseOption(ParseOption parse_option);
152
161 // Gets the host the pattern matches. This can be an empty string if the 153 // Gets the host the pattern matches. This can be an empty string if the
162 // pattern matches all hosts (the input was <scheme>://*/<whatever>). 154 // pattern matches all hosts (the input was <scheme>://*/<whatever>).
163 const std::string& host() const { return host_; } 155 const std::string& host() const { return host_; }
164 void SetHost(const std::string& host); 156 void SetHost(const std::string& host);
165 157
166 // Gets whether to match subdomains of host(). 158 // Gets whether to match subdomains of host().
167 bool match_subdomains() const { return match_subdomains_; } 159 bool match_subdomains() const { return match_subdomains_; }
168 void SetMatchSubdomains(bool val); 160 void SetMatchSubdomains(bool val);
169 161
170 // Gets the path the pattern matches with the leading slash. This can have 162 // Gets the path the pattern matches with the leading slash. This can have
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 private: 237 private:
246 // Returns true if any of the |schemes| items matches our scheme. 238 // Returns true if any of the |schemes| items matches our scheme.
247 bool MatchesAnyScheme(const std::vector<std::string>& schemes) const; 239 bool MatchesAnyScheme(const std::vector<std::string>& schemes) const;
248 240
249 bool MatchesSecurityOriginHelper(const GURL& test) const; 241 bool MatchesSecurityOriginHelper(const GURL& test) const;
250 242
251 // If the URLPattern contains a wildcard scheme, returns a list of 243 // If the URLPattern contains a wildcard scheme, returns a list of
252 // equivalent literal schemes, otherwise returns the current scheme. 244 // equivalent literal schemes, otherwise returns the current scheme.
253 std::vector<std::string> GetExplicitSchemes() const; 245 std::vector<std::string> GetExplicitSchemes() const;
254 246
247 // Controls how to interpret the input to Parse().
248 ParseOption parse_option_;
249
255 // A bitmask containing the schemes which are considered valid for this 250 // A bitmask containing the schemes which are considered valid for this
256 // pattern. Parse() uses this to decide whether a pattern contains a valid 251 // pattern. Parse() uses this to decide whether a pattern contains a valid
257 // scheme. MatchesScheme uses this to decide whether a wildcard scheme_ 252 // scheme. MatchesScheme uses this to decide whether a wildcard scheme_
258 // matches a given test scheme. 253 // matches a given test scheme.
259 int valid_schemes_; 254 int valid_schemes_;
260 255
261 // True if this is a special-case "<all_urls>" pattern. 256 // True if this is a special-case "<all_urls>" pattern.
262 bool match_all_urls_; 257 bool match_all_urls_;
263 258
264 // The scheme for the pattern. 259 // The scheme for the pattern.
(...skipping 18 matching lines...) Expand all
283 // MatchPattern() function. 278 // MatchPattern() function.
284 std::string path_escaped_; 279 std::string path_escaped_;
285 280
286 // A string representing this URLPattern. 281 // A string representing this URLPattern.
287 mutable std::string spec_; 282 mutable std::string spec_;
288 }; 283 };
289 284
290 typedef std::vector<URLPattern> URLPatternList; 285 typedef std::vector<URLPattern> URLPatternList;
291 286
292 #endif // CHROME_COMMON_EXTENSIONS_URL_PATTERN_H_ 287 #endif // CHROME_COMMON_EXTENSIONS_URL_PATTERN_H_
OLDNEW
« no previous file with comments | « chrome/common/extensions/extension_messages.cc ('k') | chrome/common/extensions/url_pattern.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698