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

Side by Side Diff: chrome/browser/ui/webui/print_preview/extension_printer_handler.cc

Issue 922833004: Make PrinterProviderAPI a pure interface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 9 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/print_preview/extension_printer_handler.h" 5 #include "chrome/browser/ui/webui/print_preview/extension_printer_handler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/files/file_path.h" 11 #include "base/files/file_path.h"
12 #include "base/files/file_util.h" 12 #include "base/files/file_util.h"
13 #include "base/location.h" 13 #include "base/location.h"
14 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
15 #include "base/memory/ref_counted_memory.h" 15 #include "base/memory/ref_counted_memory.h"
16 #include "base/task_runner_util.h" 16 #include "base/task_runner_util.h"
17 #include "base/threading/worker_pool.h" 17 #include "base/threading/worker_pool.h"
18 #include "chrome/browser/local_discovery/pwg_raster_converter.h" 18 #include "chrome/browser/local_discovery/pwg_raster_converter.h"
19 #include "components/cloud_devices/common/cloud_device_description.h" 19 #include "components/cloud_devices/common/cloud_device_description.h"
20 #include "components/cloud_devices/common/printer_description.h" 20 #include "components/cloud_devices/common/printer_description.h"
21 #include "extensions/browser/api/printer_provider/printer_provider_api.h" 21 #include "extensions/browser/api/printer_provider/printer_provider_api.h"
22 #include "extensions/browser/api/printer_provider/printer_provider_api_factory.h "
23 #include "extensions/browser/api/printer_provider/printer_provider_print_job.h"
22 #include "printing/pdf_render_settings.h" 24 #include "printing/pdf_render_settings.h"
23 #include "printing/pwg_raster_settings.h" 25 #include "printing/pwg_raster_settings.h"
24 26
25 using local_discovery::PWGRasterConverter; 27 using local_discovery::PWGRasterConverter;
26 28
27 namespace { 29 namespace {
28 30
29 const char kContentTypePdf[] = "application/pdf"; 31 const char kContentTypePdf[] = "application/pdf";
30 const char kContentTypePWGRaster[] = "image/pwg-raster"; 32 const char kContentTypePWGRaster[] = "image/pwg-raster";
31 const char kContentTypeAll[] = "*/*"; 33 const char kContentTypeAll[] = "*/*";
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 } 82 }
81 83
82 void ExtensionPrinterHandler::Reset() { 84 void ExtensionPrinterHandler::Reset() {
83 // TODO(tbarzic): Keep track of pending request ids issued by |this| and 85 // TODO(tbarzic): Keep track of pending request ids issued by |this| and
84 // cancel them from here. 86 // cancel them from here.
85 weak_ptr_factory_.InvalidateWeakPtrs(); 87 weak_ptr_factory_.InvalidateWeakPtrs();
86 } 88 }
87 89
88 void ExtensionPrinterHandler::StartGetPrinters( 90 void ExtensionPrinterHandler::StartGetPrinters(
89 const PrinterHandler::GetPrintersCallback& callback) { 91 const PrinterHandler::GetPrintersCallback& callback) {
90 extensions::PrinterProviderAPI::GetFactoryInstance() 92 extensions::PrinterProviderAPIFactory::GetInstance()
91 ->Get(browser_context_) 93 ->GetForBrowserContext(browser_context_)
92 ->DispatchGetPrintersRequested( 94 ->DispatchGetPrintersRequested(
93 base::Bind(&ExtensionPrinterHandler::WrapGetPrintersCallback, 95 base::Bind(&ExtensionPrinterHandler::WrapGetPrintersCallback,
94 weak_ptr_factory_.GetWeakPtr(), callback)); 96 weak_ptr_factory_.GetWeakPtr(), callback));
95 } 97 }
96 98
97 void ExtensionPrinterHandler::StartGetCapability( 99 void ExtensionPrinterHandler::StartGetCapability(
98 const std::string& destination_id, 100 const std::string& destination_id,
99 const PrinterHandler::GetCapabilityCallback& callback) { 101 const PrinterHandler::GetCapabilityCallback& callback) {
100 extensions::PrinterProviderAPI::GetFactoryInstance() 102 extensions::PrinterProviderAPIFactory::GetInstance()
101 ->Get(browser_context_) 103 ->GetForBrowserContext(browser_context_)
102 ->DispatchGetCapabilityRequested( 104 ->DispatchGetCapabilityRequested(
103 destination_id, 105 destination_id,
104 base::Bind(&ExtensionPrinterHandler::WrapGetCapabilityCallback, 106 base::Bind(&ExtensionPrinterHandler::WrapGetCapabilityCallback,
105 weak_ptr_factory_.GetWeakPtr(), callback, destination_id)); 107 weak_ptr_factory_.GetWeakPtr(), callback, destination_id));
106 } 108 }
107 109
108 void ExtensionPrinterHandler::StartPrint( 110 void ExtensionPrinterHandler::StartPrint(
109 const std::string& destination_id, 111 const std::string& destination_id,
110 const std::string& capability, 112 const std::string& capability,
111 const std::string& ticket_json, 113 const std::string& ticket_json,
112 const gfx::Size& page_size, 114 const gfx::Size& page_size,
113 const scoped_refptr<base::RefCountedMemory>& print_data, 115 const scoped_refptr<base::RefCountedMemory>& print_data,
114 const PrinterHandler::PrintCallback& callback) { 116 const PrinterHandler::PrintCallback& callback) {
115 scoped_ptr<extensions::PrinterProviderAPI::PrintJob> print_job( 117 scoped_ptr<extensions::PrinterProviderPrintJob> print_job(
116 new extensions::PrinterProviderAPI::PrintJob()); 118 new extensions::PrinterProviderPrintJob());
117 print_job->printer_id = destination_id; 119 print_job->printer_id = destination_id;
118 print_job->ticket_json = ticket_json; 120 print_job->ticket_json = ticket_json;
119 121
120 cloud_devices::CloudDeviceDescription printer_description; 122 cloud_devices::CloudDeviceDescription printer_description;
121 printer_description.InitFromString(capability); 123 printer_description.InitFromString(capability);
122 124
123 cloud_devices::printer::ContentTypesCapability content_types; 125 cloud_devices::printer::ContentTypesCapability content_types;
124 content_types.LoadFrom(printer_description); 126 content_types.LoadFrom(printer_description);
125 127
126 const bool kUsePdf = content_types.Contains(kContentTypePdf) || 128 const bool kUsePdf = content_types.Contains(kContentTypePdf) ||
(...skipping 29 matching lines...) Expand all
156 } 158 }
157 pwg_raster_converter_->Start( 159 pwg_raster_converter_->Start(
158 data.get(), 160 data.get(),
159 PWGRasterConverter::GetConversionSettings(printer_description, page_size), 161 PWGRasterConverter::GetConversionSettings(printer_description, page_size),
160 PWGRasterConverter::GetBitmapSettings(printer_description, ticket), 162 PWGRasterConverter::GetBitmapSettings(printer_description, ticket),
161 base::Bind(&ReadConvertedPWGRasterFile, callback)); 163 base::Bind(&ReadConvertedPWGRasterFile, callback));
162 } 164 }
163 165
164 void ExtensionPrinterHandler::DispatchPrintJob( 166 void ExtensionPrinterHandler::DispatchPrintJob(
165 const PrinterHandler::PrintCallback& callback, 167 const PrinterHandler::PrintCallback& callback,
166 scoped_ptr<extensions::PrinterProviderAPI::PrintJob> print_job, 168 scoped_ptr<extensions::PrinterProviderPrintJob> print_job,
167 const scoped_refptr<base::RefCountedMemory>& print_data) { 169 const scoped_refptr<base::RefCountedMemory>& print_data) {
168 if (!print_data) { 170 if (!print_data) {
169 WrapPrintCallback(callback, false, kInvalidDataPrintError); 171 WrapPrintCallback(callback, false, kInvalidDataPrintError);
170 return; 172 return;
171 } 173 }
172 174
173 print_job->document_bytes = print_data; 175 print_job->document_bytes = print_data;
174 176
175 extensions::PrinterProviderAPI::GetFactoryInstance() 177 extensions::PrinterProviderAPIFactory::GetInstance()
176 ->Get(browser_context_) 178 ->GetForBrowserContext(browser_context_)
177 ->DispatchPrintRequested( 179 ->DispatchPrintRequested(
178 *print_job, base::Bind(&ExtensionPrinterHandler::WrapPrintCallback, 180 *print_job, base::Bind(&ExtensionPrinterHandler::WrapPrintCallback,
179 weak_ptr_factory_.GetWeakPtr(), callback)); 181 weak_ptr_factory_.GetWeakPtr(), callback));
180 } 182 }
181 183
182 void ExtensionPrinterHandler::WrapGetPrintersCallback( 184 void ExtensionPrinterHandler::WrapGetPrintersCallback(
183 const PrinterHandler::GetPrintersCallback& callback, 185 const PrinterHandler::GetPrintersCallback& callback,
184 const base::ListValue& printers, 186 const base::ListValue& printers,
185 bool done) { 187 bool done) {
186 callback.Run(printers, done); 188 callback.Run(printers, done);
187 } 189 }
188 190
189 void ExtensionPrinterHandler::WrapGetCapabilityCallback( 191 void ExtensionPrinterHandler::WrapGetCapabilityCallback(
190 const PrinterHandler::GetCapabilityCallback& callback, 192 const PrinterHandler::GetCapabilityCallback& callback,
191 const std::string& destination_id, 193 const std::string& destination_id,
192 const base::DictionaryValue& capability) { 194 const base::DictionaryValue& capability) {
193 callback.Run(destination_id, capability); 195 callback.Run(destination_id, capability);
194 } 196 }
195 197
196 void ExtensionPrinterHandler::WrapPrintCallback( 198 void ExtensionPrinterHandler::WrapPrintCallback(
197 const PrinterHandler::PrintCallback& callback, 199 const PrinterHandler::PrintCallback& callback,
198 bool success, 200 bool success,
199 const std::string& status) { 201 const std::string& status) {
200 callback.Run(success, status); 202 callback.Run(success, status);
201 } 203 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698