Chromium Code Reviews| Index: chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc |
| diff --git a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc |
| index d2965906e7c498d48e13ef9c4424137d87f9d2d0..82ebc4cb315e6abf183e59e81d46f298536cba42 100644 |
| --- a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc |
| +++ b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc |
| @@ -8,10 +8,15 @@ |
| #include "base/bind.h" |
| #include "base/memory/ptr_util.h" |
| +#include "base/path_service.h" |
| #include "base/strings/string_util.h" |
| #include "base/values.h" |
| #include "chrome/browser/chromeos/printing/printer_pref_manager_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| +#include "chrome/browser/ui/browser_finder.h" |
| +#include "chrome/browser/ui/browser_window.h" |
| +#include "chrome/browser/ui/chrome_select_file_policy.h" |
| +#include "chrome/common/chrome_paths.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/web_ui.h" |
| #include "printing/backend/print_backend.h" |
| @@ -38,6 +43,9 @@ void CupsPrintersHandler::RegisterMessages() { |
| "removeCupsPrinter", |
| base::Bind(&CupsPrintersHandler::HandleRemoveCupsPrinter, |
| base::Unretained(this))); |
| + web_ui()->RegisterMessageCallback( |
| + "selectPPDFile", base::Bind(&CupsPrintersHandler::HandleSelectPPDFile, |
| + base::Unretained(this))); |
| } |
| void CupsPrintersHandler::HandleGetCupsPrintersList( |
| @@ -109,5 +117,33 @@ void CupsPrintersHandler::HandleRemoveCupsPrinter(const base::ListValue* args) { |
| printer_id); |
| } |
| +void CupsPrintersHandler::HandleSelectPPDFile(const base::ListValue* args) { |
| + CHECK_EQ(1U, args->GetSize()); |
| + CHECK(args->GetString(0, &webui_callback_id_)); |
| + |
| + base::FilePath downloads_path; |
| + if (!PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, &downloads_path)) |
|
michaelpg
2016/09/15 03:01:39
We probably want to use the user's preferred downl
xdai1
2016/09/16 21:19:32
Done.
|
| + return; |
| + |
| + select_file_dialog_ = ui::SelectFileDialog::Create( |
| + this, new ChromeSelectFilePolicy(web_ui()->GetWebContents())); |
| + gfx::NativeWindow owning_window = |
| + chrome::FindBrowserWithWebContents(web_ui()->GetWebContents()) |
| + ->window() |
| + ->GetNativeWindow(); |
| + select_file_dialog_->SelectFile( |
| + ui::SelectFileDialog::SELECT_OPEN_FILE, base::string16(), downloads_path, |
| + nullptr, 0, FILE_PATH_LITERAL(""), owning_window, nullptr); |
| +} |
| + |
| +void CupsPrintersHandler::FileSelected(const base::FilePath& path, |
| + int index, |
| + void* params) { |
| + DCHECK(!webui_callback_id_.empty()); |
| + ResolveJavascriptCallback(base::StringValue(webui_callback_id_), |
| + base::StringValue(path.value())); |
| + webui_callback_id_.clear(); |
| +} |
| + |
| } // namespace settings |
| } // namespace chromeos |