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

Unified Diff: net/base/filename_util_unittest.cc

Issue 869233006: [net] Cleanup filename_util and make it portable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@clang-format-filename-tests
Patch Set: Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/base/filename_util_internal.cc ('k') | net/base/filename_util_unsafe.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/filename_util_unittest.cc
diff --git a/net/base/filename_util_unittest.cc b/net/base/filename_util_unittest.cc
index 2b7e0ad8c6d503aa42ac6e1fd8cac7f47e12ce3d..216f37582741eb6bb4ff561a930386d7ab575cd1 100644
--- a/net/base/filename_util_unittest.cc
+++ b/net/base/filename_util_unittest.cc
@@ -287,7 +287,7 @@ TEST(FilenameUtilTest, FileURLConversion) {
#define TXT_EXT L".txt"
#define TAR_EXT L".tar"
-TEST(FilenameUtilTest, GenerateSafeFileName) {
+TEST(FilenameUtilTest, EnsureSafePortableFileName) {
const struct {
const char* mime_type;
const base::FilePath::CharType* filename;
@@ -365,10 +365,10 @@ TEST(FilenameUtilTest, GenerateSafeFileName) {
FILE_PATH_LITERAL("/foo/google.com")},
{"text/html",
FILE_PATH_LITERAL("/foo/con.htm"),
- FILE_PATH_LITERAL("/foo/con.htm")},
+ FILE_PATH_LITERAL("/foo/_con.htm")},
{"text/html",
FILE_PATH_LITERAL("/foo/con"),
- FILE_PATH_LITERAL("/foo/con.html")},
+ FILE_PATH_LITERAL("/foo/_con.html")},
// Allow extension synonyms.
{"image/jpeg",
FILE_PATH_LITERAL("/bar.jpg"),
@@ -381,7 +381,9 @@ TEST(FilenameUtilTest, GenerateSafeFileName) {
for (size_t i = 0; i < arraysize(safe_tests); ++i) {
base::FilePath file_path(safe_tests[i].filename);
- GenerateSafeFileName(safe_tests[i].mime_type, false, &file_path);
+ EnsureSafePortableFileName(safe_tests[i].mime_type,
+ EXTENSION_OPTION_GENERATE_IF_MISSING,
+ &file_path);
EXPECT_EQ(safe_tests[i].expected_filename, file_path.value())
<< "Iteration " << i;
}
@@ -391,7 +393,7 @@ TEST(FilenameUtilTest, GenerateFileName) {
// Tests whether the correct filename is selected from the the given
// parameters and that Content-Disposition headers are properly
// handled including failovers when the header is malformed.
- const GenerateFilenameCase selection_tests[] = {
+ static const GenerateFilenameCase kSelectionTests[] = {
{__LINE__,
"http://www.google.com/",
"attachment; filename=test.html",
@@ -453,13 +455,13 @@ TEST(FilenameUtilTest, GenerateFileName) {
L"test.html"},
{// No C-D
__LINE__,
- "http://www.google.com/",
- "",
+ "http://example.com/V%FDvojov%E1%20psychologie.doc",
"",
+ "utf-8",
"",
"",
L"",
- L"www.google.com"},
+ L"example.com"},
{__LINE__,
"http://www.google.com/test.html",
"",
@@ -508,15 +510,15 @@ TEST(FilenameUtilTest, GenerateFileName) {
"",
"",
L"",
- L"-test.html"},
+ L"_._test.html"},
{__LINE__,
"http://www.google.com/",
- "attachment; filename=\"..\\test.html\"",
+ "attachment; filename=\"..//test.html\"",
"",
"",
"",
L"",
- L"test.html"},
+ L"_.__test.html"},
{__LINE__,
"http://www.google.com/",
"attachment; filename=\"..\\\\test.html\"",
@@ -524,20 +526,19 @@ TEST(FilenameUtilTest, GenerateFileName) {
"",
"",
L"",
- L"-test.html"},
- {// Filename disappears after leading and trailing periods are removed.
- __LINE__,
+ L"_._test.html"},
+ {__LINE__,
"http://www.google.com/",
- "attachment; filename=\"..\"",
+ "attachment; filename=\"..\\\\\\\\test.html\"",
"",
"",
"",
- L"default",
- L"default"},
- {// C-D specified filename disappears. Failover to final filename.
+ L"",
+ L"_.__test.html"},
+ {// Content-Disposition specifies an empty filename.
__LINE__,
- "http://www.google.com/test.html",
- "attachment; filename=\"..\"",
+ "http://www.google.com/",
+ "attachment; filename=",
"",
"",
"",
@@ -706,7 +707,7 @@ TEST(FilenameUtilTest, GenerateFileName) {
L"caf\u03b5.png"},
{// No 'filename' keyword in the disposition, use the URL
__LINE__,
- "http://www.evil.com/my_download.txt",
+ "http://www.example.com/my_download.txt",
"a_file_name.txt",
"",
"",
@@ -782,54 +783,61 @@ TEST(FilenameUtilTest, GenerateFileName) {
// Tests filename generation. Once the correct filename is
// selected, they should be passed through the validation steps and
// a correct extension should be added if necessary.
- const GenerateFilenameCase generation_tests[] = {
- // Dotfiles. Ensures preceeding period(s) stripped.
- {__LINE__,
- "http://www.google.com/.test.html",
+ static const GenerateFilenameCase kGenerationTests[] = {
+ {// Dotfiles. Ensures preceeding period(s) escaped.
+ __LINE__,
+ "http://www.google.com/.test",
"",
"",
"",
"",
L"",
- L"test.html"},
- {__LINE__, "http://www.google.com/.test", "", "", "", "", L"", L"test"},
- {__LINE__, "http://www.google.com/..test", "", "", "", "", L"", L"test"},
- {// Disposition has relative paths, remove directory separators
+ L"_test"},
+ {// Multiple dots. It's only necessary to escape the first one.
__LINE__,
- "http://www.evil.com/my_download.txt",
+ "http://www.google.com/..test",
+ "",
+ "",
+ "",
+ "",
+ L"",
+ L"_.test"},
+ {// Disposition has relative paths, escape path separators
+ __LINE__,
+ "http://www.example.com/my_download.txt",
"filename=../../../../././../a_file_name.txt",
"",
"",
- "text/plain",
- L"download",
- L"-..-..-..-.-.-..-a_file_name.txt"},
+ "",
+ L"",
+ L"_._.._.._.._._._.._a_file_name.txt"},
{// Disposition has parent directories, remove directory separators
__LINE__,
- "http://www.evil.com/my_download.txt",
+ "http://www.example.com/my_download.txt",
"filename=dir1/dir2/a_file_name.txt",
"",
"",
- "text/plain",
- L"download",
- L"dir1-dir2-a_file_name.txt"},
+ "",
+ L"",
+ L"dir1_dir2_a_file_name.txt"},
{// Disposition has relative paths, remove directory separators
__LINE__,
- "http://www.evil.com/my_download.txt",
+ "http://www.example.com/my_download.txt",
"filename=..\\..\\..\\..\\.\\.\\..\\a_file_name.txt",
"",
"",
- "text/plain",
- L"download",
- L"-..-..-..-.-.-..-a_file_name.txt"},
+ "",
+ L"",
+ L"_._.._.._.._._._.._a_file_name.txt"},
{// Disposition has parent directories, remove directory separators
__LINE__,
- "http://www.evil.com/my_download.txt",
+ "http://www.example.com/my_download.txt",
"filename=dir1\\dir2\\a_file_name.txt",
"",
"",
"text/plain",
L"download",
- L"dir1-dir2-a_file_name.txt"},
+ L"dir1_dir2_a_file_name.txt"},
{// No useful information in disposition or URL, use default
__LINE__,
"http://www.truncated.com/path/",
@@ -837,17 +845,27 @@ TEST(FilenameUtilTest, GenerateFileName) {
"",
"",
"text/plain",
- L"download",
- L"download" TXT_EXT},
- {// Filename looks like HTML?
+ L"default",
+ L"default" TXT_EXT},
+ {// No useful information in disposition or URL, use default. Don't
+ // generate an extension since the default filename already has one.
+ __LINE__,
+ "http://www.truncated.com/path/",
+ "",
+ "",
+ "",
+ "text/plain",
+ L"default.ext",
+ L"default.ext"},
+ {// Filename looks like HTML.
__LINE__,
- "http://www.evil.com/get/malware/here",
+ "http://www.example.com/get/malware/here",
"filename=\"<blink>Hello kitty</blink>\"",
"",
"",
"text/plain",
L"default",
- L"-blink-Hello kitty--blink-"},
+ L"_blink_Hello kitty__blink_"},
{// A normal avi should get .avi and not .avi.avi
__LINE__,
"https://blah.google.com/misc/2.avi",
@@ -857,9 +875,10 @@ TEST(FilenameUtilTest, GenerateFileName) {
"video/x-msvideo",
L"download",
L"2.avi"},
- {// Extension generation
+ {// No extensions should be generated if the filename was from a
+ // Content-Disposition header.
__LINE__,
- "http://www.example.com/my-cat",
+ "http://www.example.com/",
"filename=my-cat",
"",
"",
@@ -867,425 +886,216 @@ TEST(FilenameUtilTest, GenerateFileName) {
L"download",
L"my-cat"},
{__LINE__,
- "http://www.example.com/my-cat",
+ "http://www.example.com/",
"filename=my-cat",
"",
"",
"text/plain",
L"download",
L"my-cat"},
- {__LINE__,
- "http://www.example.com/my-cat",
- "filename=my-cat",
- "",
- "",
- "text/html",
- L"download",
- L"my-cat"},
- {// Unknown MIME type
+ {// An extension should be generated for a URL derived filename.
__LINE__,
"http://www.example.com/my-cat",
- "filename=my-cat",
- "",
"",
- "dance/party",
- L"download",
- L"my-cat"},
- {__LINE__,
- "http://www.example.com/my-cat.jpg",
- "filename=my-cat.jpg",
"",
"",
"text/plain",
- L"download",
- L"my-cat.jpg"},
-// Windows specific tests
-#if defined(OS_WIN)
- {__LINE__,
- "http://www.goodguy.com/evil.exe",
- "filename=evil.exe",
- "",
- "",
- "image/jpeg",
- L"download",
- L"evil.exe"},
- {__LINE__,
- "http://www.goodguy.com/ok.exe",
- "filename=ok.exe",
+ L"",
+ L"my-cat" TXT_EXT},
+ {// Unknown MIME type. No extension generated.
+ __LINE__,
+ "http://www.example.com/my-cat",
"",
"",
- "binary/octet-stream",
- L"download",
- L"ok.exe"},
- {__LINE__,
- "http://www.goodguy.com/evil.dll",
- "filename=evil.dll",
- "",
"",
"dance/party",
L"download",
- L"evil.dll"},
- {__LINE__,
- "http://www.goodguy.com/evil.exe",
- "filename=evil",
- "",
+ L"my-cat"},
+ {// Trailing spaces.
+ __LINE__,
+ "http://www.example.com/",
+ "filename=\"evil.exe \"",
"",
- "application/rss+xml",
- L"download",
- L"evil"},
- // Test truncation of trailing dots and spaces
- {__LINE__,
- "http://www.goodguy.com/evil.exe ",
- "filename=evil.exe ",
"",
"",
- "binary/octet-stream",
L"download",
- L"evil.exe"},
- {__LINE__,
- "http://www.goodguy.com/evil.exe.",
+ L"evil.exe_"},
+ {// Trailing dots.
+ __LINE__,
+ "http://www.example.com/",
"filename=evil.exe.",
"",
"",
"binary/octet-stream",
L"download",
- L"evil.exe-"},
- {__LINE__,
- "http://www.goodguy.com/evil.exe. . .",
+ L"evil.exe_"},
+ {// Multiple trailing dots and spaces.
+ __LINE__,
+ "http://www.example.com/",
"filename=evil.exe. . .",
"",
"",
"binary/octet-stream",
L"download",
- L"evil.exe-------"},
- {__LINE__,
- "http://www.goodguy.com/evil.",
- "filename=evil.",
- "",
- "",
- "binary/octet-stream",
- L"download",
- L"evil-"},
+ L"evil.exe. . _"},
{__LINE__,
- "http://www.goodguy.com/. . . . .",
+ "http://www.example.com/",
"filename=. . . . .",
"",
"",
"binary/octet-stream",
L"download",
- L"download"},
+ L"_ . . . _"},
{__LINE__,
- "http://www.badguy.com/attachment?name=meh.exe%C2%A0",
- "attachment; filename=\"meh.exe\xC2\xA0\"",
+ "http://www.example.com/",
+ "filename=.",
"",
"",
"binary/octet-stream",
- L"",
- L"meh.exe-"},
-#endif // OS_WIN
- {__LINE__,
- "http://www.goodguy.com/utils.js",
- "filename=utils.js",
- "",
- "",
- "application/x-javascript",
- L"download",
- L"utils.js"},
- {__LINE__,
- "http://www.goodguy.com/contacts.js",
- "filename=contacts.js",
- "",
- "",
- "application/json",
L"download",
- L"contacts.js"},
+ L"_"},
{__LINE__,
- "http://www.goodguy.com/utils.js",
- "filename=utils.js",
- "",
- "",
- "text/javascript",
- L"download",
- L"utils.js"},
- {__LINE__,
- "http://www.goodguy.com/utils.js",
- "filename=utils.js",
- "",
- "",
- "text/javascript;version=2",
- L"download",
- L"utils.js"},
- {__LINE__,
- "http://www.goodguy.com/utils.js",
- "filename=utils.js",
- "",
- "",
- "application/ecmascript",
- L"download",
- L"utils.js"},
- {__LINE__,
- "http://www.goodguy.com/utils.js",
- "filename=utils.js",
- "",
- "",
- "application/ecmascript;version=4",
- L"download",
- L"utils.js"},
- {__LINE__,
- "http://www.goodguy.com/program.exe",
- "filename=program.exe",
- "",
- "",
- "application/foo-bar",
- L"download",
- L"program.exe"},
- {__LINE__,
- "http://www.evil.com/../foo.txt",
- "filename=../foo.txt",
- "",
- "",
- "text/plain",
- L"download",
- L"-foo.txt"},
- {__LINE__,
- "http://www.evil.com/..\\foo.txt",
- "filename=..\\foo.txt",
- "",
- "",
- "text/plain",
- L"download",
- L"-foo.txt"},
- {__LINE__,
- "http://www.evil.com/.hidden",
- "filename=.hidden",
+ "http://www.example.com/",
+ "filename=..",
"",
"",
- "text/plain",
+ "binary/octet-stream",
L"download",
- L"hidden"},
+ L"__"},
{__LINE__,
- "http://www.evil.com/trailing.",
- "filename=trailing.",
- "",
+ "http://www.example.com/",
+ "filename=\"meh.exe\xC2\xA0\"",
"",
- "dance/party",
- L"download",
-#if defined(OS_WIN)
- L"trailing-"
-#else
- L"trailing"
-#endif
- },
- {__LINE__,
- "http://www.evil.com/trailing.",
- "filename=trailing.",
"",
"",
- "text/plain",
- L"download",
-#if defined(OS_WIN)
- L"trailing-"
+ L"",
+#if defined(OS_POSIX) && !defined(OS_MACOSX)
+ // On Linux, \xA0 is allowed in the filename.
+ L"meh.exe\xA0"
#else
- L"trailing"
+ L"meh.exe_"
#endif
},
- {__LINE__,
- "http://www.evil.com/.",
- "filename=.",
- "",
- "",
- "dance/party",
- L"download",
- L"download"},
- {__LINE__,
- "http://www.evil.com/..",
- "filename=..",
+ {// user.js should be left alone because the final extension matches the
+ // MIME type.
+ __LINE__,
+ "http://www.example.com/utils.user.js?foo",
"",
"",
- "dance/party",
- L"download",
- L"download"},
- {__LINE__,
- "http://www.evil.com/...",
- "filename=...",
- "",
"",
- "dance/party",
- L"download",
- L"download"},
+ "application/javascript",
+ L"",
+ L"utils.user.js"},
{// Note that this one doesn't have "filename=" on it.
__LINE__,
- "http://www.evil.com/",
+ "http://www.example.com/",
"a_file_name.txt",
"",
"",
"image/jpeg",
- L"download",
- L"download" JPEG_EXT},
- {__LINE__,
- "http://www.evil.com/",
+ L"default",
+ L"default" JPEG_EXT},
+ {// Content-Disposition specifies an empty filename.
+ __LINE__,
+ "http://www.example.com/",
"filename=",
"",
"",
"image/jpeg",
- L"download",
- L"download" JPEG_EXT},
- {__LINE__,
- "http://www.example.com/simple",
- "filename=simple",
- "",
- "",
- "application/octet-stream",
- L"download",
- L"simple"},
+ L"default",
+ L"default" JPEG_EXT},
// Reserved words on Windows
{__LINE__,
- "http://www.goodguy.com/COM1",
+ "http://www.example.com/",
"filename=COM1",
"",
"",
"application/foo-bar",
L"download",
-#if defined(OS_WIN)
- L"_COM1"
-#else
- L"COM1"
-#endif
- },
+ L"_COM1"},
{__LINE__,
- "http://www.goodguy.com/COM4.txt",
+ "http://www.example.com/",
"filename=COM4.txt",
"",
"",
"text/plain",
L"download",
-#if defined(OS_WIN)
- L"_COM4.txt"
-#else
- L"COM4.txt"
-#endif
- },
+ L"_COM4.txt"},
{__LINE__,
- "http://www.goodguy.com/lpt1.TXT",
+ "http://www.example.com/",
"filename=lpt1.TXT",
"",
"",
"text/plain",
L"download",
-#if defined(OS_WIN)
- L"_lpt1.TXT"
-#else
- L"lpt1.TXT"
-#endif
- },
+ L"_lpt1.TXT"},
{__LINE__,
- "http://www.goodguy.com/clock$.txt",
+ "http://www.example.com/",
"filename=clock$.txt",
"",
"",
"text/plain",
L"download",
-#if defined(OS_WIN)
- L"_clock$.txt"
-#else
- L"clock$.txt"
-#endif
- },
+ L"_clock$.txt"},
{// Validation should also apply to sugested name
__LINE__,
- "http://www.goodguy.com/blah$.txt",
- "filename=clock$.txt",
+ "http://www.example.com/",
+ "",
"",
"clock$.txt",
"text/plain",
L"download",
-#if defined(OS_WIN)
- L"_clock$.txt"
-#else
- L"clock$.txt"
-#endif
- },
- {__LINE__,
- "http://www.goodguy.com/mycom1.foo",
+ L"_clock$.txt"},
+ {// Shouldn't match substrings.
+ __LINE__,
+ "http://www.example.com/",
"filename=mycom1.foo",
"",
"",
"text/plain",
L"download",
L"mycom1.foo"},
- {__LINE__,
- "http://www.badguy.com/Setup.exe.local",
+ {// Shell integrated extensions.
+ __LINE__,
+ "http://www.example.com/Setup.exe.local",
"filename=Setup.exe.local",
"",
"",
"application/foo-bar",
L"download",
-#if defined(OS_WIN)
- L"Setup.exe.download"
-#else
- L"Setup.exe.local"
-#endif
- },
+ L"Setup.exe.download"},
{__LINE__,
- "http://www.badguy.com/Setup.exe.local",
+ "http://www.example.com/Setup.exe.local",
"filename=Setup.exe.local.local",
"",
"",
"application/foo-bar",
L"download",
-#if defined(OS_WIN)
- L"Setup.exe.local.download"
-#else
- L"Setup.exe.local.local"
-#endif
- },
+ L"Setup.exe.local.download"},
{__LINE__,
- "http://www.badguy.com/Setup.exe.lnk",
+ "http://www.example.com/Setup.exe.lnk",
"filename=Setup.exe.lnk",
"",
"",
"application/foo-bar",
L"download",
-#if defined(OS_WIN)
- L"Setup.exe.download"
-#else
- L"Setup.exe.lnk"
-#endif
- },
+ L"Setup.exe.download"},
{__LINE__,
- "http://www.badguy.com/Desktop.ini",
+ "http://www.example.com/Desktop.ini",
"filename=Desktop.ini",
"",
"",
"application/foo-bar",
L"download",
-#if defined(OS_WIN)
- L"_Desktop.ini"
-#else
- L"Desktop.ini"
-#endif
- },
+ L"_Desktop.ini"},
{__LINE__,
- "http://www.badguy.com/Thumbs.db",
+ "http://www.example.com/Thumbs.db",
"filename=Thumbs.db",
"",
"",
"application/foo-bar",
L"download",
-#if defined(OS_WIN)
- L"_Thumbs.db"
-#else
- L"Thumbs.db"
-#endif
- },
- {__LINE__,
- "http://www.hotmail.com",
- "filename=source.jpg",
- "",
- "",
- "application/x-javascript",
- L"download",
- L"source.jpg"},
+ L"_Thumbs.db"},
{// http://crbug.com/5772.
__LINE__,
"http://www.example.com/foo.tar.gz",
@@ -1306,7 +1116,7 @@ TEST(FilenameUtilTest, GenerateFileName) {
L"foo.tgz"},
{// http://crbug.com/7337.
__LINE__,
- "http://maged.lordaeron.org/blank.reg",
+ "http://example.com/blank.reg",
"",
"",
"",
@@ -1332,12 +1142,12 @@ TEST(FilenameUtilTest, GenerateFileName) {
{// http://crbug.com/20337
__LINE__,
"http://www.example.com/.download.txt",
- "filename=.download.txt",
+ "filename=.foo.txt",
"",
"",
"text/plain",
- L"-download",
- L"download.txt"},
+ L"download",
+ L"_foo.txt"},
{// http://crbug.com/56855.
__LINE__,
"http://www.example.com/bar.sh",
@@ -1356,6 +1166,51 @@ TEST(FilenameUtilTest, GenerateFileName) {
"text/plain",
L"download",
L"npdf" TXT_EXT},
+ {// The "extension" of the URL derived filename is going to be .tar.gz,
+ // whereas the extension mapped to application/gzip is .gz. Despite this
+ // the extension should be left as-is because the FinalExtension() of the
+ // filename matches .gz.
+ __LINE__,
+ "http://www.example.com/x.tar.gz?query",
+ "",
+ "",
+ "",
+ "application/gzip",
+ L"download",
+ L"x.tar.gz"},
+ {// A MIME type can map to multiple extensions. Any of these should be
+ // accepted as the extension and should be overwritten only if there is no
+ // match.
+ __LINE__,
+ "http://www.example.com/foo.htm?query",
+ "",
+ "",
+ "",
+ "text/html",
+ L"download",
+ L"foo.htm"},
+ {// A MIME type can map to multiple extensions. Any of these should be
+ // accepted as the extension and should be overwritten only if there is no
+ // match.
+ __LINE__,
+ "http://www.example.com/foo.html?query",
+ "",
+ "",
+ "",
+ "text/html",
+ L"download",
+ L"foo.html"},
+ {// A MIME type can map to multiple extensions. Any of these should be
+ // accepted as the extension and should be overwritten only if there is no
+ // match.
+ __LINE__,
+ "http://www.example.com/foo.bar?query",
+ "",
+ "",
+ "",
+ "text/html",
+ L"download",
+ L"foo" HTML_EXT},
{// Shouldn't overwrite C-D specified extension.
__LINE__,
"http://www.example.com/npdf.php?fn=foobar.pdf",
@@ -1374,6 +1229,24 @@ TEST(FilenameUtilTest, GenerateFileName) {
"image/jpeg",
L"download",
L"image" JPEG_EXT},
+ {// Hostname derived filenames should have extensions appended.
+ __LINE__,
+ "http://www.example.com",
+ "",
+ "",
+ "",
+ "text/html",
+ L"",
+ L"www.example.com" HTML_EXT},
+ {// IDN
+ __LINE__,
+ "http://xn--fzc2c9eoa8e.example.com",
+ "",
+ "",
+ "",
+ "",
+ L"",
+ L"\u0dbd\u0d82\u0d9a\u0dcf\u0dc0.example.com"},
{__LINE__,
"http://www.example.com/image.aspx?id=blargh",
"",
@@ -1381,7 +1254,7 @@ TEST(FilenameUtilTest, GenerateFileName) {
" .foo",
"",
L"download",
- L"-.foo"},
+ L"_.foo"},
#if defined(OS_CHROMEOS)
{// http://crosbug.com/26028
__LINE__,
@@ -1395,14 +1268,14 @@ TEST(FilenameUtilTest, GenerateFileName) {
#endif
};
- for (size_t i = 0; i < arraysize(selection_tests); ++i)
- RunGenerateFileNameTestCase(&selection_tests[i]);
+ for (const auto& test_case : kSelectionTests)
+ RunGenerateFileNameTestCase(&test_case);
- for (size_t i = 0; i < arraysize(generation_tests); ++i)
- RunGenerateFileNameTestCase(&generation_tests[i]);
+ for (const auto& test_case : kGenerationTests)
+ RunGenerateFileNameTestCase(&test_case);
- for (size_t i = 0; i < arraysize(generation_tests); ++i) {
- GenerateFilenameCase test_case = generation_tests[i];
+ for (const auto& const_test_case : kGenerationTests) {
+ GenerateFilenameCase test_case = const_test_case;
test_case.referrer_charset = "GBK";
RunGenerateFileNameTestCase(&test_case);
}
« no previous file with comments | « net/base/filename_util_internal.cc ('k') | net/base/filename_util_unsafe.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698