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

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

Issue 106793004: Revert of Stop doing unnecessary UTF-8 to UTF-16 conversions in JSONWriter. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « jingle/notifier/listener/notification_defines.cc ('k') | net/base/net_util_unittest.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/net_util.h" 5 #include "net/base/net_util.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <iterator> 8 #include <iterator>
9 #include <map> 9 #include <map>
10 10
(...skipping 1077 matching lines...) Expand 10 before | Expand all | Expand 10 after
1088 NetModule::GetResource(IDR_DIR_HEADER_HTML)); 1088 NetModule::GetResource(IDR_DIR_HEADER_HTML));
1089 // This can be null in unit tests. 1089 // This can be null in unit tests.
1090 DLOG_IF(WARNING, header.empty()) << 1090 DLOG_IF(WARNING, header.empty()) <<
1091 "Missing resource: directory listing header"; 1091 "Missing resource: directory listing header";
1092 1092
1093 std::string result; 1093 std::string result;
1094 if (!header.empty()) 1094 if (!header.empty())
1095 result.assign(header.data(), header.size()); 1095 result.assign(header.data(), header.size());
1096 1096
1097 result.append("<script>start("); 1097 result.append("<script>start(");
1098 base::EscapeJSONString(title, true, &result); 1098 base::JsonDoubleQuote(title, true, &result);
1099 result.append(");</script>\n"); 1099 result.append(");</script>\n");
1100 1100
1101 return result; 1101 return result;
1102 } 1102 }
1103 1103
1104 inline bool IsHostCharAlphanumeric(char c) { 1104 inline bool IsHostCharAlphanumeric(char c) {
1105 // We can just check lowercase because uppercase characters have already been 1105 // We can just check lowercase because uppercase characters have already been
1106 // normalized. 1106 // normalized.
1107 return ((c >= 'a') && (c <= 'z')) || ((c >= '0') && (c <= '9')); 1107 return ((c >= 'a') && (c <= 'z')) || ((c >= '0') && (c <= '9'));
1108 } 1108 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1142 (!desired_tld.empty() && IsHostCharAlphanumeric(desired_tld[0])); 1142 (!desired_tld.empty() && IsHostCharAlphanumeric(desired_tld[0]));
1143 } 1143 }
1144 1144
1145 std::string GetDirectoryListingEntry(const base::string16& name, 1145 std::string GetDirectoryListingEntry(const base::string16& name,
1146 const std::string& raw_bytes, 1146 const std::string& raw_bytes,
1147 bool is_dir, 1147 bool is_dir,
1148 int64 size, 1148 int64 size,
1149 Time modified) { 1149 Time modified) {
1150 std::string result; 1150 std::string result;
1151 result.append("<script>addRow("); 1151 result.append("<script>addRow(");
1152 base::EscapeJSONString(name, true, &result); 1152 base::JsonDoubleQuote(name, true, &result);
1153 result.append(","); 1153 result.append(",");
1154 if (raw_bytes.empty()) { 1154 if (raw_bytes.empty()) {
1155 base::EscapeJSONString(EscapePath(UTF16ToUTF8(name)), true, &result); 1155 base::JsonDoubleQuote(EscapePath(UTF16ToUTF8(name)),
1156 true, &result);
1156 } else { 1157 } else {
1157 base::EscapeJSONString(EscapePath(raw_bytes), true, &result); 1158 base::JsonDoubleQuote(EscapePath(raw_bytes), true, &result);
1158 } 1159 }
1159 if (is_dir) { 1160 if (is_dir) {
1160 result.append(",1,"); 1161 result.append(",1,");
1161 } else { 1162 } else {
1162 result.append(",0,"); 1163 result.append(",0,");
1163 } 1164 }
1164 1165
1165 // Negative size means unknown or not applicable (e.g. directory). 1166 // Negative size means unknown or not applicable (e.g. directory).
1166 base::string16 size_string; 1167 base::string16 size_string;
1167 if (size >= 0) 1168 if (size >= 0)
1168 size_string = FormatBytesUnlocalized(size); 1169 size_string = FormatBytesUnlocalized(size);
1169 base::EscapeJSONString(size_string, true, &result); 1170 base::JsonDoubleQuote(size_string, true, &result);
1170 1171
1171 result.append(","); 1172 result.append(",");
1172 1173
1173 base::string16 modified_str; 1174 base::string16 modified_str;
1174 // |modified| can be NULL in FTP listings. 1175 // |modified| can be NULL in FTP listings.
1175 if (!modified.is_null()) { 1176 if (!modified.is_null()) {
1176 modified_str = base::TimeFormatShortDateAndTime(modified); 1177 modified_str = base::TimeFormatShortDateAndTime(modified);
1177 } 1178 }
1178 base::EscapeJSONString(modified_str, true, &result); 1179 base::JsonDoubleQuote(modified_str, true, &result);
1179 1180
1180 result.append(");</script>\n"); 1181 result.append(");</script>\n");
1181 1182
1182 return result; 1183 return result;
1183 } 1184 }
1184 1185
1185 base::string16 StripWWW(const base::string16& text) { 1186 base::string16 StripWWW(const base::string16& text) {
1186 const base::string16 www(ASCIIToUTF16("www.")); 1187 const base::string16 www(ASCIIToUTF16("www."));
1187 return StartsWith(text, www, true) ? text.substr(www.length()) : text; 1188 return StartsWith(text, www, true) ? text.substr(www.length()) : text;
1188 } 1189 }
(...skipping 1024 matching lines...) Expand 10 before | Expand all | Expand 10 after
2213 } 2214 }
2214 return a1.size() * CHAR_BIT; 2215 return a1.size() * CHAR_BIT;
2215 } 2216 }
2216 2217
2217 unsigned MaskPrefixLength(const IPAddressNumber& mask) { 2218 unsigned MaskPrefixLength(const IPAddressNumber& mask) {
2218 IPAddressNumber all_ones(mask.size(), 0xFF); 2219 IPAddressNumber all_ones(mask.size(), 0xFF);
2219 return CommonPrefixLength(mask, all_ones); 2220 return CommonPrefixLength(mask, all_ones);
2220 } 2221 }
2221 2222
2222 } // namespace net 2223 } // namespace net
OLDNEW
« no previous file with comments | « jingle/notifier/listener/notification_defines.cc ('k') | net/base/net_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698