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

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

Issue 2542363002: Interrogate PpdProvider from PrintPreview. (Closed)
Patch Set: Created 4 years 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 de2fc1255d17e2a97ba53f2257c88a3671bd04f6..73145508da9d4512580271a9f0a3e9ccaf7a500a 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
@@ -518,7 +518,8 @@ PrintPreviewHandler::PrintPreviewHandler()
manage_cloud_printers_dialog_request_count_(0),
reported_failed_preview_(false),
has_logged_printers_count_(false),
- gaia_cookie_manager_service_(NULL),
+ gaia_cookie_manager_service_(nullptr),
+ printer_backend_proxy_(nullptr),
weak_factory_(this) {
ReportUserActionHistogram(PREVIEW_STARTED);
}
@@ -611,11 +612,23 @@ PrintPreviewUI* PrintPreviewHandler::print_preview_ui() const {
return static_cast<PrintPreviewUI*>(web_ui()->GetController());
}
+printing::PrinterBackendProxy* PrintPreviewHandler::printer_backend_proxy() {
Carlson 2016/12/02 19:10:22 This should run on the UI thread, right? Add a DC
skau 2016/12/05 23:13:34 No. The proxy is actually designed to run on the
Carlson 2016/12/05 23:45:58 I don't understand your response here. Is this fu
skau 2016/12/06 23:20:08 I misread your comment. I've added the DCHECK. I
+ if (!printer_backend_proxy_) {
+#if defined(OS_CHROMEOS)
+ printer_backend_proxy_ =
+ printing::PrinterBackendProxy::Create(Profile::FromWebUI(web_ui()));
Carlson 2016/12/02 19:10:22 The reason for the multiplexing of proxies here de
skau 2016/12/05 23:13:34 Done.
+#else
+ printer_backend_proxy_ = printing::PrinterBackendProxy::Create();
+#endif
+ }
+
+ return printer_backend_proxy_.get();
+}
+
void PrintPreviewHandler::HandleGetPrinters(const base::ListValue* /*args*/) {
VLOG(1) << "Enumerate printers start";
- printing::EnumeratePrinters(Profile::FromWebUI(web_ui()),
- base::Bind(&PrintPreviewHandler::SetupPrinterList,
- weak_factory_.GetWeakPtr()));
+ printer_backend_proxy()->EnumeratePrinters(base::Bind(
+ &PrintPreviewHandler::SetupPrinterList, weak_factory_.GetWeakPtr()));
}
void PrintPreviewHandler::HandleGetPrivetPrinters(const base::ListValue* args) {
@@ -1029,8 +1042,8 @@ void PrintPreviewHandler::HandleGetPrinterCapabilities(
base::Bind(&PrintPreviewHandler::SendPrinterCapabilities,
weak_factory_.GetWeakPtr(), printer_name);
- printing::ConfigurePrinterAndFetchCapabilities(Profile::FromWebUI(web_ui()),
- printer_name, cb);
+ printer_backend_proxy()->ConfigurePrinterAndFetchCapabilities(printer_name,
+ cb);
}
void PrintPreviewHandler::OnSigninComplete() {
@@ -1154,7 +1167,9 @@ void PrintPreviewHandler::HandleGetInitialSettings(
SendCloudPrintEnabled();
base::PostTaskAndReplyWithResult(
BrowserThread::GetBlockingPool(), FROM_HERE,
- base::Bind(&printing::GetDefaultPrinterOnBlockingPoolThread),
+ base::Bind(
Carlson 2016/12/02 19:10:22 Is this safe? The second bind is weak ptr based,
skau 2016/12/05 23:13:34 I need to think about this a little. WeakPtrs are
skau 2016/12/06 23:20:08 This has been fixed so that we dispatch the call f
+ &printing::PrinterBackendProxy::GetDefaultPrinterOnBlockingPoolThread,
+ base::Unretained(printer_backend_proxy())),
base::Bind(&PrintPreviewHandler::SendInitialSettings,
weak_factory_.GetWeakPtr()));
}

Powered by Google App Engine
This is Rietveld 408576698