Chromium Code Reviews| Index: chrome/browser/ui/webui/print_preview/print_preview_handler.cc |
| diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc |
| index 3c419ca02e3964d021d0870ab6df1de8ddcbaa34..fa395cfda3ef4ccc8c0768d50b3a6e2d1b1dcb3b 100644 |
| --- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc |
| +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc |
| @@ -23,17 +23,16 @@ |
| #include "base/macros.h" |
| #include "base/memory/ref_counted_memory.h" |
| #include "base/metrics/histogram.h" |
| -#include "base/path_service.h" |
| #include "base/strings/string_number_conversions.h" |
| #include "base/strings/stringprintf.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/task_runner_util.h" |
| #include "base/threading/thread.h" |
| -#include "base/threading/thread_restrictions.h" |
| #include "base/values.h" |
| #include "build/build_config.h" |
| #include "chrome/browser/app_mode/app_mode_utils.h" |
| #include "chrome/browser/browser_process.h" |
| +#include "chrome/browser/download/download_prefs.h" |
| #include "chrome/browser/platform_util.h" |
| #include "chrome/browser/printing/print_dialog_cloud.h" |
| #include "chrome/browser/printing/print_error_dialog.h" |
| @@ -52,7 +51,6 @@ |
| #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" |
| #include "chrome/browser/ui/webui/print_preview/printer_handler.h" |
| #include "chrome/browser/ui/webui/print_preview/sticky_settings.h" |
| -#include "chrome/common/chrome_paths.h" |
| #include "chrome/common/chrome_switches.h" |
| #include "chrome/common/cloud_print/cloud_print_cdd_conversion.h" |
| #include "chrome/common/cloud_print/cloud_print_constants.h" |
| @@ -1357,20 +1355,13 @@ void PrintPreviewHandler::SelectFile(const base::FilePath& default_filename, |
| } |
| } |
| - // Initializing |save_path_| if it is not already initialized. |
| + // Get save location from Download Preferences. |
| + DownloadPrefs* download_prefs = DownloadPrefs::FromBrowserContext( |
| + preview_web_contents()->GetBrowserContext()); |
| + base::FilePath file_path = download_prefs->SaveFilePath(); |
| printing::StickySettings* sticky_settings = GetStickySettings(); |
| - if (!sticky_settings->save_path()) { |
| - // Allowing IO operation temporarily. It is ok to do so here because |
| - // the select file dialog performs IO anyway in order to display the |
| - // folders and also it is modal. |
| - base::ThreadRestrictions::ScopedAllowIO allow_io; |
| - base::FilePath file_path; |
| - PathService::Get(chrome::DIR_USER_DOCUMENTS, &file_path); |
| - sticky_settings->StoreSavePath(file_path); |
| - sticky_settings->SaveInPrefs(Profile::FromBrowserContext( |
| - preview_web_contents()->GetBrowserContext())->GetPrefs()); |
| - } |
| - |
| + sticky_settings->SaveInPrefs(Profile::FromBrowserContext( |
| + preview_web_contents()->GetBrowserContext())->GetPrefs()); |
| // Handle the no prompting case. Like the dialog prompt, this function |
| // returns and eventually FileSelected() gets called. |
| if (!prompt_user) { |
| @@ -1378,7 +1369,7 @@ void PrintPreviewHandler::SelectFile(const base::FilePath& default_filename, |
| BrowserThread::GetBlockingPool(), |
| FROM_HERE, |
| base::Bind(&GetUniquePath, |
| - sticky_settings->save_path()->Append(default_filename)), |
| + download_prefs->SaveFilePath().Append(default_filename)), |
| base::Bind(&PrintPreviewHandler::OnGotUniqueFileName, |
| weak_factory_.GetWeakPtr())); |
| return; |
| @@ -1394,7 +1385,7 @@ void PrintPreviewHandler::SelectFile(const base::FilePath& default_filename, |
| select_file_dialog_->SelectFile( |
| ui::SelectFileDialog::SELECT_SAVEAS_FILE, |
| base::string16(), |
| - sticky_settings->save_path()->Append(default_filename), |
| + download_prefs->SaveFilePath().Append(default_filename), |
| &file_type_info, |
| 0, |
| base::FilePath::StringType(), |
| @@ -1422,10 +1413,12 @@ void PrintPreviewHandler::ShowSystemDialog() { |
| void PrintPreviewHandler::FileSelected(const base::FilePath& path, |
| int /* index */, |
| void* /* params */) { |
| - // Updating |save_path_| to the newly selected folder. |
| + // Update downloads location and save sticky settings. |
| + DownloadPrefs* download_prefs = DownloadPrefs::FromBrowserContext( |
| + preview_web_contents()->GetBrowserContext()); |
| + download_prefs->SetSaveFilePath(path.DirName()); |
| printing::StickySettings* sticky_settings = GetStickySettings(); |
| - sticky_settings->StoreSavePath(path.DirName()); |
| - sticky_settings->SaveInPrefs(Profile::FromBrowserContext( |
| + sticky_settings->SaveInPrefs(Profile::FromBrowserContext( |
|
Lei Zhang
2016/07/14 09:43:08
indentation is off
|
| preview_web_contents()->GetBrowserContext())->GetPrefs()); |
| web_ui()->CallJavascriptFunctionUnsafe("fileSelectionCompleted"); |
| print_to_pdf_path_ = path; |