OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "net/base/escape.h" | 5 #include "net/base/escape.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 0xffffffffL, 0xfc00987dL, 0x78000001L, 0xb8000001L, | 311 0xffffffffL, 0xfc00987dL, 0x78000001L, 0xb8000001L, |
312 0xffffffffL, 0xffffffffL, 0xffffffffL, 0xffffffffL | 312 0xffffffffL, 0xffffffffL, 0xffffffffL, 0xffffffffL |
313 }}; | 313 }}; |
314 | 314 |
315 // non-printable, non-7bit, and (including space) "#%:<>?[\]^`{|} | 315 // non-printable, non-7bit, and (including space) "#%:<>?[\]^`{|} |
316 static const Charmap kPathCharmap = {{ | 316 static const Charmap kPathCharmap = {{ |
317 0xffffffffL, 0xd400002dL, 0x78000000L, 0xb8000001L, | 317 0xffffffffL, 0xd400002dL, 0x78000000L, 0xb8000001L, |
318 0xffffffffL, 0xffffffffL, 0xffffffffL, 0xffffffffL | 318 0xffffffffL, 0xffffffffL, 0xffffffffL, 0xffffffffL |
319 }}; | 319 }}; |
320 | 320 |
| 321 #if defined(OS_MACOSX) |
| 322 // non-printable, non-7bit, and (including space) "#%<>[\]^`{|} |
| 323 static const Charmap kNSURLCharmap = {{ |
| 324 0xffffffffL, 0x5000002dL, 0x78000000L, 0xb8000001L, |
| 325 0xffffffffL, 0xffffffffL, 0xffffffffL, 0xffffffffL |
| 326 }}; |
| 327 #endif // defined(OS_MACOSX) |
| 328 |
321 // non-printable, non-7bit, and (including space) ?>=<;+'&%$#"![\]^`{|} | 329 // non-printable, non-7bit, and (including space) ?>=<;+'&%$#"![\]^`{|} |
322 static const Charmap kUrlEscape = {{ | 330 static const Charmap kUrlEscape = {{ |
323 0xffffffffL, 0xf80008fdL, 0x78000001L, 0xb8000001L, | 331 0xffffffffL, 0xf80008fdL, 0x78000001L, 0xb8000001L, |
324 0xffffffffL, 0xffffffffL, 0xffffffffL, 0xffffffffL | 332 0xffffffffL, 0xffffffffL, 0xffffffffL, 0xffffffffL |
325 }}; | 333 }}; |
326 | 334 |
327 // non-7bit | 335 // non-7bit |
328 static const Charmap kNonASCIICharmap = {{ | 336 static const Charmap kNonASCIICharmap = {{ |
329 0x00000000L, 0x00000000L, 0x00000000L, 0x00000000L, | 337 0x00000000L, 0x00000000L, 0x00000000L, 0x00000000L, |
330 0xffffffffL, 0xffffffffL, 0xffffffffL, 0xffffffffL | 338 0xffffffffL, 0xffffffffL, 0xffffffffL, 0xffffffffL |
331 }}; | 339 }}; |
332 | 340 |
333 // Everything except alphanumerics, the reserved characters(;/?:@&=+$,) and | 341 // Everything except alphanumerics, the reserved characters(;/?:@&=+$,) and |
334 // !'()*-._~#[] | 342 // !'()*-._~#[] |
335 static const Charmap kExternalHandlerCharmap = {{ | 343 static const Charmap kExternalHandlerCharmap = {{ |
336 0xffffffffL, 0x50000025L, 0x50000000L, 0xb8000001L, | 344 0xffffffffL, 0x50000025L, 0x50000000L, 0xb8000001L, |
337 0xffffffffL, 0xffffffffL, 0xffffffffL, 0xffffffffL | 345 0xffffffffL, 0xffffffffL, 0xffffffffL, 0xffffffffL |
338 }}; | 346 }}; |
339 | 347 |
340 } // namespace | 348 } // namespace |
341 | 349 |
342 std::string EscapeQueryParamValue(const std::string& text, bool use_plus) { | 350 std::string EscapeQueryParamValue(const std::string& text, bool use_plus) { |
343 return Escape(text, kQueryCharmap, use_plus); | 351 return Escape(text, kQueryCharmap, use_plus); |
344 } | 352 } |
345 | 353 |
346 std::string EscapePath(const std::string& path) { | 354 std::string EscapePath(const std::string& path) { |
347 return Escape(path, kPathCharmap, false); | 355 return Escape(path, kPathCharmap, false); |
348 } | 356 } |
349 | 357 |
| 358 #if defined(OS_MACOSX) |
| 359 std::string EscapeNSURLPrecursor(const std::string& precursor) { |
| 360 return Escape(precursor, kNSURLCharmap, false, true); |
| 361 } |
| 362 #endif // defined(OS_MACOSX) |
| 363 |
350 std::string EscapeUrlEncodedData(const std::string& path, bool use_plus) { | 364 std::string EscapeUrlEncodedData(const std::string& path, bool use_plus) { |
351 return Escape(path, kUrlEscape, use_plus); | 365 return Escape(path, kUrlEscape, use_plus); |
352 } | 366 } |
353 | 367 |
354 std::string EscapeNonASCII(const std::string& input) { | 368 std::string EscapeNonASCII(const std::string& input) { |
355 return Escape(input, kNonASCIICharmap, false); | 369 return Escape(input, kNonASCIICharmap, false); |
356 } | 370 } |
357 | 371 |
358 std::string EscapeExternalHandlerValue(const std::string& text) { | 372 std::string EscapeExternalHandlerValue(const std::string& text) { |
359 return Escape(text, kExternalHandlerCharmap, false, true); | 373 return Escape(text, kExternalHandlerCharmap, false, true); |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
440 1, kEscapeToChars[i].replacement); | 454 1, kEscapeToChars[i].replacement); |
441 break; | 455 break; |
442 } | 456 } |
443 } | 457 } |
444 } | 458 } |
445 } | 459 } |
446 return text; | 460 return text; |
447 } | 461 } |
448 | 462 |
449 } // namespace net | 463 } // namespace net |
OLD | NEW |