OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 <string> | 5 #include <string> |
6 | 6 |
| 7 #include "base/string_util.h" |
| 8 #include "build/build_config.h" |
7 #include "chrome/browser/download/download_manager.h" | 9 #include "chrome/browser/download/download_manager.h" |
8 #include "chrome/browser/download/download_util.h" | 10 #include "chrome/browser/download/download_util.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
10 | 12 |
| 13 #if defined(OS_LINUX) |
| 14 #include <locale.h> |
| 15 #endif |
| 16 |
11 class DownloadManagerTest : public testing::Test { | 17 class DownloadManagerTest : public testing::Test { |
12 public: | 18 public: |
13 DownloadManagerTest() { | 19 DownloadManagerTest() { |
14 download_manager_ = new DownloadManager(); | 20 download_manager_ = new DownloadManager(); |
15 download_util::InitializeExeTypes(&download_manager_->exe_types_); | 21 download_util::InitializeExeTypes(&download_manager_->exe_types_); |
16 } | 22 } |
17 | 23 |
18 void GetGeneratedFilename(const std::string& content_disposition, | 24 void GetGeneratedFilename(const std::string& content_disposition, |
19 const std::string& url, | 25 const std::string& url, |
20 const std::string& mime_type, | 26 const std::string& mime_type, |
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 "http://www.example.com/.download.txt", | 454 "http://www.example.com/.download.txt", |
449 "text/plain", | 455 "text/plain", |
450 L"download.txt"}, | 456 L"download.txt"}, |
451 }; | 457 }; |
452 | 458 |
453 } // namespace | 459 } // namespace |
454 | 460 |
455 // Tests to ensure that the file names we generate from hints from the server | 461 // Tests to ensure that the file names we generate from hints from the server |
456 // (content-disposition, URL name, etc) don't cause security holes. | 462 // (content-disposition, URL name, etc) don't cause security holes. |
457 TEST_F(DownloadManagerTest, TestDownloadFilename) { | 463 TEST_F(DownloadManagerTest, TestDownloadFilename) { |
| 464 #if defined(OS_LINUX) |
| 465 // This test doesn't run when the locale is not UTF-8 becuase some of the |
| 466 // string conversions fail. This is OK (we have the default value) but they |
| 467 // don't match our expectations. |
| 468 std::string locale = setlocale(LC_CTYPE, NULL); |
| 469 StringToLowerASCII(&locale); |
| 470 ASSERT_NE(std::string::npos, locale.find("utf-8")) |
| 471 << "Your locale must be set to UTF-8 for this test to pass!"; |
| 472 #endif |
| 473 |
458 std::wstring file_name; | 474 std::wstring file_name; |
459 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kGeneratedFiles); ++i) { | 475 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kGeneratedFiles); ++i) { |
460 GetGeneratedFilename(kGeneratedFiles[i].disposition, | 476 GetGeneratedFilename(kGeneratedFiles[i].disposition, |
461 kGeneratedFiles[i].url, | 477 kGeneratedFiles[i].url, |
462 kGeneratedFiles[i].mime_type, | 478 kGeneratedFiles[i].mime_type, |
463 "", | 479 "", |
464 &file_name); | 480 &file_name); |
465 EXPECT_EQ(kGeneratedFiles[i].expected_name, file_name); | 481 EXPECT_EQ(kGeneratedFiles[i].expected_name, file_name); |
466 GetGeneratedFilename(kGeneratedFiles[i].disposition, | 482 GetGeneratedFilename(kGeneratedFiles[i].disposition, |
467 kGeneratedFiles[i].url, | 483 kGeneratedFiles[i].url, |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
535 // TODO(port): port to non-Windows. | 551 // TODO(port): port to non-Windows. |
536 TEST_F(DownloadManagerTest, GetSafeFilename) { | 552 TEST_F(DownloadManagerTest, GetSafeFilename) { |
537 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kSafeFilenameCases); ++i) { | 553 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kSafeFilenameCases); ++i) { |
538 FilePath path(kSafeFilenameCases[i].path); | 554 FilePath path(kSafeFilenameCases[i].path); |
539 download_manager_->GenerateSafeFilename(kSafeFilenameCases[i].mime_type, | 555 download_manager_->GenerateSafeFilename(kSafeFilenameCases[i].mime_type, |
540 &path); | 556 &path); |
541 EXPECT_EQ(kSafeFilenameCases[i].expected_path, path.value()); | 557 EXPECT_EQ(kSafeFilenameCases[i].expected_path, path.value()); |
542 } | 558 } |
543 } | 559 } |
544 #endif // OS_WIN | 560 #endif // OS_WIN |
OLD | NEW |