OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 // Functions for canonicalizing "file:" URLs. | 5 // Functions for canonicalizing "file:" URLs. |
6 | 6 |
| 7 #include "base/strings/string_util.h" |
7 #include "url/url_canon.h" | 8 #include "url/url_canon.h" |
8 #include "url/url_canon_internal.h" | 9 #include "url/url_canon_internal.h" |
9 #include "url/url_file.h" | 10 #include "url/url_file.h" |
10 #include "url/url_parse_internal.h" | 11 #include "url/url_parse_internal.h" |
11 | 12 |
12 namespace url { | 13 namespace url { |
13 | 14 |
14 namespace { | 15 namespace { |
15 | 16 |
16 #ifdef WIN32 | 17 #ifdef WIN32 |
(...skipping 15 matching lines...) Expand all Loading... |
32 return begin; // Haven't consumed any characters | 33 return begin; // Haven't consumed any characters |
33 | 34 |
34 // A drive spec is the start of a path, so we need to add a slash for the | 35 // A drive spec is the start of a path, so we need to add a slash for the |
35 // authority terminator (typically the third slash). | 36 // authority terminator (typically the third slash). |
36 output->push_back('/'); | 37 output->push_back('/'); |
37 | 38 |
38 // DoesBeginWindowsDriveSpec will ensure that the drive letter is valid | 39 // DoesBeginWindowsDriveSpec will ensure that the drive letter is valid |
39 // and that it is followed by a colon/pipe. | 40 // and that it is followed by a colon/pipe. |
40 | 41 |
41 // Normalize Windows drive letters to uppercase | 42 // Normalize Windows drive letters to uppercase |
42 if (spec[after_slashes] >= 'a' && spec[after_slashes] <= 'z') | 43 if (base::IsAsciiLower(spec[after_slashes])) |
43 output->push_back(static_cast<char>(spec[after_slashes] - 'a' + 'A')); | 44 output->push_back(static_cast<char>(spec[after_slashes] - 'a' + 'A')); |
44 else | 45 else |
45 output->push_back(static_cast<char>(spec[after_slashes])); | 46 output->push_back(static_cast<char>(spec[after_slashes])); |
46 | 47 |
47 // Normalize the character following it to a colon rather than pipe. | 48 // Normalize the character following it to a colon rather than pipe. |
48 output->push_back(':'); | 49 output->push_back(':'); |
49 return after_slashes + 2; | 50 return after_slashes + 2; |
50 } | 51 } |
51 | 52 |
52 #endif // WIN32 | 53 #endif // WIN32 |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 Parsed* new_parsed) { | 181 Parsed* new_parsed) { |
181 RawCanonOutput<1024> utf8; | 182 RawCanonOutput<1024> utf8; |
182 URLComponentSource<char> source(base); | 183 URLComponentSource<char> source(base); |
183 Parsed parsed(base_parsed); | 184 Parsed parsed(base_parsed); |
184 SetupUTF16OverrideComponents(base, replacements, &utf8, &source, &parsed); | 185 SetupUTF16OverrideComponents(base, replacements, &utf8, &source, &parsed); |
185 return DoCanonicalizeFileURL<char, unsigned char>( | 186 return DoCanonicalizeFileURL<char, unsigned char>( |
186 source, parsed, query_converter, output, new_parsed); | 187 source, parsed, query_converter, output, new_parsed); |
187 } | 188 } |
188 | 189 |
189 } // namespace url | 190 } // namespace url |
OLD | NEW |