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 0f0bde1698ffb13967aaf4c507c063f10e8e190e..6b23950c7212ad16c34c00059ec97a3523b582e3 100644 |
| --- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc |
| +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc |
| @@ -1208,11 +1208,19 @@ void PrintPreviewHandler::GetNumberFormatAndMeasurementSystem( |
| } |
| void PrintPreviewHandler::HandleGetInitialSettings( |
| - const base::ListValue* /*args*/) { |
| + const base::ListValue* args) { |
| + AllowJavascript(); |
| + |
| + std::string callback_id; |
| + if (!args->GetString(0, &callback_id) || callback_id.empty()) { |
|
dpapad
2017/05/17 23:59:12
If we get in here, that would be a programmer's er
rbpotter
2017/05/18 17:56:30
Done.
|
| + RejectJavascriptCallback(base::Value(callback_id), base::Value()); |
| + } |
| + |
| // Send before SendInitialSettings() to allow cloud printer auto select. |
| SendCloudPrintEnabled(); |
| - printer_backend_proxy()->GetDefaultPrinter(base::Bind( |
| - &PrintPreviewHandler::SendInitialSettings, weak_factory_.GetWeakPtr())); |
| + printer_backend_proxy()->GetDefaultPrinter( |
| + base::Bind(&PrintPreviewHandler::SendInitialSettings, |
| + weak_factory_.GetWeakPtr(), callback_id)); |
| } |
| void PrintPreviewHandler::HandleForceOpenNewTab(const base::ListValue* args) { |
| @@ -1228,6 +1236,7 @@ void PrintPreviewHandler::HandleForceOpenNewTab(const base::ListValue* args) { |
| } |
| void PrintPreviewHandler::SendInitialSettings( |
| + const std::string& callback_id, |
| const std::string& default_printer) { |
| base::DictionaryValue initial_settings; |
| initial_settings.SetString(kInitiatorTitle, |
| @@ -1262,8 +1271,7 @@ void PrintPreviewHandler::SendInitialSettings( |
| if (print_preview_ui()->source_is_modifiable()) |
| GetNumberFormatAndMeasurementSystem(&initial_settings); |
| - web_ui()->CallJavascriptFunctionUnsafe("setInitialSettings", |
| - initial_settings); |
| + ResolveJavascriptCallback(base::Value(callback_id), initial_settings); |
| } |
| void PrintPreviewHandler::ClosePreviewDialog() { |