Index: chrome/browser/download/download_manager_unittest.cc |
diff --git a/chrome/browser/download/download_manager_unittest.cc b/chrome/browser/download/download_manager_unittest.cc |
index 01f48390a5789f7cdb1b11b85eebc597612a0e11..d73d04963274b0a3c64331bd4a7c036f21a58a88 100644 |
--- a/chrome/browser/download/download_manager_unittest.cc |
+++ b/chrome/browser/download/download_manager_unittest.cc |
@@ -64,7 +64,13 @@ const struct { |
L"a_file_name.txt"}, |
// No useful information in disposition or URL, use default |
- {"", "http://www.truncated.com/path/", "text/plain", L"download.txt"}, |
+ {"", "http://www.truncated.com/path/", "text/plain", |
+#if defined(OS_LINUX) |
+ L"download" |
+#else |
+ L"download.txt" |
+#endif |
+ }, |
// A normal avi should get .avi and not .avi.avi |
{"", "https://blah.google.com/misc/2.avi", "video/x-msvideo", L"2.avi"}, |
@@ -75,6 +81,10 @@ const struct { |
"application/octet-stream", |
L"My Downloaded File.exe"}, |
+ // This block tests whether we append extensions based on MIME types; |
+ // we don't do this on Linux, so we skip the tests rather than #ifdef |
+ // them up. |
+#if !defined(OS_LINUX) |
{"filename=my-cat", |
"http://www.example.com/my-cat", |
"image/jpeg", |
@@ -94,12 +104,15 @@ const struct { |
"http://www.example.com/my-cat", |
"dance/party", |
L"my-cat"}, |
+#endif // defined(OS_LINUX) |
{"filename=my-cat.jpg", |
"http://www.example.com/my-cat.jpg", |
"text/plain", |
L"my-cat.jpg"}, |
+ // .exe tests. |
+#if defined(OS_WIN) |
{"filename=evil.exe", |
"http://www.goodguy.com/evil.exe", |
"image/jpeg", |
@@ -129,6 +142,7 @@ const struct { |
"http://www.goodguy.com/evil.exe", |
"application/rss+xml", |
L"evil.download"}, |
+#endif // OS_WIN |
{"filename=utils.js", |
"http://www.goodguy.com/utils.js", |
@@ -173,22 +187,38 @@ const struct { |
{"filename=..\\foo.txt", |
"http://www.evil.com/..\\foo.txt", |
"text/plain", |
- L"foo.txt"}, |
+#if defined(OS_WIN) |
+ L"foo.txt" |
+#else |
+ L"\\foo.txt" |
+#endif |
+ }, |
{"filename=.hidden", |
"http://www.evil.com/.hidden", |
"text/plain", |
- L"hidden.txt"}, |
+#if defined(OS_LINUX) |
+ L"hidden" |
+#else |
+ L"hidden.txt" |
+#endif |
+ }, |
{"filename=trailing.", |
"http://www.evil.com/trailing.", |
"dance/party", |
- L"trailing"}, |
+ L"trailing" |
+ }, |
{"filename=trailing.", |
"http://www.evil.com/trailing.", |
"text/plain", |
- L"trailing.txt"}, |
+#if defined(OS_LINUX) |
+ L"trailing" |
+#else |
+ L"trailing.txt" |
+#endif |
+ }, |
{"filename=.", |
"http://www.evil.com/.", |
@@ -205,15 +235,26 @@ const struct { |
"dance/party", |
L"download"}, |
+ // Note that this one doesn't have "filename=" on it. |
{"a_file_name.txt", |
"http://www.evil.com/", |
"image/jpeg", |
- L"download.jpg"}, |
+#if defined(OS_LINUX) |
+ L"download" |
+#else |
+ L"download.jpg" |
+#endif |
+ }, |
{"filename=", |
"http://www.evil.com/", |
"image/jpeg", |
- L"download.jpg"}, |
+#if defined(OS_LINUX) |
+ L"download" |
+#else |
+ L"download.jpg" |
+#endif |
+ }, |
{"filename=simple", |
"http://www.example.com/simple", |
@@ -223,22 +264,42 @@ const struct { |
{"filename=COM1", |
"http://www.goodguy.com/COM1", |
"application/foo-bar", |
- L"_COM1"}, |
+#if defined(OS_WIN) |
+ L"_COM1" |
+#else |
+ L"COM1" |
+#endif |
+ }, |
{"filename=COM4.txt", |
"http://www.goodguy.com/COM4.txt", |
"text/plain", |
- L"_COM4.txt"}, |
+#if defined(OS_WIN) |
+ L"_COM4" |
+#else |
+ L"COM4.txt" |
+#endif |
+ }, |
{"filename=lpt1.TXT", |
"http://www.goodguy.com/lpt1.TXT", |
"text/plain", |
- L"_lpt1.TXT"}, |
+#if defined(OS_WIN) |
+ L"_lpt1.TXT" |
+#else |
+ L"lpt1.TXT" |
+#endif |
+ }, |
{"filename=clock$.txt", |
"http://www.goodguy.com/clock$.txt", |
"text/plain", |
- L"_clock$.txt"}, |
+#if defined(OS_WIN) |
+ L"_clock$.txt" |
+#else |
+ L"clock$.txt" |
+#endif |
+ }, |
{"filename=mycom1.foo", |
"http://www.goodguy.com/mycom1.foo", |
@@ -248,32 +309,62 @@ const struct { |
{"filename=Setup.exe.local", |
"http://www.badguy.com/Setup.exe.local", |
"application/foo-bar", |
- L"Setup.exe.download"}, |
+#if defined(OS_WIN) |
+ L"Setup.exe.download" |
+#else |
+ L"Setup.exe.local" |
+#endif |
+ }, |
{"filename=Setup.exe.local.local", |
"http://www.badguy.com/Setup.exe.local", |
"application/foo-bar", |
- L"Setup.exe.local.download"}, |
+#if defined(OS_WIN) |
+ L"Setup.exe.local.download" |
+#else |
+ L"Setup.exe.local.local" |
+#endif |
+ }, |
{"filename=Setup.exe.lnk", |
"http://www.badguy.com/Setup.exe.lnk", |
"application/foo-bar", |
- L"Setup.exe.download"}, |
+#if defined(OS_WIN) |
+ L"Setup.exe.download" |
+#else |
+ L"Setup.exe.lnk" |
+#endif |
+ }, |
{"filename=Desktop.ini", |
"http://www.badguy.com/Desktop.ini", |
"application/foo-bar", |
- L"_Desktop.ini"}, |
+#if defined(OS_WIN) |
+ L"_Desktop.ini" |
+#else |
+ L"Desktop.ini" |
+#endif |
+ }, |
{"filename=Thumbs.db", |
"http://www.badguy.com/Thumbs.db", |
"application/foo-bar", |
- L"_Thumbs.db"}, |
+#if defined(OS_WIN) |
+ L"_Thumbs.db" |
+#else |
+ L"Thumbs.db" |
+#endif |
+ }, |
{"filename=source.srf", |
"http://www.hotmail.com", |
"image/jpeg", |
- L"source.srf.jpg"}, |
+#if defined(OS_WIN) |
+ L"source.srf.jpg" |
+#else |
+ L"source.srf" |
+#endif |
+}, |
{"filename=source.jpg", |
"http://www.hotmail.com", |
@@ -302,7 +393,12 @@ const struct { |
{"attachment; filename==?iiso88591?Q?caf=EG?=", |
"http://www.example.com/test%20123", |
"image/jpeg", |
- L"test 123.jpg"}, |
+#if defined(OS_LINUX) |
+ L"test 123" |
+#else |
+ L"test 123.jpg" |
+#endif |
+ }, |
{"malformed_disposition", |
"http://www.google.com/%EC%98%88%EC%88%A0%20%EC%98%88%EC%88%A0.jpg", |
@@ -313,7 +409,12 @@ const struct { |
{"attachment; filename==?iso88591?Q?caf=E3?", |
"http://www.google.com/path1/path2/", |
"image/jpeg", |
- L"download.jpg"}, |
+#if defined(OS_LINUX) |
+ L"download" |
+#else |
+ L"download.jpg" |
+#endif |
+ }, |
// Issue=5772. |
{"", |
@@ -335,8 +436,18 @@ const struct { |
{"", |
"http://www.example.com/bar.bogus", |
"application/x-tar", |
- L"bar.bogus.tar"}, |
- |
+#if defined(OS_LINUX) |
+ L"bar.bogus" |
+#else |
+ L"bar.bogus.tar" |
+#endif |
+ }, |
+ |
+ // http://code.google.com/p/chromium/issues/detail?id=20337 |
+ {"filename=.download.txt", |
+ "http://www.example.com/.download.txt", |
+ "text/plain", |
+ L"download.txt"}, |
}; |
} // namespace |
@@ -345,7 +456,7 @@ const struct { |
// (content-disposition, URL name, etc) don't cause security holes. |
TEST_F(DownloadManagerTest, TestDownloadFilename) { |
std::wstring file_name; |
- for (int i = 0; i < arraysize(kGeneratedFiles); ++i) { |
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kGeneratedFiles); ++i) { |
GetGeneratedFilename(kGeneratedFiles[i].disposition, |
kGeneratedFiles[i].url, |
kGeneratedFiles[i].mime_type, |
@@ -420,11 +531,14 @@ const struct { |
} // namespace |
+#if defined(OS_WIN) |
+// TODO(port): port to non-Windows. |
TEST_F(DownloadManagerTest, GetSafeFilename) { |
- for (int i = 0; i < arraysize(kSafeFilenameCases); ++i) { |
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kSafeFilenameCases); ++i) { |
FilePath path(kSafeFilenameCases[i].path); |
download_manager_->GenerateSafeFilename(kSafeFilenameCases[i].mime_type, |
&path); |
EXPECT_EQ(kSafeFilenameCases[i].expected_path, path.value()); |
} |
} |
+#endif // OS_WIN |