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 1119b974cb21344b9e07167d50ae48668930743d..24a554cb6428e9bc59859812daa6afd645c00a8b 100644 |
| --- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc |
| +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc |
| @@ -49,6 +49,7 @@ |
| #include "chrome/browser/ui/chrome_select_file_policy.h" |
| #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" |
| #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" |
| +#include "chrome/browser/ui/webui/print_preview/printer_backend_proxy.h" |
| #include "chrome/browser/ui/webui/print_preview/printer_handler.h" |
| #include "chrome/browser/ui/webui/print_preview/sticky_settings.h" |
| #include "chrome/common/chrome_switches.h" |
| @@ -294,17 +295,6 @@ void PrintToPdfCallback(const scoped_refptr<base::RefCountedBytes>& data, |
| pdf_file_saved_closure.Run(); |
| } |
| -std::string GetDefaultPrinterOnBlockingPoolThread() { |
| - DCHECK(BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); |
| - |
| - scoped_refptr<printing::PrintBackend> print_backend( |
| - printing::PrintBackend::CreateInstance(nullptr)); |
| - |
| - std::string default_printer = print_backend->GetDefaultPrinterName(); |
| - VLOG(1) << "Default Printer: " << default_printer; |
| - return default_printer; |
| -} |
| - |
| class PrintingContextDelegate : public printing::PrintingContext::Delegate { |
| public: |
| // PrintingContext::Delegate methods. |
| @@ -384,7 +374,7 @@ std::unique_ptr<base::DictionaryValue> GetPdfCapabilities( |
| std::pair<std::string, std::string> GetPrinterNameAndDescription( |
| const printing::PrinterBasicInfo& printer) { |
| -#if defined(OS_MACOSX) |
| +#if defined(OS_MACOSX) || defined(OS_CHROMEOS) |
| // On Mac, |printer.printer_description| specifies the printer name and |
| // |printer.printer_name| specifies the device name / printer queue name. |
|
Lei Zhang
2016/11/03 22:12:29
Add a comment to say Chrome OS emulates the Mac be
skau
2016/11/03 22:30:08
Done.
|
| const std::string& real_name = printer.printer_description; |
| @@ -398,16 +388,8 @@ std::pair<std::string, std::string> GetPrinterNameAndDescription( |
| #endif |
| } |
| -void EnumeratePrintersOnBlockingPoolThread(base::ListValue* printers) { |
| - DCHECK(BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); |
| - |
| - scoped_refptr<printing::PrintBackend> print_backend( |
| - printing::PrintBackend::CreateInstance(nullptr)); |
| - |
| - VLOG(1) << "Enumerate printers start"; |
| - printing::PrinterList printer_list; |
| - print_backend->EnumeratePrinters(&printer_list); |
| - |
| +void PrintersToValues(const printing::PrinterList& printer_list, |
| + base::ListValue* printers) { |
| for (const printing::PrinterBasicInfo& printer : printer_list) { |
| std::unique_ptr<base::DictionaryValue> printer_info( |
| new base::DictionaryValue); |
| @@ -429,6 +411,15 @@ void EnumeratePrintersOnBlockingPoolThread(base::ListValue* printers) { |
| VLOG(1) << "Found printer " << printer_name << " with device name " |
| << printer.printer_name; |
| } |
| +} |
| + |
| +void EnumeratePrinters(Profile* profile, base::ListValue* printers) { |
| + DCHECK(BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); |
| + |
| + VLOG(1) << "Enumerate printers start"; |
| + printing::PrinterList printer_list = |
| + printing::EnumeratePrintersOnBlockingPoolThread(profile); |
| + PrintersToValues(printer_list, printers); |
| VLOG(1) << "Enumerate printers finished, found " << printers->GetSize() |
| << " printers"; |
| } |
| @@ -688,7 +679,7 @@ PrintPreviewUI* PrintPreviewHandler::print_preview_ui() const { |
| void PrintPreviewHandler::HandleGetPrinters(const base::ListValue* /*args*/) { |
| base::ListValue* results = new base::ListValue; |
| BrowserThread::PostBlockingPoolTaskAndReply( |
| - FROM_HERE, base::Bind(&EnumeratePrintersOnBlockingPoolThread, |
| + FROM_HERE, base::Bind(&EnumeratePrinters, Profile::FromWebUI(web_ui()), |
| base::Unretained(results)), |
| base::Bind(&PrintPreviewHandler::SetupPrinterList, |
| weak_factory_.GetWeakPtr(), base::Owned(results))); |
| @@ -1224,7 +1215,7 @@ void PrintPreviewHandler::HandleGetInitialSettings( |
| SendCloudPrintEnabled(); |
| base::PostTaskAndReplyWithResult( |
| BrowserThread::GetBlockingPool(), FROM_HERE, |
| - base::Bind(&GetDefaultPrinterOnBlockingPoolThread), |
| + base::Bind(&printing::GetDefaultPrinterOnBlockingPoolThread), |
| base::Bind(&PrintPreviewHandler::SendInitialSettings, |
| weak_factory_.GetWeakPtr())); |
| } |