| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 struct UrlTestData { | 357 struct UrlTestData { |
| 358 const char* const description; | 358 const char* const description; |
| 359 const char* const input; | 359 const char* const input; |
| 360 const char* const languages; | 360 const char* const languages; |
| 361 FormatUrlTypes format_types; | 361 FormatUrlTypes format_types; |
| 362 UnescapeRule::Type escape_rules; | 362 UnescapeRule::Type escape_rules; |
| 363 const wchar_t* output; // Use |wchar_t| to handle Unicode constants easily. | 363 const wchar_t* output; // Use |wchar_t| to handle Unicode constants easily. |
| 364 size_t prefix_len; | 364 size_t prefix_len; |
| 365 }; | 365 }; |
| 366 | 366 |
| 367 struct OriginTestData { | |
| 368 const char* description; | |
| 369 const char* input; | |
| 370 const char* languages; | |
| 371 const bool omit_scheme; | |
| 372 const wchar_t* output; | |
| 373 }; | |
| 374 | |
| 375 // A helper for IDN*{Fast,Slow}. | 367 // A helper for IDN*{Fast,Slow}. |
| 376 // Append "::<language list>" to |expected| and |actual| to make it | 368 // Append "::<language list>" to |expected| and |actual| to make it |
| 377 // easy to tell which sub-case fails without debugging. | 369 // easy to tell which sub-case fails without debugging. |
| 378 void AppendLanguagesToOutputs(const char* languages, | 370 void AppendLanguagesToOutputs(const char* languages, |
| 379 base::string16* expected, | 371 base::string16* expected, |
| 380 base::string16* actual) { | 372 base::string16* actual) { |
| 381 base::string16 to_append = ASCIIToUTF16("::") + ASCIIToUTF16(languages); | 373 base::string16 to_append = ASCIIToUTF16("::") + ASCIIToUTF16(languages); |
| 382 expected->append(to_append); | 374 expected->append(to_append); |
| 383 actual->append(to_append); | 375 actual->append(to_append); |
| 384 } | 376 } |
| (...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1082 UnescapeRule::NORMAL, omit_http_start_with_ftp_offsets); | 1074 UnescapeRule::NORMAL, omit_http_start_with_ftp_offsets); |
| 1083 | 1075 |
| 1084 const size_t omit_all_offsets[] = { | 1076 const size_t omit_all_offsets[] = { |
| 1085 0, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 0, kNpos, kNpos, kNpos, kNpos, | 1077 0, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 0, kNpos, kNpos, kNpos, kNpos, |
| 1086 0, 1, 2, 3, 4, 5, 6, 7 | 1078 0, 1, 2, 3, 4, 5, 6, 7 |
| 1087 }; | 1079 }; |
| 1088 CheckAdjustedOffsets("http://user@foo.com/", "en", kFormatUrlOmitAll, | 1080 CheckAdjustedOffsets("http://user@foo.com/", "en", kFormatUrlOmitAll, |
| 1089 UnescapeRule::NORMAL, omit_all_offsets); | 1081 UnescapeRule::NORMAL, omit_all_offsets); |
| 1090 } | 1082 } |
| 1091 | 1083 |
| 1092 TEST(NetUtilTest, FormatOriginForDisplay) { | |
| 1093 const OriginTestData tests[] = { | |
| 1094 {"Empty URL", "", "", false, L""}, | |
| 1095 {"HTTP URL, no omit scheme", | |
| 1096 "http://www.google.com/", | |
| 1097 "", | |
| 1098 false, | |
| 1099 L"http://www.google.com"}, | |
| 1100 {"HTTP URL, omit scheme", | |
| 1101 "http://www.google.com/", | |
| 1102 "", | |
| 1103 true, | |
| 1104 L"www.google.com"}, | |
| 1105 {"HTTPS URL, no omit scheme", | |
| 1106 "https://www.google.com/", | |
| 1107 "", | |
| 1108 false, | |
| 1109 L"https://www.google.com"}, | |
| 1110 {"HTTPS URL, omit scheme", | |
| 1111 "https://www.google.com/", | |
| 1112 "", | |
| 1113 true, | |
| 1114 L"www.google.com"}, | |
| 1115 {"Standard HTTP port", | |
| 1116 "http://www.google.com:80/", | |
| 1117 "", | |
| 1118 false, | |
| 1119 L"http://www.google.com"}, | |
| 1120 {"Standard HTTPS port", | |
| 1121 "https://www.google.com:443/", | |
| 1122 "", | |
| 1123 false, | |
| 1124 L"https://www.google.com"}, | |
| 1125 {"Non-standard HTTP port", | |
| 1126 "http://www.google.com:9000/", | |
| 1127 "", | |
| 1128 false, | |
| 1129 L"http://www.google.com:9000"}, | |
| 1130 {"Non-standard HTTPS port", | |
| 1131 "https://www.google.com:9000/", | |
| 1132 "", | |
| 1133 false, | |
| 1134 L"https://www.google.com:9000"}, | |
| 1135 {"File URI, omit scheme", | |
| 1136 "file:///usr/example/file.html", | |
| 1137 "", | |
| 1138 true, | |
| 1139 L"/usr/example/file.html"}, | |
| 1140 {"File URI, no omit scheme", | |
| 1141 "file:///usr/example/file.html", | |
| 1142 "", | |
| 1143 false, | |
| 1144 L"file:///usr/example/file.html"}, | |
| 1145 {"File URI with hostname, omit scheme", | |
| 1146 "file://localhost/usr/example/file.html", | |
| 1147 "", | |
| 1148 true, | |
| 1149 L"/usr/example/file.html"}, | |
| 1150 {"File URI with hostname, no omit scheme", | |
| 1151 "file://localhost/usr/example/file.html", | |
| 1152 "", | |
| 1153 false, | |
| 1154 L"file:///usr/example/file.html"}, | |
| 1155 {"HTTP URL with path", | |
| 1156 "http://www.google.com/test.html", | |
| 1157 "", | |
| 1158 false, | |
| 1159 L"http://www.google.com"}, | |
| 1160 {"HTTPS URL with path", | |
| 1161 "https://www.google.com/test.html", | |
| 1162 "", | |
| 1163 false, | |
| 1164 L"https://www.google.com"}, | |
| 1165 {"Unusual secure scheme (wss)", | |
| 1166 "wss://www.google.com/", | |
| 1167 "", | |
| 1168 false, | |
| 1169 L"wss://www.google.com"}, | |
| 1170 {"Unusual non-secure scheme (gopher)", | |
| 1171 "gopher://www.google.com/", | |
| 1172 "", | |
| 1173 false, | |
| 1174 L"gopher://www.google.com"}, | |
| 1175 {"Unlisted scheme (chrome)", | |
| 1176 "chrome://version", | |
| 1177 "", | |
| 1178 false, | |
| 1179 L"chrome://version"}, | |
| 1180 {"HTTP IP address", | |
| 1181 "http://173.194.65.103", | |
| 1182 "", | |
| 1183 false, | |
| 1184 L"http://173.194.65.103"}, | |
| 1185 {"HTTPS IP address", | |
| 1186 "https://173.194.65.103", | |
| 1187 "", | |
| 1188 false, | |
| 1189 L"https://173.194.65.103"}, | |
| 1190 {"HTTPS IP address, non-default port", | |
| 1191 "https://173.194.65.103:8443", | |
| 1192 "", | |
| 1193 false, | |
| 1194 L"https://173.194.65.103:8443"}, | |
| 1195 {"HTTPS IP address, omit scheme", | |
| 1196 "https://173.194.65.103", | |
| 1197 "", | |
| 1198 true, | |
| 1199 L"173.194.65.103"}, | |
| 1200 {"HTTP filesystem: URL with path", | |
| 1201 "filesystem:http://www.google.com/temporary/test.html", | |
| 1202 "", | |
| 1203 false, | |
| 1204 L"filesystem:http://www.google.com"}, | |
| 1205 {"HTTP filesystem: URL with path, omit scheme", | |
| 1206 "filesystem:http://www.google.com/persistent/test.html", | |
| 1207 "", | |
| 1208 true, | |
| 1209 L"filesystem:www.google.com"}, | |
| 1210 {"File filesystem: URL with path", | |
| 1211 "filesystem:file://localhost/temporary/stuff/test.html?z=fun&goat=billy", | |
| 1212 "", | |
| 1213 false, | |
| 1214 L"filesystem:file:///temporary/stuff/test.html"}, | |
| 1215 {"File filesystem: URL with path, omit scheme", | |
| 1216 "filesystem:file://cyber.com/persistent/stuff/test.html?y=z#abc", | |
| 1217 "", | |
| 1218 true, | |
| 1219 L"filesystem:/persistent/stuff/test.html"}, | |
| 1220 {"Invalid scheme 1", | |
| 1221 "twelve://www.cyber.org/wow.php", | |
| 1222 "", | |
| 1223 false, | |
| 1224 L"twelve://www.cyber.org/wow.php"}, | |
| 1225 {"Invalid scheme 2", | |
| 1226 "://www.cyber.org/wow.php", | |
| 1227 "", | |
| 1228 false, | |
| 1229 L"://www.cyber.org/wow.php"}, | |
| 1230 {"Invalid host 1", | |
| 1231 "https://www.cyber../wow.php", | |
| 1232 "", | |
| 1233 false, | |
| 1234 L"https://www.cyber.."}, | |
| 1235 {"Invalid host 2", | |
| 1236 "https://www...cyber/wow.php", | |
| 1237 "", | |
| 1238 false, | |
| 1239 L"https://www...cyber"}, | |
| 1240 {"Invalid port 1", | |
| 1241 "https://173.194.65.103:000", | |
| 1242 "", | |
| 1243 false, | |
| 1244 L"https://173.194.65.103"}, | |
| 1245 {"Invalid port 2", | |
| 1246 "https://173.194.65.103:gruffle", | |
| 1247 "", | |
| 1248 false, | |
| 1249 L"https://173.194.65.103:gruffle"}, | |
| 1250 {"Invalid port 3", | |
| 1251 "https://173.194.65.103:/hello.aspx", | |
| 1252 "", | |
| 1253 false, | |
| 1254 L"https://173.194.65.103"}, | |
| 1255 }; | |
| 1256 for (size_t i = 0; i < arraysize(tests); ++i) { | |
| 1257 base::string16 formatted = FormatOriginForDisplay( | |
| 1258 GURL(tests[i].input), tests[i].languages, tests[i].omit_scheme); | |
| 1259 EXPECT_EQ(WideToUTF16(tests[i].output), formatted) << tests[i].description; | |
| 1260 } | |
| 1261 } | |
| 1262 | |
| 1263 } // namespace net | 1084 } // namespace net |
| OLD | NEW |