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

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

Issue 2876009: Re-implement app overlap detection with new extent syntax. (Closed) Base URL: git://codf21.jail/chromium.git
Patch Set: donk Created 10 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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 6
7 #include <string> 7 #include <string>
8 8
9 #include "googleurl/src/gurl.h" 9 #include "googleurl/src/gurl.h"
10 10
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 public: 71 public:
72 // Returns true if the specified scheme can be used in URL patterns, and false 72 // Returns true if the specified scheme can be used in URL patterns, and false
73 // otherwise. 73 // otherwise.
74 static bool IsValidScheme(const std::string& scheme); 74 static bool IsValidScheme(const std::string& scheme);
75 75
76 // Convenience to create a pattern from a string. 76 // Convenience to create a pattern from a string.
77 static URLPattern* CreateFromString(const std::string& pattern); 77 static URLPattern* CreateFromString(const std::string& pattern);
78 78
79 URLPattern() : match_subdomains_(false) {} 79 URLPattern() : match_subdomains_(false) {}
80 80
81 // Initializes this instance by parsing the provided string. On failure, the
82 // instance will have some intermediate values and is in an invalid state.
83 bool Parse(const std::string& pattern_str);
84
85 // Returns true if this instance matches the specified URL.
86 bool MatchesUrl(const GURL& url) const;
87
88 std::string GetAsString() const;
89
90 // Get the scheme the pattern matches. This will always return a valid scheme 81 // Get the scheme the pattern matches. This will always return a valid scheme
91 // if is_valid() returns true. 82 // if is_valid() returns true.
92 std::string scheme() const { return scheme_; } 83 std::string scheme() const { return scheme_; }
93 void set_scheme(const std::string& scheme) { scheme_ = scheme; } 84 void set_scheme(const std::string& scheme) { scheme_ = scheme; }
94 85
95 // Gets the host the pattern matches. This can be an empty string if the 86 // Gets the host the pattern matches. This can be an empty string if the
96 // pattern matches all hosts (the input was <scheme>://*/<whatever>). 87 // pattern matches all hosts (the input was <scheme>://*/<whatever>).
97 std::string host() const { return host_; } 88 std::string host() const { return host_; }
98 void set_host(const std::string& host) { host_ = host; } 89 void set_host(const std::string& host) { host_ = host; }
99 90
100 // Gets whether to match subdomains of host(). 91 // Gets whether to match subdomains of host().
101 bool match_subdomains() const { return match_subdomains_; } 92 bool match_subdomains() const { return match_subdomains_; }
102 void set_match_subdomains(bool val) { match_subdomains_ = val; } 93 void set_match_subdomains(bool val) { match_subdomains_ = val; }
103 94
104 // Gets the path the pattern matches with the leading slash. This can have 95 // Gets the path the pattern matches with the leading slash. This can have
105 // embedded asterisks which are interpreted using glob rules. 96 // embedded asterisks which are interpreted using glob rules.
106 std::string path() const { return path_; } 97 std::string path() const { return path_; }
107 void set_path(const std::string& path) { 98 void set_path(const std::string& path) {
108 path_ = path; 99 path_ = path;
109 path_escaped_ = ""; 100 path_escaped_ = "";
110 } 101 }
111 102
103 // Initializes this instance by parsing the provided string. On failure, the
104 // instance will have some intermediate values and is in an invalid state.
105 bool Parse(const std::string& pattern_str);
106
107 // Returns true if this instance matches the specified URL.
108 bool MatchesUrl(const GURL& url) const;
109
110 // Returns a string representing this instance.
111 std::string GetAsString() const;
112
113 // Determine whether there is a URL that would match this instance and another
114 // instance. This method is symmetrical: Calling other.OverlapsWith(this)
115 // would result in the same answer.
116 bool OverlapsWith(const URLPattern& other) const;
117
112 private: 118 private:
113 // Returns true if |test| matches our host. 119 // Returns true if |test| matches our host.
120 bool MatchesHost(const std::string& host) const;
114 bool MatchesHost(const GURL& test) const; 121 bool MatchesHost(const GURL& test) const;
115 122
116 // Returns true if |test| matches our path. 123 // Returns true if |test| matches our path.
117 bool MatchesPath(const GURL& test) const; 124 bool MatchesPath(const std::string& test) const;
118 125
119 // The scheme for the pattern. 126 // The scheme for the pattern.
120 std::string scheme_; 127 std::string scheme_;
121 128
122 // The host without any leading "*" components. 129 // The host without any leading "*" components.
123 std::string host_; 130 std::string host_;
124 131
125 // Whether we should match subdomains of the host. This is true if the first 132 // Whether we should match subdomains of the host. This is true if the first
126 // component of the pattern's host was "*". 133 // component of the pattern's host was "*".
127 bool match_subdomains_; 134 bool match_subdomains_;
128 135
129 // The path to match. This is everything after the host of the URL, or 136 // The path to match. This is everything after the host of the URL, or
130 // everything after the scheme in the case of file:// URLs. 137 // everything after the scheme in the case of file:// URLs.
131 std::string path_; 138 std::string path_;
132 139
133 // The path with "?" and "\" characters escaped for use with the 140 // The path with "?" and "\" characters escaped for use with the
134 // MatchPatternASCII() function. This is populated lazily, the first time it 141 // MatchPatternASCII() function. This is populated lazily, the first time it
135 // is needed. 142 // is needed.
136 mutable std::string path_escaped_; 143 mutable std::string path_escaped_;
137 }; 144 };
138 145
139 #endif // CHROME_COMMON_EXTENSIONS_URL_PATTERN_H_ 146 #endif // CHROME_COMMON_EXTENSIONS_URL_PATTERN_H_
OLDNEW
« no previous file with comments | « chrome/common/extensions/extension_extent_unittest.cc ('k') | chrome/common/extensions/url_pattern.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698