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

Side by Side Diff: net/base/escape.cc

Issue 1200053004: Move more string_util functions to base namespace. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
« no previous file with comments | « net/base/data_url.cc ('k') | net/base/mime_sniffer.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) 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 const Charmap& charmap, 45 const Charmap& charmap,
46 bool use_plus, 46 bool use_plus,
47 bool keep_escaped = false) { 47 bool keep_escaped = false) {
48 std::string escaped; 48 std::string escaped;
49 escaped.reserve(text.length() * 3); 49 escaped.reserve(text.length() * 3);
50 for (unsigned int i = 0; i < text.length(); ++i) { 50 for (unsigned int i = 0; i < text.length(); ++i) {
51 unsigned char c = static_cast<unsigned char>(text[i]); 51 unsigned char c = static_cast<unsigned char>(text[i]);
52 if (use_plus && ' ' == c) { 52 if (use_plus && ' ' == c) {
53 escaped.push_back('+'); 53 escaped.push_back('+');
54 } else if (keep_escaped && '%' == c && i + 2 < text.length() && 54 } else if (keep_escaped && '%' == c && i + 2 < text.length() &&
55 IsHexDigit(text[i + 1]) && IsHexDigit(text[i + 2])) { 55 base::IsHexDigit(text[i + 1]) && base::IsHexDigit(text[i + 2])) {
56 escaped.push_back('%'); 56 escaped.push_back('%');
57 } else if (charmap.Contains(c)) { 57 } else if (charmap.Contains(c)) {
58 escaped.push_back('%'); 58 escaped.push_back('%');
59 escaped.push_back(IntToHex(c >> 4)); 59 escaped.push_back(IntToHex(c >> 4));
60 escaped.push_back(IntToHex(c & 0xf)); 60 escaped.push_back(IntToHex(c & 0xf));
61 } else { 61 } else {
62 escaped.push_back(c); 62 escaped.push_back(c);
63 } 63 }
64 } 64 }
65 return escaped; 65 return escaped;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 size_t index, 111 size_t index,
112 unsigned char* value) { 112 unsigned char* value) {
113 if ((index + 2) >= escaped_text.size()) 113 if ((index + 2) >= escaped_text.size())
114 return false; 114 return false;
115 if (escaped_text[index] != '%') 115 if (escaped_text[index] != '%')
116 return false; 116 return false;
117 const typename STR::value_type most_sig_digit( 117 const typename STR::value_type most_sig_digit(
118 static_cast<typename STR::value_type>(escaped_text[index + 1])); 118 static_cast<typename STR::value_type>(escaped_text[index + 1]));
119 const typename STR::value_type least_sig_digit( 119 const typename STR::value_type least_sig_digit(
120 static_cast<typename STR::value_type>(escaped_text[index + 2])); 120 static_cast<typename STR::value_type>(escaped_text[index + 2]));
121 if (IsHexDigit(most_sig_digit) && IsHexDigit(least_sig_digit)) { 121 if (base::IsHexDigit(most_sig_digit) && base::IsHexDigit(least_sig_digit)) {
122 *value = HexDigitToInt(most_sig_digit) * 16 + 122 *value = base::HexDigitToInt(most_sig_digit) * 16 +
123 HexDigitToInt(least_sig_digit); 123 base::HexDigitToInt(least_sig_digit);
124 return true; 124 return true;
125 } 125 }
126 return false; 126 return false;
127 } 127 }
128 128
129 // Returns true if there is an Arabic Language Mark at |index|. |first_byte| 129 // Returns true if there is an Arabic Language Mark at |index|. |first_byte|
130 // is the byte at |index|. 130 // is the byte at |index|.
131 template<typename STR> 131 template<typename STR>
132 bool HasArabicLanguageMarkAtIndex(const STR& escaped_text, 132 bool HasArabicLanguageMarkAtIndex(const STR& escaped_text,
133 unsigned char first_byte, 133 unsigned char first_byte,
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 1, kEscapeToChars[i].replacement); 454 1, kEscapeToChars[i].replacement);
455 break; 455 break;
456 } 456 }
457 } 457 }
458 } 458 }
459 } 459 }
460 return text; 460 return text;
461 } 461 }
462 462
463 } // namespace net 463 } // namespace net
OLDNEW
« no previous file with comments | « net/base/data_url.cc ('k') | net/base/mime_sniffer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698