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/filename_util.h" | 5 #include "net/base/filename_util.h" |
6 | 6 |
7 #include "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
803 { // The content-disposition has higher precedence over the suggested name. | 803 { // The content-disposition has higher precedence over the suggested name. |
804 __LINE__, | 804 __LINE__, |
805 "http://www.google.com/test", | 805 "http://www.google.com/test", |
806 "attachment; filename=test.html", | 806 "attachment; filename=test.html", |
807 "", | 807 "", |
808 "suggested", | 808 "suggested", |
809 "", | 809 "", |
810 L"", | 810 L"", |
811 L"test.html" | 811 L"test.html" |
812 }, | 812 }, |
| 813 { |
| 814 __LINE__, |
| 815 "http://www.google.com/test", |
| 816 "attachment; filename=test", |
| 817 "utf-8", |
| 818 "", |
| 819 "image/png", |
| 820 L"", |
| 821 L"test" |
| 822 }, |
813 #if 0 | 823 #if 0 |
814 { // The filename encoding doesn't match the referrer charset, the system | 824 { // The filename encoding doesn't match the referrer charset, the system |
815 // charset, or UTF-8. | 825 // charset, or UTF-8. |
816 // TODO(jshin): we need to handle this case. | 826 // TODO(jshin): we need to handle this case. |
817 __LINE__, | 827 __LINE__, |
818 "http://example.com/V%FDvojov%E1%20psychologie.doc", | 828 "http://example.com/V%FDvojov%E1%20psychologie.doc", |
819 "", | 829 "", |
820 "utf-8", | 830 "utf-8", |
821 "", | 831 "", |
822 "", | 832 "", |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1015 L"download" TXT_EXT | 1025 L"download" TXT_EXT |
1016 }, | 1026 }, |
1017 { // Filename looks like HTML? | 1027 { // Filename looks like HTML? |
1018 __LINE__, | 1028 __LINE__, |
1019 "http://www.evil.com/get/malware/here", | 1029 "http://www.evil.com/get/malware/here", |
1020 "filename=\"<blink>Hello kitty</blink>\"", | 1030 "filename=\"<blink>Hello kitty</blink>\"", |
1021 "", | 1031 "", |
1022 "", | 1032 "", |
1023 "text/plain", | 1033 "text/plain", |
1024 L"default", | 1034 L"default", |
1025 L"-blink-Hello kitty--blink-" TXT_EXT | 1035 L"-blink-Hello kitty--blink-" |
1026 }, | 1036 }, |
1027 { // A normal avi should get .avi and not .avi.avi | 1037 { // A normal avi should get .avi and not .avi.avi |
1028 __LINE__, | 1038 __LINE__, |
1029 "https://blah.google.com/misc/2.avi", | 1039 "https://blah.google.com/misc/2.avi", |
1030 "", | 1040 "", |
1031 "", | 1041 "", |
1032 "", | 1042 "", |
1033 "video/x-msvideo", | 1043 "video/x-msvideo", |
1034 L"download", | 1044 L"download", |
1035 L"2.avi" | 1045 L"2.avi" |
1036 }, | 1046 }, |
1037 { // Extension generation | 1047 { // Extension generation |
1038 __LINE__, | 1048 __LINE__, |
1039 "http://www.example.com/my-cat", | 1049 "http://www.example.com/my-cat", |
1040 "filename=my-cat", | 1050 "filename=my-cat", |
1041 "", | 1051 "", |
1042 "", | 1052 "", |
1043 "image/jpeg", | 1053 "image/jpeg", |
1044 L"download", | 1054 L"download", |
1045 L"my-cat" JPEG_EXT | 1055 L"my-cat" |
1046 }, | 1056 }, |
1047 { | 1057 { |
1048 __LINE__, | 1058 __LINE__, |
1049 "http://www.example.com/my-cat", | 1059 "http://www.example.com/my-cat", |
1050 "filename=my-cat", | 1060 "filename=my-cat", |
1051 "", | 1061 "", |
1052 "", | 1062 "", |
1053 "text/plain", | 1063 "text/plain", |
1054 L"download", | 1064 L"download", |
1055 L"my-cat.txt" | 1065 L"my-cat" |
1056 }, | 1066 }, |
1057 { | 1067 { |
1058 __LINE__, | 1068 __LINE__, |
1059 "http://www.example.com/my-cat", | 1069 "http://www.example.com/my-cat", |
1060 "filename=my-cat", | 1070 "filename=my-cat", |
1061 "", | 1071 "", |
1062 "", | 1072 "", |
1063 "text/html", | 1073 "text/html", |
1064 L"download", | 1074 L"download", |
1065 L"my-cat" HTML_EXT | 1075 L"my-cat" |
1066 }, | 1076 }, |
1067 { // Unknown MIME type | 1077 { // Unknown MIME type |
1068 __LINE__, | 1078 __LINE__, |
1069 "http://www.example.com/my-cat", | 1079 "http://www.example.com/my-cat", |
1070 "filename=my-cat", | 1080 "filename=my-cat", |
1071 "", | 1081 "", |
1072 "", | 1082 "", |
1073 "dance/party", | 1083 "dance/party", |
1074 L"download", | 1084 L"download", |
1075 L"my-cat" | 1085 L"my-cat" |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1279 L"-foo.txt" | 1289 L"-foo.txt" |
1280 }, | 1290 }, |
1281 { | 1291 { |
1282 __LINE__, | 1292 __LINE__, |
1283 "http://www.evil.com/.hidden", | 1293 "http://www.evil.com/.hidden", |
1284 "filename=.hidden", | 1294 "filename=.hidden", |
1285 "", | 1295 "", |
1286 "", | 1296 "", |
1287 "text/plain", | 1297 "text/plain", |
1288 L"download", | 1298 L"download", |
1289 L"hidden" TXT_EXT | 1299 L"hidden" |
1290 }, | 1300 }, |
1291 { | 1301 { |
1292 __LINE__, | 1302 __LINE__, |
1293 "http://www.evil.com/trailing.", | 1303 "http://www.evil.com/trailing.", |
1294 "filename=trailing.", | 1304 "filename=trailing.", |
1295 "", | 1305 "", |
1296 "", | 1306 "", |
1297 "dance/party", | 1307 "dance/party", |
1298 L"download", | 1308 L"download", |
1299 #if defined(OS_WIN) | 1309 #if defined(OS_WIN) |
1300 L"trailing-" | 1310 L"trailing-" |
1301 #else | 1311 #else |
1302 L"trailing" | 1312 L"trailing" |
1303 #endif | 1313 #endif |
1304 }, | 1314 }, |
1305 { | 1315 { |
1306 __LINE__, | 1316 __LINE__, |
1307 "http://www.evil.com/trailing.", | 1317 "http://www.evil.com/trailing.", |
1308 "filename=trailing.", | 1318 "filename=trailing.", |
1309 "", | 1319 "", |
1310 "", | 1320 "", |
1311 "text/plain", | 1321 "text/plain", |
1312 L"download", | 1322 L"download", |
1313 #if defined(OS_WIN) | 1323 #if defined(OS_WIN) |
1314 L"trailing-" TXT_EXT | 1324 L"trailing-" |
1315 #else | 1325 #else |
1316 L"trailing" TXT_EXT | 1326 L"trailing" |
1317 #endif | 1327 #endif |
1318 }, | 1328 }, |
1319 { | 1329 { |
1320 __LINE__, | 1330 __LINE__, |
1321 "http://www.evil.com/.", | 1331 "http://www.evil.com/.", |
1322 "filename=.", | 1332 "filename=.", |
1323 "", | 1333 "", |
1324 "", | 1334 "", |
1325 "dance/party", | 1335 "dance/party", |
1326 L"download", | 1336 L"download", |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1658 RunGenerateFileNameTestCase(&generation_tests[i]); | 1668 RunGenerateFileNameTestCase(&generation_tests[i]); |
1659 | 1669 |
1660 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(generation_tests); ++i) { | 1670 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(generation_tests); ++i) { |
1661 GenerateFilenameCase test_case = generation_tests[i]; | 1671 GenerateFilenameCase test_case = generation_tests[i]; |
1662 test_case.referrer_charset = "GBK"; | 1672 test_case.referrer_charset = "GBK"; |
1663 RunGenerateFileNameTestCase(&test_case); | 1673 RunGenerateFileNameTestCase(&test_case); |
1664 } | 1674 } |
1665 } | 1675 } |
1666 | 1676 |
1667 } // namespace net | 1677 } // namespace net |
OLD | NEW |