diff options
-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 | ||||
-rw-r--r-- | chrome/common/pref_names.cc | 4 | ||||
-rw-r--r-- | chrome/common/pref_names.h | 1 |
5 files changed, 36 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. diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index 30f0730..cbf20c5 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc @@ -872,6 +872,10 @@ const char kDownloadDirUpgraded[] = "download.directory_upgrade"; // String which specifies where to save html files to by default. const char kSaveFileDefaultDirectory[] = "savefile.default_directory"; +// The type used to save the page. See the enum SavePackage::SavePackageType in +// the chrome/browser/download/save_package.h for the possible values. +const char kSaveFileType[] = "savefile.type"; + // String which specifies the last directory that was chosen for uploading // or opening a file. const char kSelectFileLastDirectory[] = "selectfile.last_directory"; diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index bea6914..83f8d4d 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h @@ -298,6 +298,7 @@ extern const char kDownloadExtensionsToOpen[]; extern const char kDownloadDirUpgraded[]; extern const char kSaveFileDefaultDirectory[]; +extern const char kSaveFileType[]; extern const char kSelectFileLastDirectory[]; |