diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-19 01:19:34 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-19 01:19:34 +0000 |
commit | 5ba0a2cc590e74be37190774d6b8db1f418d7906 (patch) | |
tree | b3d122e716adf87d992075d5e3fa904e5e6c9ccc /chrome/browser | |
parent | 7b30c97ea91c97af1fb352fb749a934e2386a3c8 (diff) | |
download | chromium_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.scons | 3 | ||||
-rw-r--r-- | chrome/browser/browser_process_impl.cc | 2 | ||||
-rw-r--r-- | chrome/browser/download/save_file_manager.cc | 8 | ||||
-rw-r--r-- | chrome/browser/download/save_item.cc | 7 | ||||
-rw-r--r-- | chrome/browser/download/save_package.cc | 66 | ||||
-rw-r--r-- | chrome/browser/download/save_package.h | 8 | ||||
-rw-r--r-- | chrome/browser/renderer_host/resource_dispatcher_host.cc | 2 | ||||
-rw-r--r-- | chrome/browser/renderer_host/save_file_resource_handler.cc | 7 | ||||
-rw-r--r-- | chrome/browser/tab_contents/web_contents.h | 2 |
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" |