| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/file_path.h" | 7 #include "base/file_path.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "chrome/browser/download/save_package.h" | 10 #include "chrome/browser/download/save_package.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 | 12 |
| 13 #define FPL FILE_PATH_LITERAL | 13 #define FPL FILE_PATH_LITERAL |
| 14 #if defined(OS_WIN) |
| 15 #define HTML_EXTENSION ".htm" |
| 16 #else |
| 17 #define HTML_EXTENSION ".html" |
| 18 #endif |
| 14 | 19 |
| 15 namespace { | 20 namespace { |
| 16 | 21 |
| 17 // This constant copied from save_package.cc. | 22 // This constant copied from save_package.cc. |
| 18 #if defined(OS_WIN) | 23 #if defined(OS_WIN) |
| 19 const uint32 kMaxFilePathLength = MAX_PATH - 1; | 24 const uint32 kMaxFilePathLength = MAX_PATH - 1; |
| 20 #elif defined(OS_POSIX) | 25 #elif defined(OS_POSIX) |
| 21 const uint32 kMaxFilePathLength = PATH_MAX - 1; | 26 const uint32 kMaxFilePathLength = PATH_MAX - 1; |
| 22 #endif | 27 #endif |
| 23 | 28 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 45 | 50 |
| 46 } // namespace | 51 } // namespace |
| 47 | 52 |
| 48 class SavePackageTest : public testing::Test { | 53 class SavePackageTest : public testing::Test { |
| 49 public: | 54 public: |
| 50 SavePackageTest() { | 55 SavePackageTest() { |
| 51 FilePath test_dir; | 56 FilePath test_dir; |
| 52 PathService::Get(base::DIR_TEMP, &test_dir); | 57 PathService::Get(base::DIR_TEMP, &test_dir); |
| 53 | 58 |
| 54 save_package_success_ = new SavePackage( | 59 save_package_success_ = new SavePackage( |
| 55 test_dir.AppendASCII("testfile.htm"), | 60 test_dir.AppendASCII("testfile" HTML_EXTENSION), |
| 56 test_dir.AppendASCII("testfile_files")); | 61 test_dir.AppendASCII("testfile_files")); |
| 57 | 62 |
| 58 // We need to construct a path that is *almost* kMaxFilePathLength long | 63 // We need to construct a path that is *almost* kMaxFilePathLength long |
| 59 long_file_name.resize(kMaxFilePathLength + long_file_name.length()); | 64 long_file_name.resize(kMaxFilePathLength + long_file_name.length()); |
| 60 while (long_file_name.length() < kMaxFilePathLength) | 65 while (long_file_name.length() < kMaxFilePathLength) |
| 61 long_file_name += long_file_name; | 66 long_file_name += long_file_name; |
| 62 long_file_name.resize(kMaxFilePathLength - 9 - test_dir.value().length()); | 67 long_file_name.resize(kMaxFilePathLength - 9 - test_dir.value().length()); |
| 63 | 68 |
| 64 save_package_fail_ = new SavePackage( | 69 save_package_fail_ = new SavePackage( |
| 65 test_dir.AppendASCII(long_file_name + ".htm"), | 70 test_dir.AppendASCII(long_file_name + HTML_EXTENSION), |
| 66 test_dir.AppendASCII(long_file_name + "_files")); | 71 test_dir.AppendASCII(long_file_name + "_files")); |
| 67 } | 72 } |
| 68 | 73 |
| 69 bool GetGeneratedFilename(bool need_success_generate_filename, | 74 bool GetGeneratedFilename(bool need_success_generate_filename, |
| 70 const std::string& disposition, | 75 const std::string& disposition, |
| 71 const std::string& url, | 76 const std::string& url, |
| 72 bool need_htm_ext, | 77 bool need_htm_ext, |
| 73 FilePath::StringType* generated_name) { | 78 FilePath::StringType* generated_name) { |
| 74 SavePackage* save_package; | 79 SavePackage* save_package; |
| 75 if (need_success_generate_filename) | 80 if (need_success_generate_filename) |
| (...skipping 20 matching lines...) Expand all Loading... |
| 96 static const struct { | 101 static const struct { |
| 97 const char* disposition; | 102 const char* disposition; |
| 98 const char* url; | 103 const char* url; |
| 99 const FilePath::CharType* expected_name; | 104 const FilePath::CharType* expected_name; |
| 100 bool need_htm_ext; | 105 bool need_htm_ext; |
| 101 } kGeneratedFiles[] = { | 106 } kGeneratedFiles[] = { |
| 102 // We mainly focus on testing duplicated names here, since retrieving file | 107 // We mainly focus on testing duplicated names here, since retrieving file |
| 103 // name from disposition and url has been tested in DownloadManagerTest. | 108 // name from disposition and url has been tested in DownloadManagerTest. |
| 104 | 109 |
| 105 // No useful information in disposition or URL, use default. | 110 // No useful information in disposition or URL, use default. |
| 106 {"1.html", "http://www.savepage.com/", FPL("saved_resource.htm"), true}, | 111 {"1.html", "http://www.savepage.com/", FPL("saved_resource") HTML_EXTENSION, |
| 112 true}, |
| 107 | 113 |
| 108 // No duplicate occurs. | 114 // No duplicate occurs. |
| 109 {"filename=1.css", "http://www.savepage.com", FPL("1.css"), false}, | 115 {"filename=1.css", "http://www.savepage.com", FPL("1.css"), false}, |
| 110 | 116 |
| 111 // No duplicate occurs. | 117 // No duplicate occurs. |
| 112 {"filename=1.js", "http://www.savepage.com", FPL("1.js"), false}, | 118 {"filename=1.js", "http://www.savepage.com", FPL("1.js"), false}, |
| 113 | 119 |
| 114 // Append numbers for duplicated names. | 120 // Append numbers for duplicated names. |
| 115 {"filename=1.css", "http://www.savepage.com", FPL("1(1).css"), false}, | 121 {"filename=1.css", "http://www.savepage.com", FPL("1(1).css"), false}, |
| 116 | 122 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 | 186 |
| 181 static const struct { | 187 static const struct { |
| 182 const FilePath::CharType* page_title; | 188 const FilePath::CharType* page_title; |
| 183 const FilePath::CharType* expected_name; | 189 const FilePath::CharType* expected_name; |
| 184 } kExtensionTestCases[] = { | 190 } kExtensionTestCases[] = { |
| 185 // Extension is preserved if it is already proper for HTML. | 191 // Extension is preserved if it is already proper for HTML. |
| 186 {FPL("filename.html"), FPL("filename.html")}, | 192 {FPL("filename.html"), FPL("filename.html")}, |
| 187 {FPL("filename.HTML"), FPL("filename.HTML")}, | 193 {FPL("filename.HTML"), FPL("filename.HTML")}, |
| 188 {FPL("filename.htm"), FPL("filename.htm")}, | 194 {FPL("filename.htm"), FPL("filename.htm")}, |
| 189 // ".htm" is added if the extension is improper for HTML. | 195 // ".htm" is added if the extension is improper for HTML. |
| 190 {FPL("hello.world"), FPL("hello.world.htm")}, | 196 {FPL("hello.world"), FPL("hello.world") FPL(HTML_EXTENSION)}, |
| 191 {FPL("hello.txt"), FPL("hello.txt.htm")}, | 197 {FPL("hello.txt"), FPL("hello.txt") FPL(HTML_EXTENSION)}, |
| 192 {FPL("is.html.good"), FPL("is.html.good.htm")}, | 198 {FPL("is.html.good"), FPL("is.html.good") FPL(HTML_EXTENSION)}, |
| 193 // ".htm" is added if the name doesn't have an extension. | 199 // ".htm" is added if the name doesn't have an extension. |
| 194 {FPL("helloworld"), FPL("helloworld.htm")}, | 200 {FPL("helloworld"), FPL("helloworld") FPL(HTML_EXTENSION)}, |
| 195 {FPL("helloworld."), FPL("helloworld..htm")}, | 201 {FPL("helloworld."), FPL("helloworld.") FPL(HTML_EXTENSION)}, |
| 196 }; | 202 }; |
| 197 | 203 |
| 198 TEST_F(SavePackageTest, TestEnsureHtmlExtension) { | 204 TEST_F(SavePackageTest, TestEnsureHtmlExtension) { |
| 199 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kExtensionTestCases); ++i) { | 205 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kExtensionTestCases); ++i) { |
| 200 FilePath original = FilePath(kExtensionTestCases[i].page_title); | 206 FilePath original = FilePath(kExtensionTestCases[i].page_title); |
| 201 FilePath expected = FilePath(kExtensionTestCases[i].expected_name); | 207 FilePath expected = FilePath(kExtensionTestCases[i].expected_name); |
| 202 FilePath actual = EnsureHtmlExtension(original); | 208 FilePath actual = EnsureHtmlExtension(original); |
| 203 EXPECT_EQ(expected.value(), actual.value()) << "Failed for page title: " << | 209 EXPECT_EQ(expected.value(), actual.value()) << "Failed for page title: " << |
| 204 kExtensionTestCases[i].page_title; | 210 kExtensionTestCases[i].page_title; |
| 205 } | 211 } |
| 206 } | 212 } |
| OLD | NEW |