diff options
Diffstat (limited to 'chrome/browser/download')
-rw-r--r-- | chrome/browser/download/download_manager.cc | 12 | ||||
-rw-r--r-- | chrome/browser/download/save_package.cc | 34 |
2 files changed, 22 insertions, 24 deletions
diff --git a/chrome/browser/download/download_manager.cc b/chrome/browser/download/download_manager.cc index 3b68cfa..43954a7 100644 --- a/chrome/browser/download/download_manager.cc +++ b/chrome/browser/download/download_manager.cc @@ -640,18 +640,16 @@ void DownloadManager::OnPathExistenceAvailable(DownloadCreateInfo* info) { WebContents* contents = tab_util::GetWebContentsByID( info->render_process_id, info->render_view_id); -#if defined(OS_WIN) - std::wstring filter = - win_util::GetFileFilterFromPath(info->suggested_path.value()); -#elif defined(OS_LINUX) - std::wstring filter; -#endif + SelectFileDialog::FileTypeInfo file_type_info; + file_type_info.extensions.resize(1); + file_type_info.extensions[0].push_back(info->suggested_path.Extension()); + file_type_info.include_all_files = true; gfx::NativeWindow owning_window = contents ? platform_util::GetTopLevel(contents->GetNativeView()) : NULL; select_file_dialog_->SelectFile(SelectFileDialog::SELECT_SAVEAS_FILE, string16(), info->suggested_path, - filter, 0, FILE_PATH_LITERAL(""), + &file_type_info, 0, FILE_PATH_LITERAL(""), owning_window, info); } else { // No prompting for download, just continue with the suggested name. diff --git a/chrome/browser/download/save_package.cc b/chrome/browser/download/save_package.cc index 23bb704..01a1b26 100644 --- a/chrome/browser/download/save_package.cc +++ b/chrome/browser/download/save_package.cc @@ -995,8 +995,8 @@ FilePath SavePackage::GetSuggestNameForSaveAs(PrefService* prefs, void SavePackage::GetSaveInfo() { // Use "Web Page, Complete" option as default choice of saving page. - int filter_index = 2; - std::wstring filter; + int file_type_index = 2; + SelectFileDialog::FileTypeInfo file_type_info; FilePath::StringType default_extension; FilePath title = FilePath::FromWStringHack(UTF16ToWideHack(web_contents_->GetTitle())); @@ -1009,22 +1009,22 @@ void SavePackage::GetSaveInfo() { // If the contents can not be saved as complete-HTML, do not show the // file filters. if (CanSaveAsComplete(save_params->current_tab_mime_type)) { - filter = l10n_util::GetString(IDS_SAVE_PAGE_FILTER); - filter.resize(filter.size() + 2); - filter[filter.size() - 1] = L'\0'; - filter[filter.size() - 2] = L'\0'; + file_type_info.extensions.resize(2); + file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("htm")); + file_type_info.extension_description_overrides.push_back( + WideToUTF16(l10n_util::GetString(IDS_SAVE_PAGE_DESC_HTML_ONLY))); + file_type_info.extensions[1].push_back(FILE_PATH_LITERAL("htm")); + file_type_info.extension_description_overrides.push_back( + WideToUTF16(l10n_util::GetString(IDS_SAVE_PAGE_DESC_COMPLETE))); + file_type_info.include_all_files = false; default_extension = FILE_PATH_LITERAL("htm"); } else { -#if defined(OS_WIN) - filter = win_util::GetFileFilterFromPath(suggested_path.ToWStringHack()); -#else - // TODO(port): implement this. - NOTIMPLEMENTED(); -#endif - filter_index = 1; + file_type_info.extensions.resize(1); + file_type_info.extensions[0].push_back(suggested_path.Extension()); + file_type_info.include_all_files = true; + file_type_index = 1; } - #if defined(OS_LINUX) || defined(OS_WIN) if (g_should_prompt_for_filename) { if (!select_file_dialog_.get()) @@ -1032,8 +1032,8 @@ void SavePackage::GetSaveInfo() { select_file_dialog_->SelectFile(SelectFileDialog::SELECT_SAVEAS_FILE, string16(), suggested_path, - filter, - filter_index, + &file_type_info, + file_type_index, default_extension, platform_util::GetTopLevel( web_contents_->GetNativeView()), @@ -1042,7 +1042,7 @@ void SavePackage::GetSaveInfo() { #endif // defined(OS_LINUX) || defined(OS_WIN) { // Just use 'suggested_path' instead of opening the dialog prompt. - ContinueSave(save_params, suggested_path, filter_index); + ContinueSave(save_params, suggested_path, file_type_index); delete save_params; } } |