summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-19 01:19:34 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-19 01:19:34 +0000
commit5ba0a2cc590e74be37190774d6b8db1f418d7906 (patch)
treeb3d122e716adf87d992075d5e3fa904e5e6c9ccc /chrome/browser
parent7b30c97ea91c97af1fb352fb749a934e2386a3c8 (diff)
downloadchromium_src-5ba0a2cc590e74be37190774d6b8db1f418d7906.zip
chromium_src-5ba0a2cc590e74be37190774d6b8db1f418d7906.tar.gz
chromium_src-5ba0a2cc590e74be37190774d6b8db1f418d7906.tar.bz2
Bring up save_package, save_item, save_file_manager on posix.
Review URL: http://codereview.chromium.org/20479 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9999 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/browser.scons3
-rw-r--r--chrome/browser/browser_process_impl.cc2
-rw-r--r--chrome/browser/download/save_file_manager.cc8
-rw-r--r--chrome/browser/download/save_item.cc7
-rw-r--r--chrome/browser/download/save_package.cc66
-rw-r--r--chrome/browser/download/save_package.h8
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host.cc2
-rw-r--r--chrome/browser/renderer_host/save_file_resource_handler.cc7
-rw-r--r--chrome/browser/tab_contents/web_contents.h2
9 files changed, 65 insertions, 40 deletions
diff --git a/chrome/browser/browser.scons b/chrome/browser/browser.scons
index ac66265..b17d35c 100644
--- a/chrome/browser/browser.scons
+++ b/chrome/browser/browser.scons
@@ -691,9 +691,6 @@ if not env.Bit('windows'):
'download/download_manager.cc',
'download/download_util.cc',
'download/download_request_manager.cc',
- 'download/save_file_manager.cc',
- 'download/save_item.cc',
- 'download/save_package.cc',
'download/save_page_model.cc',
'drag_utils.cc',
'encoding_menu_controller_delegate.cc',
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index ee11066..eb545e5 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/browser_trial.h"
#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/debugger/debugger_wrapper.h"
+#include "chrome/browser/download/save_file_manager.h"
#include "chrome/browser/google_url_tracker.h"
#include "chrome/browser/metrics/metrics_service.h"
#include "chrome/browser/profile_manager.h"
@@ -27,7 +28,6 @@
#if defined(OS_WIN)
#include "chrome/browser/automation/automation_provider_list.h"
#include "chrome/browser/download/download_file.h"
-#include "chrome/browser/download/save_file_manager.h"
#include "chrome/browser/icon_manager.h"
#include "chrome/browser/plugin_service.h"
#include "chrome/browser/printing/print_job_manager.h"
diff --git a/chrome/browser/download/save_file_manager.cc b/chrome/browser/download/save_file_manager.cc
index 1ec3af5..6d381cd 100644
--- a/chrome/browser/download/save_file_manager.cc
+++ b/chrome/browser/download/save_file_manager.cc
@@ -15,7 +15,6 @@
#include "chrome/browser/download/save_file.h"
#include "chrome/browser/download/save_package.h"
#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
-#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/tab_contents/tab_util.h"
#include "chrome/browser/tab_contents/web_contents.h"
#include "chrome/common/chrome_paths.h"
@@ -29,6 +28,13 @@
#include "chrome/common/win_util.h"
#endif
+#if defined(OS_WIN)
+// TODO(port): port these headers to posix.
+#include "chrome/browser/tab_contents/tab_contents.h"
+#elif defined(OS_POSIX)
+#include "chrome/common/temp_scaffolding_stubs.h"
+#endif
+
SaveFileManager::SaveFileManager(MessageLoop* ui_loop,
MessageLoop* io_loop,
ResourceDispatcherHost* rdh)
diff --git a/chrome/browser/download/save_item.cc b/chrome/browser/download/save_item.cc
index da96b88..cb2067d 100644
--- a/chrome/browser/download/save_item.cc
+++ b/chrome/browser/download/save_item.cc
@@ -7,7 +7,6 @@
#include "base/file_util.h"
#include "base/logging.h"
#include "base/string_util.h"
-#include "base/win_util.h"
#include "chrome/browser/download/save_file.h"
#include "chrome/browser/download/save_file_manager.h"
#include "chrome/browser/download/save_package.h"
@@ -18,15 +17,15 @@ SaveItem::SaveItem(const GURL& url,
SavePackage* package,
SaveFileCreateInfo::SaveFileSource save_source)
: save_id_(-1),
- save_source_(save_source),
url_(url),
referrer_(referrer),
total_bytes_(0),
received_bytes_(0),
state_(WAIT_START),
- package_(package),
has_final_name_(false),
- is_success_(false) {
+ is_success_(false),
+ save_source_(save_source),
+ package_(package) {
DCHECK(package);
}
diff --git a/chrome/browser/download/save_package.cc b/chrome/browser/download/save_package.cc
index 56723c4..d26424e 100644
--- a/chrome/browser/download/save_package.cc
+++ b/chrome/browser/download/save_package.cc
@@ -11,12 +11,9 @@
#include "base/string_util.h"
#include "base/task.h"
#include "base/thread.h"
-#include "base/win_util.h"
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/download/download_manager.h"
#include "chrome/browser/download/save_file.h"
#include "chrome/browser/download/save_file_manager.h"
-#include "chrome/browser/download/save_page_model.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/renderer_host/render_process_host.h"
#include "chrome/browser/renderer_host/render_view_host.h"
@@ -24,19 +21,31 @@
#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
#include "chrome/browser/tab_contents/tab_util.h"
#include "chrome/browser/tab_contents/web_contents.h"
-#include "chrome/browser/views/download_shelf_view.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/l10n_util.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/pref_service.h"
#include "chrome/common/stl_util-inl.h"
-#include "chrome/common/win_util.h"
#include "net/base/io_buffer.h"
#include "net/base/mime_util.h"
#include "net/base/net_util.h"
#include "net/url_request/url_request_context.h"
#include "webkit/glue/dom_serializer_delegate.h"
+#if defined(OS_WIN)
+#include "base/win_util.h"
+#include "chrome/common/win_util.h"
+#endif
+
+#if defined(OS_WIN)
+// TODO(port): port these headers.
+#include "chrome/browser/download/download_manager.h"
+#include "chrome/browser/download/save_page_model.h"
+#include "chrome/browser/views/download_shelf_view.h"
+#elif defined(OS_POSIX)
+#include "chrome/common/temp_scaffolding_stubs.h"
+#endif
+
#include "generated_resources.h"
using base::Time;
@@ -57,7 +66,11 @@ const int32 kMaxFileOrdinalNumber = 9999;
// Maximum length for file path. Since Windows have MAX_PATH limitation for
// file path, we need to make sure length of file path of every saved file
// is less than MAX_PATH
+#if defined(OS_WIN)
const uint32 kMaxFilePathLength = MAX_PATH - 1;
+#elif defined(OS_POSIX)
+const uint32 kMaxFilePathLength = PATH_MAX - 1;
+#endif
// Maximum length for file ordinal number part. Since we only support the
// maximum 9999 for ordinal number, which means maximum file ordinal number part
@@ -96,14 +109,14 @@ SavePackage::SavePackage(WebContents* web_content,
const FilePath& file_full_path,
const FilePath& directory_full_path)
: web_contents_(web_content),
- save_type_(save_type),
+ download_(NULL),
saved_main_file_path_(file_full_path),
saved_main_directory_path_(directory_full_path),
- all_save_items_count_(0),
- disk_error_occurred_(false),
- user_canceled_(false),
- download_(NULL),
finished_(false),
+ user_canceled_(false),
+ disk_error_occurred_(false),
+ save_type_(save_type),
+ all_save_items_count_(0),
wait_state_(INITIALIZE),
tab_id_(web_content->process()->host_id()) {
DCHECK(web_content);
@@ -122,13 +135,13 @@ SavePackage::SavePackage(WebContents* web_content,
// method Cancel to be be called in destructor in test mode.
SavePackage::SavePackage(const FilePath::CharType* file_full_path,
const FilePath::CharType* directory_full_path)
- : all_save_items_count_(0),
+ : download_(NULL),
saved_main_file_path_(file_full_path),
saved_main_directory_path_(directory_full_path),
finished_(true),
- download_(NULL),
user_canceled_(false),
disk_error_occurred_(false),
+ all_save_items_count_(0),
tab_id_(0) {
DCHECK(!saved_main_file_path_.empty() &&
saved_main_file_path_.value().length() <= kMaxFilePathLength);
@@ -210,6 +223,9 @@ bool SavePackage::Init() {
}
// Create the fake DownloadItem and display the view.
+#if defined(OS_WIN)
+ // TODO(port): We need to do something like this on posix, but avoid
+ // using DownloadShelfView, which probably should not be ported directly.
download_ = new DownloadItem(1, saved_main_file_path_, 0, page_url_,
FilePath(), Time::Now(), 0, -1, -1, false);
download_->set_manager(web_contents_->profile()->GetDownloadManager());
@@ -217,6 +233,9 @@ bool SavePackage::Init() {
shelf->AddDownloadView(new DownloadItemView(
download_, shelf, new SavePageModel(this, download_)));
web_contents_->SetDownloadShelfVisible(true);
+#elif defined(OS_POSIX)
+ NOTIMPLEMENTED();
+#endif
// Check save type and process the save page job.
if (save_type_ == SAVE_AS_COMPLETE_HTML) {
@@ -304,8 +323,7 @@ bool SavePackage::GenerateFilename(const std::string& disposition,
kMaxFilePathLength, &file_name))
return false;
} else {
- uint32 i;
- for (i = ordinal_number; i < kMaxFileOrdinalNumber; ++i) {
+ for (int i = ordinal_number; i < kMaxFileOrdinalNumber; ++i) {
FilePath::StringType new_name = base_file_name +
StringPrintf(FILE_PATH_LITERAL("(%d)"), i) + file_name_ext;
if (file_name_set_.find(new_name) == file_name_set_.end()) {
@@ -927,18 +945,21 @@ FilePath SavePackage::GetSuggestNameForSaveAs(PrefService* prefs,
// Ask user for getting final saving name.
std::wstring file_name = name.ToWStringHack();
+ // TODO(port): we need a version of ReplaceIllegalCharacters() that takes
+ // FilePaths.
file_util::ReplaceIllegalCharacters(&file_name, L' ');
FilePath suggest_name = FilePath::FromWStringHack(save_file_path.GetValue());
- suggest_name = suggest_name.Append(file_name);
+ suggest_name = suggest_name.Append(FilePath::FromWStringHack(file_name));
return suggest_name;
}
// Static.
bool SavePackage::GetSaveInfo(const FilePath& suggest_name,
- HWND container_hwnd,
+ gfx::NativeView container_window,
SavePackageParam* param,
DownloadManager* download_manager) {
+#if defined(OS_WIN)
// TODO(tc): It might be nice to move this code into the download
// manager. http://crbug.com/6025
@@ -959,7 +980,7 @@ bool SavePackage::GetSaveInfo(const FilePath& suggest_name,
// ignore the file extension generated by SaveFileAsWithFilter, since it
// will always be ".htm".
std::wstring main_file_path;
- bool success = win_util::SaveFileAsWithFilter(container_hwnd,
+ bool success = win_util::SaveFileAsWithFilter(container_window,
suggest_name.value(), filter, L"htm", true, &index, &main_file_path);
param->saved_main_file_path = FilePath(main_file_path);
if (!success)
@@ -969,9 +990,8 @@ bool SavePackage::GetSaveInfo(const FilePath& suggest_name,
}
} else {
if (g_should_prompt_for_filename) {
- // TODO(estade): see above comment.
std::wstring main_file_path;
- if (!win_util::SaveFileAs(container_hwnd, suggest_name.value(),
+ if (!win_util::SaveFileAs(container_window, suggest_name.value(),
&main_file_path))
param->saved_main_file_path = FilePath(main_file_path);
return false;
@@ -1010,6 +1030,14 @@ bool SavePackage::GetSaveInfo(const FilePath& suggest_name,
}
return true;
+#elif defined(OS_POSIX)
+ // TODO(port): this function pops up a save file dialog and fills in the
+ // attributes in |param|. We need to do this on other platforms as well
+ // when we have some sort of equivalent to the win_util:: calls in this
+ // function.
+ NOTIMPLEMENTED();
+ return false;
+#endif
}
// Static
diff --git a/chrome/browser/download/save_package.h b/chrome/browser/download/save_package.h
index 5dbc9e6..2035b61 100644
--- a/chrome/browser/download/save_package.h
+++ b/chrome/browser/download/save_package.h
@@ -5,7 +5,6 @@
#ifndef CHROME_BROWSER_DOWNLOAD_SAVE_PACKAGE_H_
#define CHROME_BROWSER_DOWNLOAD_SAVE_PACKAGE_H_
-#include <hash_map>
#include <queue>
#include <string>
#include <utility>
@@ -13,6 +12,7 @@
#include "base/basictypes.h"
#include "base/file_path.h"
+#include "base/gfx/native_widget_types.h"
#include "base/hash_tables.h"
#include "base/ref_counted.h"
#include "base/time.h"
@@ -164,7 +164,7 @@ class SavePackage : public base::RefCountedThreadSafe<SavePackage>,
: current_tab_mime_type(mime_type) { }
};
static bool GetSaveInfo(const FilePath& suggest_name,
- HWND container_hwnd,
+ gfx::NativeView container_window,
SavePackageParam* param,
DownloadManager* download_manager);
@@ -285,9 +285,9 @@ class SavePackage : public base::RefCountedThreadSafe<SavePackage>,
SavePackageType save_type_;
// Number of all need to be saved resources.
- int all_save_items_count_;
+ size_t all_save_items_count_;
- typedef base::hash_set<std::wstring> FileNameSet;
+ typedef base::hash_set<FilePath::StringType> FileNameSet;
// This set is used to eliminate duplicated file names in saving directory.
FileNameSet file_name_set_;
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.cc b/chrome/browser/renderer_host/resource_dispatcher_host.cc
index 2217a0e..0474b31 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host.cc
+++ b/chrome/browser/renderer_host/resource_dispatcher_host.cc
@@ -13,6 +13,7 @@
#include "base/time.h"
#include "chrome/browser/cert_store.h"
#include "chrome/browser/cross_site_request_manager.h"
+#include "chrome/browser/download/save_file_manager.h"
#include "chrome/browser/renderer_host/async_resource_handler.h"
#include "chrome/browser/renderer_host/buffered_resource_handler.h"
#include "chrome/browser/renderer_host/cross_site_resource_handler.h"
@@ -41,7 +42,6 @@
#include "chrome/browser/download/download_file.h"
#include "chrome/browser/download/download_manager.h"
#include "chrome/browser/download/download_request_manager.h"
-#include "chrome/browser/download/save_file_manager.h"
#include "chrome/browser/external_protocol_handler.h"
#include "chrome/browser/login_prompt.h"
#include "chrome/browser/plugin_service.h"
diff --git a/chrome/browser/renderer_host/save_file_resource_handler.cc b/chrome/browser/renderer_host/save_file_resource_handler.cc
index c464664..c4db4a2 100644
--- a/chrome/browser/renderer_host/save_file_resource_handler.cc
+++ b/chrome/browser/renderer_host/save_file_resource_handler.cc
@@ -4,13 +4,8 @@
#include "chrome/browser/renderer_host/save_file_resource_handler.h"
-#if defined(OS_POSIX)
-#include "chrome/common/temp_scaffolding_stubs.h"
-#elif defined(OS_WIN)
-#include "chrome/browser/download/save_file_manager.h"
-#endif
-
#include "base/string_util.h"
+#include "chrome/browser/download/save_file_manager.h"
#include "net/base/io_buffer.h"
SaveFileResourceHandler::SaveFileResourceHandler(int render_process_host_id,
diff --git a/chrome/browser/tab_contents/web_contents.h b/chrome/browser/tab_contents/web_contents.h
index e93cc0b..c817ce0 100644
--- a/chrome/browser/tab_contents/web_contents.h
+++ b/chrome/browser/tab_contents/web_contents.h
@@ -12,6 +12,7 @@
#include "base/basictypes.h"
#include "base/hash_tables.h"
#include "chrome/browser/cancelable_request.h"
+#include "chrome/browser/download/save_package.h"
#include "chrome/browser/fav_icon_helper.h"
#include "chrome/browser/renderer_host/render_view_host_delegate.h"
#include "chrome/browser/tab_contents/navigation_controller.h"
@@ -25,7 +26,6 @@
// Remove when we've finished porting the supporting classes.
#include "chrome/common/temp_scaffolding_stubs.h"
#elif defined(OS_WIN)
-#include "chrome/browser/download/save_package.h"
#include "chrome/browser/printing/print_view_manager.h"
#include "chrome/browser/shell_dialogs.h"
#include "chrome/browser/tab_contents/tab_contents.h"