diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-08 11:15:36 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-08 11:15:36 +0000 |
commit | f13706a7c5c9bd60d2e4d4678a4f64e822608d21 (patch) | |
tree | 66e136e944db9e4ffb7aeb1028aa1589fe47d373 /chrome/browser/download | |
parent | 306f989feb6ba625b3330b7d8ad9ede979edbcb4 (diff) | |
download | chromium_src-f13706a7c5c9bd60d2e4d4678a4f64e822608d21.zip chromium_src-f13706a7c5c9bd60d2e4d4678a4f64e822608d21.tar.gz chromium_src-f13706a7c5c9bd60d2e4d4678a4f64e822608d21.tar.bz2 |
Save web page doesn't remember preferred format.
BUG=67135
TEST=see bug
Review URL: http://codereview.chromium.org/6410013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74111 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/download')
-rw-r--r-- | chrome/browser/download/download_prefs.cc | 6 | ||||
-rw-r--r-- | chrome/browser/download/download_prefs.h | 4 | ||||
-rw-r--r-- | chrome/browser/download/save_package.cc | 30 |
3 files changed, 31 insertions, 9 deletions
diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download/download_prefs.cc index 40be829..ec36422 100644 --- a/chrome/browser/download/download_prefs.cc +++ b/chrome/browser/download/download_prefs.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -12,12 +12,14 @@ #include "chrome/browser/browser_thread.h" #include "chrome/browser/download/download_extensions.h" #include "chrome/browser/download/download_util.h" +#include "chrome/browser/download/save_package.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/common/pref_names.h" DownloadPrefs::DownloadPrefs(PrefService* prefs) : prefs_(prefs) { prompt_for_download_.Init(prefs::kPromptForDownload, prefs, NULL); download_path_.Init(prefs::kDownloadDefaultDirectory, prefs, NULL); + save_file_type_.Init(prefs::kSaveFileType, prefs, NULL); // We store any file extension that should be opened automatically at // download completion in this pref. @@ -46,6 +48,8 @@ void DownloadPrefs::RegisterUserPrefs(PrefService* prefs) { prefs->RegisterBooleanPref(prefs::kPromptForDownload, false); prefs->RegisterStringPref(prefs::kDownloadExtensionsToOpen, ""); prefs->RegisterBooleanPref(prefs::kDownloadDirUpgraded, false); + prefs->RegisterIntegerPref(prefs::kSaveFileType, + SavePackage::SAVE_AS_COMPLETE_HTML); // The default download path is userprofile\download. const FilePath& default_download_path = diff --git a/chrome/browser/download/download_prefs.h b/chrome/browser/download/download_prefs.h index 1345a44..b65bb29 100644 --- a/chrome/browser/download/download_prefs.h +++ b/chrome/browser/download/download_prefs.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -23,6 +23,7 @@ class DownloadPrefs { bool prompt_for_download() const { return *prompt_for_download_; } FilePath download_path() const { return *download_path_; } + int save_file_type() const { return *save_file_type_; } // Returns true if there is at least one file extension registered // for auto-open. @@ -48,6 +49,7 @@ class DownloadPrefs { BooleanPrefMember prompt_for_download_; FilePathPrefMember download_path_; + IntegerPrefMember save_file_type_; // Set of file extensions to open at download completion. struct AutoOpenCompareFunctor { diff --git a/chrome/browser/download/save_package.cc b/chrome/browser/download/save_package.cc index a3db082..25fb86d 100644 --- a/chrome/browser/download/save_package.cc +++ b/chrome/browser/download/save_package.cc @@ -23,6 +23,7 @@ #include "chrome/browser/download/download_item.h" #include "chrome/browser/download/download_item_model.h" #include "chrome/browser/download/download_manager.h" +#include "chrome/browser/download/download_prefs.h" #include "chrome/browser/download/download_shelf.h" #include "chrome/browser/download/download_util.h" #include "chrome/browser/download/save_file.h" @@ -101,17 +102,26 @@ const int kSelectFileHtmlOnlyIndex = 1; const int kSelectFileCompleteIndex = 2; // Used for mapping between SavePackageType constants and the indexes above. -const SavePackage::SavePackageType IndexToSaveType[] = { +const SavePackage::SavePackageType kIndexToSaveType[] = { SavePackage::SAVE_TYPE_UNKNOWN, SavePackage::SAVE_AS_ONLY_HTML, SavePackage::SAVE_AS_COMPLETE_HTML, }; // Used for mapping between the IDS_ string identifiers and the indexes above. -const int IndexToIDS[] = { +const int kIndexToIDS[] = { 0, IDS_SAVE_PAGE_DESC_HTML_ONLY, IDS_SAVE_PAGE_DESC_COMPLETE, }; +int SavePackageTypeToIndex(SavePackage::SavePackageType type) { + for (size_t i = 0; i < arraysize(kIndexToSaveType); ++i) { + if (kIndexToSaveType[i] == type) + return i; + } + NOTREACHED(); + return -1; +} + // Strip current ordinal number, if any. Should only be used on pure // file names, i.e. those stripped of their extensions. // TODO(estade): improve this to not choke on alternate encodings. @@ -1291,8 +1301,12 @@ void SavePackage::CreateDirectoryOnFileThread( void SavePackage::ContinueGetSaveInfo(const FilePath& suggested_path, bool can_save_as_complete) { - // Use "Web Page, Complete" option as default choice of saving page. - int file_type_index = kSelectFileCompleteIndex; + DownloadPrefs* download_prefs = + tab_contents_->profile()->GetDownloadManager()->download_prefs(); + int file_type_index = + SavePackageTypeToIndex( + static_cast<SavePackageType>(download_prefs->save_file_type())); + SelectFileDialog::FileTypeInfo file_type_info; FilePath::StringType default_extension; @@ -1320,7 +1334,7 @@ void SavePackage::ContinueGetSaveInfo(const FilePath& suggested_path, } file_type_info.extension_description_overrides.push_back( - l10n_util::GetStringUTF16(IndexToIDS[kSelectFileCompleteIndex - 1])); + l10n_util::GetStringUTF16(kIndexToIDS[kSelectFileCompleteIndex - 1])); file_type_info.extensions[kSelectFileCompleteIndex - 1].push_back( FILE_PATH_LITERAL("htm")); file_type_info.extensions[kSelectFileCompleteIndex - 1].push_back( @@ -1332,7 +1346,7 @@ void SavePackage::ContinueGetSaveInfo(const FilePath& suggested_path, } file_type_info.extension_description_overrides.push_back( - l10n_util::GetStringUTF16(IndexToIDS[kSelectFileCompleteIndex])); + l10n_util::GetStringUTF16(kIndexToIDS[kSelectFileCompleteIndex])); file_type_info.include_all_files = false; default_extension = kDefaultHtmlExtension; } else { @@ -1396,7 +1410,9 @@ void SavePackage::ContinueSave(const FilePath& final_name, save_file_path.SetValue(path_string); } - save_type_ = IndexToSaveType[index]; + save_type_ = kIndexToSaveType[index]; + + prefs->SetInteger(prefs::kSaveFileType, save_type_); if (save_type_ == SavePackage::SAVE_AS_COMPLETE_HTML) { // Make new directory for saving complete file. |