| 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..fba7d030cbe994b591e1a75813efc958445ddacc 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,18 @@ void PrintPreviewHandler::GetNumberFormatAndMeasurementSystem( | 
| } | 
|  | 
| void PrintPreviewHandler::HandleGetInitialSettings( | 
| -    const base::ListValue* /*args*/) { | 
| +    const base::ListValue* args) { | 
| +  std::string callback_id; | 
| +  CHECK(args->GetString(0, &callback_id)); | 
| +  CHECK(!callback_id.empty()); | 
| + | 
| +  AllowJavascript(); | 
| + | 
| // 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 +1235,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 +1270,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() { | 
|  |