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

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

Issue 2463473002: Present the printer list from preferences for Chrome OS. (Closed)
Patch Set: add bug id Created 4 years, 1 month 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 1119b974cb21344b9e07167d50ae48668930743d..35364c1787a90bcb550c4c6942e2ca3e59180652 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.
@@ -393,21 +383,18 @@ std::pair<std::string, std::string> GetPrinterNameAndDescription(
if (it != printer.options.end())
real_description = it->second;
return std::make_pair(real_name, real_description);
+#elif defined(OS_CHROMEOS)
+ // For Chrome OS |printer.printer_display_name| is the human readable name and
Lei Zhang 2016/11/03 07:39:50 So is ChromeOS more in line with Mac then? Maybe d
skau 2016/11/03 21:58:27 Per discussion, I'm going to try to align all the
Lei Zhang 2016/11/03 22:06:12 Agreed, I think that's a safer bet.
+ // |printer.printer_name| is the name used in CUPS.
+ return std::make_pair(printer.printer_display_name,
+ printer.printer_description);
#else
return std::make_pair(printer.printer_name, printer.printer_description);
#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 +416,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 +684,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 +1220,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()));
}

Powered by Google App Engine
This is Rietveld 408576698