Index: chrome/browser/download/download_manager_unittest.cc |
=================================================================== |
--- chrome/browser/download/download_manager_unittest.cc (revision 15065) |
+++ chrome/browser/download/download_manager_unittest.cc (working copy) |
@@ -18,11 +18,13 @@ |
void GetGeneratedFilename(const std::string& content_disposition, |
const std::string& url, |
const std::string& mime_type, |
+ const std::string& referrer_charset, |
std::wstring* generated_name_string) { |
DownloadCreateInfo info; |
info.content_disposition = content_disposition; |
info.url = GURL(url); |
info.mime_type = mime_type; |
+ info.referrer_charset = referrer_charset; |
FilePath generated_name; |
download_manager_->GenerateFilename(&info, &generated_name); |
*generated_name_string = generated_name.ToWStringHack(); |
@@ -335,7 +337,6 @@ |
"application/x-tar", |
L"bar.bogus.tar"}, |
- // TODO(darin): Add some raw 8-bit Content-Disposition tests. |
}; |
} // namespace |
@@ -343,14 +344,35 @@ |
// Tests to ensure that the file names we generate from hints from the server |
// (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) { |
- std::wstring file_name; |
GetGeneratedFilename(kGeneratedFiles[i].disposition, |
kGeneratedFiles[i].url, |
kGeneratedFiles[i].mime_type, |
+ "", |
&file_name); |
EXPECT_EQ(kGeneratedFiles[i].expected_name, file_name); |
+ GetGeneratedFilename(kGeneratedFiles[i].disposition, |
+ kGeneratedFiles[i].url, |
+ kGeneratedFiles[i].mime_type, |
+ "GBK", |
+ &file_name); |
+ EXPECT_EQ(kGeneratedFiles[i].expected_name, file_name); |
} |
+ |
+ // A couple of cases with raw 8bit characters in C-D. |
+ GetGeneratedFilename("attachment; filename=caf\xc3\xa9.png", |
+ "http://www.example.com/images?id=3", |
+ "image/png", |
+ "iso-8859-1", |
+ &file_name); |
+ EXPECT_EQ(L"caf\u00e9.png", file_name); |
+ GetGeneratedFilename("attachment; filename=caf\xe5.png", |
+ "http://www.example.com/images?id=3", |
+ "image/png", |
+ "windows-1253", |
+ &file_name); |
+ EXPECT_EQ(L"caf\u03b5.png", file_name); |
} |
namespace { |