Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5899)

Unified Diff: chrome/browser/ui/webui/print_preview/print_preview_handler.cc

Issue 2606043004: Perform printer setup on Chrome OS before selecting printer. (Closed)
Patch Set: address comments, fix tests Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698