diff options
Diffstat (limited to 'chrome/utility/utility_thread.cc')
-rw-r--r-- | chrome/utility/utility_thread.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/chrome/utility/utility_thread.cc b/chrome/utility/utility_thread.cc index 81e7ff4..baf831f 100644 --- a/chrome/utility/utility_thread.cc +++ b/chrome/utility/utility_thread.cc @@ -63,6 +63,8 @@ void UtilityThread::OnControlMessageReceived(const IPC::Message& msg) { OnIDBKeysFromValuesAndKeyPath) IPC_MESSAGE_HANDLER(UtilityMsg_BatchMode_Started, OnBatchModeStarted) IPC_MESSAGE_HANDLER(UtilityMsg_BatchMode_Finished, OnBatchModeFinished) + IPC_MESSAGE_HANDLER(UtilityMsg_GetPrinterCapsAndDefaults, + OnGetPrinterCapsAndDefaults) IPC_END_MESSAGE_MAP() } @@ -306,7 +308,22 @@ void UtilityThread::OnBatchModeFinished() { ChildProcess::current()->ReleaseProcess(); } +void UtilityThread::OnGetPrinterCapsAndDefaults( + const std::string& printer_name) { + scoped_refptr<printing::PrintBackend> print_backend = + printing::PrintBackend::CreateInstance(NULL); + printing::PrinterCapsAndDefaults printer_info; + if (print_backend->GetPrinterCapsAndDefaults(printer_name, &printer_info)) { + Send(new UtilityHostMsg_GetPrinterCapsAndDefaults_Succeeded(printer_name, + printer_info)); + } else { + Send(new UtilityHostMsg_GetPrinterCapsAndDefaults_Failed(printer_name)); + } + ReleaseProcessIfNeeded(); +} + void UtilityThread::ReleaseProcessIfNeeded() { if (!batch_mode_) ChildProcess::current()->ReleaseProcess(); } + |