Commit 42fdf611 authored by estade@chromium.org's avatar estade@chromium.org

Make default extension for downloading html "html" rather than "htm" on non-windows platforms.

BUG= http://crbug.com/15999
TEST=un-disable and run save page uitest on linux (it's only disabled because it's flaky, for some unrelated reason)

Review URL: http://codereview.chromium.org/155095

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19997 0039d316-1c4b-4281-b951-d872f2087c98
parent ad9d18b4
...@@ -63,6 +63,13 @@ namespace { ...@@ -63,6 +63,13 @@ namespace {
// resource URL. // resource URL.
const wchar_t kDefaultSaveName[] = L"saved_resource"; const wchar_t kDefaultSaveName[] = L"saved_resource";
const FilePath::CharType kDefaultHtmlExtension[] =
#if defined(OS_WIN)
FILE_PATH_LITERAL("htm");
#else
FILE_PATH_LITERAL("html");
#endif
// Maximum number of file ordinal number. I think it's big enough for resolving // Maximum number of file ordinal number. I think it's big enough for resolving
// name-conflict files which has same base file name. // name-conflict files which has same base file name.
const int32 kMaxFileOrdinalNumber = 9999; const int32 kMaxFileOrdinalNumber = 9999;
...@@ -295,9 +302,11 @@ bool SavePackage::GenerateFilename(const std::string& disposition, ...@@ -295,9 +302,11 @@ bool SavePackage::GenerateFilename(const std::string& disposition,
file_path.RemoveExtension().BaseName().value(); file_path.RemoveExtension().BaseName().value();
FilePath::StringType file_name_ext = file_path.Extension(); FilePath::StringType file_name_ext = file_path.Extension();
// If it is HTML resource, use ".htm" as its extension name. // If it is HTML resource, use ".htm{l,}" as its extension.
if (need_html_ext) if (need_html_ext) {
file_name_ext = FILE_PATH_LITERAL(".htm"); file_name_ext = FILE_PATH_LITERAL(".");
file_name_ext.append(kDefaultHtmlExtension);
}
// Get safe pure file name. // Get safe pure file name.
if (!GetSafePureFileName(saved_main_directory_path_, file_name_ext, if (!GetSafePureFileName(saved_main_directory_path_, file_name_ext,
...@@ -988,12 +997,13 @@ FilePath SavePackage::GetSuggestNameForSaveAs( ...@@ -988,12 +997,13 @@ FilePath SavePackage::GetSuggestNameForSaveAs(
FilePath SavePackage::EnsureHtmlExtension(const FilePath& name) { FilePath SavePackage::EnsureHtmlExtension(const FilePath& name) {
// If the file name doesn't have an extension suitable for HTML files, // If the file name doesn't have an extension suitable for HTML files,
// append ".htm". // append one.
FilePath::StringType ext = file_util::GetFileExtensionFromPath(name); FilePath::StringType ext = file_util::GetFileExtensionFromPath(name);
std::string mime_type; std::string mime_type;
if (!net::GetMimeTypeFromExtension(ext, &mime_type) || if (!net::GetMimeTypeFromExtension(ext, &mime_type) ||
!CanSaveAsComplete(mime_type)) { !CanSaveAsComplete(mime_type)) {
return FilePath(name.value() + FILE_PATH_LITERAL(".htm")); return FilePath(name.value() + FILE_PATH_LITERAL(".") +
kDefaultHtmlExtension);
} }
return name; return name;
} }
...@@ -1029,7 +1039,7 @@ void SavePackage::GetSaveInfo() { ...@@ -1029,7 +1039,7 @@ void SavePackage::GetSaveInfo() {
file_type_info.extension_description_overrides.push_back( file_type_info.extension_description_overrides.push_back(
WideToUTF16(l10n_util::GetString(IDS_SAVE_PAGE_DESC_COMPLETE))); WideToUTF16(l10n_util::GetString(IDS_SAVE_PAGE_DESC_COMPLETE)));
file_type_info.include_all_files = false; file_type_info.include_all_files = false;
default_extension = FILE_PATH_LITERAL("htm"); default_extension = kDefaultHtmlExtension;
} else { } else {
file_type_info.extensions.resize(1); file_type_info.extensions.resize(1);
file_type_info.extensions[0].push_back(suggested_path.Extension()); file_type_info.extensions[0].push_back(suggested_path.Extension());
......
...@@ -11,6 +11,14 @@ ...@@ -11,6 +11,14 @@
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#define FPL FILE_PATH_LITERAL #define FPL FILE_PATH_LITERAL
#if defined(OS_WIN)
#define HTML_EXTENSION ".htm"
// This second define is needed because MSVC is broken.
#define FPL_HTML_EXTENSION L".htm"
#else
#define HTML_EXTENSION ".html"
#define FPL_HTML_EXTENSION ".html"
#endif
namespace { namespace {
...@@ -52,7 +60,7 @@ class SavePackageTest : public testing::Test { ...@@ -52,7 +60,7 @@ class SavePackageTest : public testing::Test {
PathService::Get(base::DIR_TEMP, &test_dir); PathService::Get(base::DIR_TEMP, &test_dir);
save_package_success_ = new SavePackage( save_package_success_ = new SavePackage(
test_dir.AppendASCII("testfile.htm"), test_dir.AppendASCII("testfile" HTML_EXTENSION),
test_dir.AppendASCII("testfile_files")); test_dir.AppendASCII("testfile_files"));
// We need to construct a path that is *almost* kMaxFilePathLength long // We need to construct a path that is *almost* kMaxFilePathLength long
...@@ -62,7 +70,7 @@ class SavePackageTest : public testing::Test { ...@@ -62,7 +70,7 @@ class SavePackageTest : public testing::Test {
long_file_name.resize(kMaxFilePathLength - 9 - test_dir.value().length()); long_file_name.resize(kMaxFilePathLength - 9 - test_dir.value().length());
save_package_fail_ = new SavePackage( save_package_fail_ = new SavePackage(
test_dir.AppendASCII(long_file_name + ".htm"), test_dir.AppendASCII(long_file_name + HTML_EXTENSION),
test_dir.AppendASCII(long_file_name + "_files")); test_dir.AppendASCII(long_file_name + "_files"));
} }
...@@ -103,7 +111,8 @@ static const struct { ...@@ -103,7 +111,8 @@ static const struct {
// name from disposition and url has been tested in DownloadManagerTest. // name from disposition and url has been tested in DownloadManagerTest.
// No useful information in disposition or URL, use default. // No useful information in disposition or URL, use default.
{"1.html", "http://www.savepage.com/", FPL("saved_resource.htm"), true}, {"1.html", "http://www.savepage.com/",
FPL("saved_resource") FPL_HTML_EXTENSION, true},
// No duplicate occurs. // No duplicate occurs.
{"filename=1.css", "http://www.savepage.com", FPL("1.css"), false}, {"filename=1.css", "http://www.savepage.com", FPL("1.css"), false},
...@@ -187,12 +196,12 @@ static const struct { ...@@ -187,12 +196,12 @@ static const struct {
{FPL("filename.HTML"), FPL("filename.HTML")}, {FPL("filename.HTML"), FPL("filename.HTML")},
{FPL("filename.htm"), FPL("filename.htm")}, {FPL("filename.htm"), FPL("filename.htm")},
// ".htm" is added if the extension is improper for HTML. // ".htm" is added if the extension is improper for HTML.
{FPL("hello.world"), FPL("hello.world.htm")}, {FPL("hello.world"), FPL("hello.world") FPL_HTML_EXTENSION},
{FPL("hello.txt"), FPL("hello.txt.htm")}, {FPL("hello.txt"), FPL("hello.txt") FPL_HTML_EXTENSION},
{FPL("is.html.good"), FPL("is.html.good.htm")}, {FPL("is.html.good"), FPL("is.html.good") FPL_HTML_EXTENSION},
// ".htm" is added if the name doesn't have an extension. // ".htm" is added if the name doesn't have an extension.
{FPL("helloworld"), FPL("helloworld.htm")}, {FPL("helloworld"), FPL("helloworld") FPL_HTML_EXTENSION},
{FPL("helloworld."), FPL("helloworld..htm")}, {FPL("helloworld."), FPL("helloworld.") FPL_HTML_EXTENSION},
}; };
TEST_F(SavePackageTest, TestEnsureHtmlExtension) { TEST_F(SavePackageTest, TestEnsureHtmlExtension) {
......
...@@ -28,7 +28,12 @@ ...@@ -28,7 +28,12 @@
const char* const kTestDir = "save_page"; const char* const kTestDir = "save_page";
const char* const kAppendedExtension = ".htm"; const char* const kAppendedExtension =
#if defined(OS_WIN)
".htm";
#else
".html";
#endif
class SavePageTest : public UITest { class SavePageTest : public UITest {
protected: protected:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment