summaryrefslogtreecommitdiffstats
path: root/chrome/browser/download
diff options
context:
space:
mode:
authortfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-08 11:15:36 +0000
committertfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-08 11:15:36 +0000
commitf13706a7c5c9bd60d2e4d4678a4f64e822608d21 (patch)
tree66e136e944db9e4ffb7aeb1028aa1589fe47d373 /chrome/browser/download
parent306f989feb6ba625b3330b7d8ad9ede979edbcb4 (diff)
downloadchromium_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.cc6
-rw-r--r--chrome/browser/download/download_prefs.h4
-rw-r--r--chrome/browser/download/save_package.cc30
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.