OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 | 4 |
5 #include "chrome/common/extensions/url_pattern.h" | 5 #include "chrome/common/extensions/url_pattern.h" |
6 | 6 |
7 #include "base/string_piece.h" | 7 #include "base/string_piece.h" |
8 #include "base/string_split.h" | 8 #include "base/string_split.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "chrome/common/url_constants.h" | 10 #include "chrome/common/url_constants.h" |
11 #include "googleurl/src/gurl.h" | 11 #include "googleurl/src/gurl.h" |
12 #include "googleurl/src/url_util.h" | 12 #include "googleurl/src/url_util.h" |
13 | 13 |
14 // TODO(aa): Consider adding chrome-extension? What about more obscure ones | 14 // TODO(aa): Consider adding chrome-extension? What about more obscure ones |
15 // like data: and javascript: ? | 15 // like data: and javascript: ? |
16 // Note: keep this array in sync with kValidSchemeMasks. | 16 // Note: keep this array in sync with kValidSchemeMasks. |
17 static const char* kValidSchemes[] = { | 17 static const char* kValidSchemes[] = { |
18 chrome::kHttpScheme, | 18 chrome::kHttpScheme, |
19 chrome::kHttpsScheme, | 19 chrome::kHttpsScheme, |
| 20 chrome::kHttpsvScheme, |
20 chrome::kFileScheme, | 21 chrome::kFileScheme, |
21 chrome::kFtpScheme, | 22 chrome::kFtpScheme, |
22 chrome::kChromeUIScheme, | 23 chrome::kChromeUIScheme, |
23 }; | 24 }; |
24 | 25 |
25 static const int kValidSchemeMasks[] = { | 26 static const int kValidSchemeMasks[] = { |
26 URLPattern::SCHEME_HTTP, | 27 URLPattern::SCHEME_HTTP, |
27 URLPattern::SCHEME_HTTPS, | 28 URLPattern::SCHEME_HTTPS, |
| 29 URLPattern::SCHEME_HTTPSV, |
28 URLPattern::SCHEME_FILE, | 30 URLPattern::SCHEME_FILE, |
29 URLPattern::SCHEME_FTP, | 31 URLPattern::SCHEME_FTP, |
30 URLPattern::SCHEME_CHROMEUI, | 32 URLPattern::SCHEME_CHROMEUI, |
31 }; | 33 }; |
32 | 34 |
33 COMPILE_ASSERT(arraysize(kValidSchemes) == arraysize(kValidSchemeMasks), | 35 COMPILE_ASSERT(arraysize(kValidSchemes) == arraysize(kValidSchemeMasks), |
34 must_keep_these_arrays_in_sync); | 36 must_keep_these_arrays_in_sync); |
35 | 37 |
36 static const char kPathSeparator[] = "/"; | 38 static const char kPathSeparator[] = "/"; |
37 | 39 |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 } | 143 } |
142 | 144 |
143 path_ = pattern.substr(path_start_pos); | 145 path_ = pattern.substr(path_start_pos); |
144 | 146 |
145 return PARSE_SUCCESS; | 147 return PARSE_SUCCESS; |
146 } | 148 } |
147 | 149 |
148 bool URLPattern::SetScheme(const std::string& scheme) { | 150 bool URLPattern::SetScheme(const std::string& scheme) { |
149 scheme_ = scheme; | 151 scheme_ = scheme; |
150 if (scheme_ == "*") { | 152 if (scheme_ == "*") { |
151 valid_schemes_ &= (SCHEME_HTTP | SCHEME_HTTPS); | 153 valid_schemes_ &= (SCHEME_HTTP | SCHEME_HTTPS | SCHEME_HTTPSV); |
152 } else if (!IsValidScheme(scheme_)) { | 154 } else if (!IsValidScheme(scheme_)) { |
153 return false; | 155 return false; |
154 } | 156 } |
155 return true; | 157 return true; |
156 } | 158 } |
157 | 159 |
158 bool URLPattern::IsValidScheme(const std::string& scheme) const { | 160 bool URLPattern::IsValidScheme(const std::string& scheme) const { |
159 if (valid_schemes_ == SCHEME_ALL) | 161 if (valid_schemes_ == SCHEME_ALL) |
160 return true; | 162 return true; |
161 | 163 |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 if (MatchesScheme(kValidSchemes[i])) { | 304 if (MatchesScheme(kValidSchemes[i])) { |
303 URLPattern temp = *this; | 305 URLPattern temp = *this; |
304 temp.SetScheme(kValidSchemes[i]); | 306 temp.SetScheme(kValidSchemes[i]); |
305 temp.set_match_all_urls(false); | 307 temp.set_match_all_urls(false); |
306 result.push_back(temp); | 308 result.push_back(temp); |
307 } | 309 } |
308 } | 310 } |
309 | 311 |
310 return result; | 312 return result; |
311 } | 313 } |
OLD | NEW |