| 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 52ba8300dd4e15b97a553031775d15315ee4afa6..40a051500a9cf37ee0c6d51cbdf124490b231305 100644
|
| --- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| @@ -570,6 +570,9 @@ void PrintPreviewHandler::RegisterMessages() {
|
| "getPrinterCapabilities",
|
| base::Bind(&PrintPreviewHandler::HandleGetPrinterCapabilities,
|
| base::Unretained(this)));
|
| + web_ui()->RegisterMessageCallback(
|
| + "setupPrinter", base::Bind(&PrintPreviewHandler::HandlePrinterSetup,
|
| + base::Unretained(this)));
|
| #if BUILDFLAG(ENABLE_BASIC_PRINT_DIALOG)
|
| web_ui()->RegisterMessageCallback("showSystemDialog",
|
| base::Bind(&PrintPreviewHandler::HandleShowSystemDialog,
|
| @@ -1079,6 +1082,17 @@ void PrintPreviewHandler::HandleGetPrinterCapabilities(
|
| cb);
|
| }
|
|
|
| +void PrintPreviewHandler::HandlePrinterSetup(const base::ListValue* args) {
|
| + std::string printer_name;
|
| + bool ret = args->GetString(0, &printer_name);
|
| + if (!ret || printer_name.empty())
|
| + return;
|
| +
|
| + printer_backend_proxy()->ConfigurePrinterAndFetchCapabilities(
|
| + printer_name, base::Bind(&PrintPreviewHandler::SendPrinterSetup,
|
| + weak_factory_.GetWeakPtr(), printer_name));
|
| +}
|
| +
|
| void PrintPreviewHandler::OnSigninComplete() {
|
| if (print_preview_ui())
|
| print_preview_ui()->OnReloadPrintersList();
|
| @@ -1279,6 +1293,24 @@ void PrintPreviewHandler::SendPrinterCapabilities(
|
| *settings_info);
|
| }
|
|
|
| +void PrintPreviewHandler::SendPrinterSetup(
|
| + const std::string& printer_name,
|
| + std::unique_ptr<base::DictionaryValue> destination_info) {
|
| + bool success = true;
|
| + base::DictionaryValue empty_dictionary;
|
| + base::DictionaryValue* caps;
|
| + if (!destination_info ||
|
| + !destination_info->GetDictionary(printing::kPrinterCapabilities, &caps)) {
|
| + LOG(WARNING) << "Printer setup failed";
|
| + caps = &empty_dictionary;
|
| + success = false;
|
| + }
|
| +
|
| + web_ui()->CallJavascriptFunctionUnsafe(
|
| + "onPrinterSetup", base::StringValue(printer_name),
|
| + base::FundamentalValue(success), *caps);
|
| +}
|
| +
|
| void PrintPreviewHandler::SetupPrinterList(
|
| const printing::PrinterList& printer_list) {
|
| base::ListValue printers;
|
|
|