OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/utility/printing_handler.h" | 5 #include "chrome/utility/printing_handler.h" |
6 | 6 |
7 #include "base/files/file_util.h" | 7 #include "base/files/file_util.h" |
8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
10 #include "base/scoped_native_library.h" | 10 #include "base/scoped_native_library.h" |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
252 PrintingHandler::~PrintingHandler() {} | 252 PrintingHandler::~PrintingHandler() {} |
253 | 253 |
254 // static | 254 // static |
255 void PrintingHandler::PreSandboxStartup() { | 255 void PrintingHandler::PreSandboxStartup() { |
256 g_pdf_lib.Get().Init(); | 256 g_pdf_lib.Get().Init(); |
257 } | 257 } |
258 | 258 |
259 bool PrintingHandler::OnMessageReceived(const IPC::Message& message) { | 259 bool PrintingHandler::OnMessageReceived(const IPC::Message& message) { |
260 bool handled = true; | 260 bool handled = true; |
261 IPC_BEGIN_MESSAGE_MAP(PrintingHandler, message) | 261 IPC_BEGIN_MESSAGE_MAP(PrintingHandler, message) |
262 #if defined(WIN_PDF_METAFILE_FOR_PRINTING) | 262 #if defined(OS_WIN) |
263 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToMetafiles, | 263 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToMetafiles, |
264 OnRenderPDFPagesToMetafile) | 264 OnRenderPDFPagesToMetafile) |
265 #endif | 265 #endif // OS_WIN |
266 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToPWGRaster, | 266 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToPWGRaster, |
267 OnRenderPDFPagesToPWGRaster) | 267 OnRenderPDFPagesToPWGRaster) |
268 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_GetPrinterCapsAndDefaults, | 268 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_GetPrinterCapsAndDefaults, |
269 OnGetPrinterCapsAndDefaults) | 269 OnGetPrinterCapsAndDefaults) |
270 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_GetPrinterSemanticCapsAndDefaults, | 270 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_GetPrinterSemanticCapsAndDefaults, |
271 OnGetPrinterSemanticCapsAndDefaults) | 271 OnGetPrinterSemanticCapsAndDefaults) |
272 IPC_MESSAGE_UNHANDLED(handled = false) | 272 IPC_MESSAGE_UNHANDLED(handled = false) |
273 IPC_END_MESSAGE_MAP() | 273 IPC_END_MESSAGE_MAP() |
274 return handled; | 274 return handled; |
275 } | 275 } |
276 | 276 |
277 #if defined(WIN_PDF_METAFILE_FOR_PRINTING) | 277 #if defined(OS_WIN) |
278 void PrintingHandler::OnRenderPDFPagesToMetafile( | 278 void PrintingHandler::OnRenderPDFPagesToMetafile( |
279 IPC::PlatformFileForTransit pdf_transit, | 279 IPC::PlatformFileForTransit pdf_transit, |
280 const base::FilePath& metafile_path, | 280 const base::FilePath& metafile_path, |
281 const printing::PdfRenderSettings& settings, | 281 const printing::PdfRenderSettings& settings, |
282 const std::vector<printing::PageRange>& page_ranges_const) { | 282 const std::vector<printing::PageRange>& page_ranges_const) { |
283 bool succeeded = false; | 283 bool succeeded = false; |
284 base::File pdf_file = IPC::PlatformFileForTransitToFile(pdf_transit); | 284 base::File pdf_file = IPC::PlatformFileForTransitToFile(pdf_transit); |
285 int highest_rendered_page_number = 0; | 285 int highest_rendered_page_number = 0; |
286 double scale_factor = 1.0; | 286 double scale_factor = 1.0; |
287 std::vector<printing::PageRange> page_ranges = page_ranges_const; | 287 std::vector<printing::PageRange> page_ranges = page_ranges_const; |
288 succeeded = RenderPDFToWinMetafile(pdf_file.Pass(), | 288 succeeded = RenderPDFToWinMetafile(pdf_file.Pass(), |
289 metafile_path, | 289 metafile_path, |
290 settings, | 290 settings, |
291 &page_ranges, | 291 &page_ranges, |
292 &highest_rendered_page_number, | 292 &highest_rendered_page_number, |
293 &scale_factor); | 293 &scale_factor); |
294 if (succeeded) { | 294 if (succeeded) { |
295 // TODO(vitalybuka|scottmg): http://crbug.com/170859. These could | 295 // TODO(vitalybuka|scottmg): http://crbug.com/170859. These could |
296 // potentially be sent as each page is converted so that the spool could | 296 // potentially be sent as each page is converted so that the spool could |
297 // start sooner. | 297 // start sooner. |
298 Send(new ChromeUtilityHostMsg_RenderPDFPagesToMetafiles_Succeeded( | 298 Send(new ChromeUtilityHostMsg_RenderPDFPagesToMetafiles_Succeeded( |
299 page_ranges, scale_factor)); | 299 page_ranges, scale_factor)); |
300 } else { | 300 } else { |
301 Send(new ChromeUtilityHostMsg_RenderPDFPagesToMetafile_Failed()); | 301 Send(new ChromeUtilityHostMsg_RenderPDFPagesToMetafile_Failed()); |
302 } | 302 } |
303 ReleaseProcessIfNeeded(); | 303 ReleaseProcessIfNeeded(); |
304 } | 304 } |
305 #endif | 305 #endif // OS_WIN |
306 | 306 |
307 void PrintingHandler::OnRenderPDFPagesToPWGRaster( | 307 void PrintingHandler::OnRenderPDFPagesToPWGRaster( |
308 IPC::PlatformFileForTransit pdf_transit, | 308 IPC::PlatformFileForTransit pdf_transit, |
309 const printing::PdfRenderSettings& settings, | 309 const printing::PdfRenderSettings& settings, |
310 const printing::PwgRasterSettings& bitmap_settings, | 310 const printing::PwgRasterSettings& bitmap_settings, |
311 IPC::PlatformFileForTransit bitmap_transit) { | 311 IPC::PlatformFileForTransit bitmap_transit) { |
312 base::File pdf = IPC::PlatformFileForTransitToFile(pdf_transit); | 312 base::File pdf = IPC::PlatformFileForTransitToFile(pdf_transit); |
313 base::File bitmap = IPC::PlatformFileForTransitToFile(bitmap_transit); | 313 base::File bitmap = IPC::PlatformFileForTransitToFile(bitmap_transit); |
314 if (RenderPDFPagesToPWGRaster(pdf.Pass(), settings, bitmap_settings, | 314 if (RenderPDFPagesToPWGRaster(pdf.Pass(), settings, bitmap_settings, |
315 bitmap.Pass())) { | 315 bitmap.Pass())) { |
316 Send(new ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Succeeded()); | 316 Send(new ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Succeeded()); |
317 } else { | 317 } else { |
318 Send(new ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Failed()); | 318 Send(new ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Failed()); |
319 } | 319 } |
320 ReleaseProcessIfNeeded(); | 320 ReleaseProcessIfNeeded(); |
321 } | 321 } |
322 | 322 |
323 #if defined(WIN_PDF_METAFILE_FOR_PRINTING) | 323 #if defined(OS_WIN) |
324 bool PrintingHandler::RenderPDFToWinMetafile( | 324 bool PrintingHandler::RenderPDFToWinMetafile( |
325 base::File pdf_file, | 325 base::File pdf_file, |
326 const base::FilePath& metafile_path, | 326 const base::FilePath& metafile_path, |
327 const printing::PdfRenderSettings& settings, | 327 const printing::PdfRenderSettings& settings, |
328 std::vector<printing::PageRange>* page_ranges, | 328 std::vector<printing::PageRange>* page_ranges, |
329 int* highest_rendered_page_number, | 329 int* highest_rendered_page_number, |
330 double* scale_factor) { | 330 double* scale_factor) { |
331 DCHECK(page_ranges); | 331 DCHECK(page_ranges); |
332 *highest_rendered_page_number = -1; | 332 *highest_rendered_page_number = -1; |
333 *scale_factor = 1.0; | 333 *scale_factor = 1.0; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 if (*highest_rendered_page_number < page_number) | 396 if (*highest_rendered_page_number < page_number) |
397 *highest_rendered_page_number = page_number; | 397 *highest_rendered_page_number = page_number; |
398 ret = true; | 398 ret = true; |
399 } | 399 } |
400 metafile.FinishPage(); | 400 metafile.FinishPage(); |
401 metafile.FinishDocument(); | 401 metafile.FinishDocument(); |
402 } | 402 } |
403 } | 403 } |
404 return ret; | 404 return ret; |
405 } | 405 } |
406 #endif // defined(WIN_PDF_METAFILE_FOR_PRINTING) | 406 #endif // OS_WIN |
407 | 407 |
408 bool PrintingHandler::RenderPDFPagesToPWGRaster( | 408 bool PrintingHandler::RenderPDFPagesToPWGRaster( |
409 base::File pdf_file, | 409 base::File pdf_file, |
410 const printing::PdfRenderSettings& settings, | 410 const printing::PdfRenderSettings& settings, |
411 const printing::PwgRasterSettings& bitmap_settings, | 411 const printing::PwgRasterSettings& bitmap_settings, |
412 base::File bitmap_file) { | 412 base::File bitmap_file) { |
413 bool autoupdate = true; | 413 bool autoupdate = true; |
414 if (!g_pdf_lib.Get().IsValid()) | 414 if (!g_pdf_lib.Get().IsValid()) |
415 return false; | 415 return false; |
416 | 416 |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
527 if (print_backend->GetPrinterSemanticCapsAndDefaults(printer_name, | 527 if (print_backend->GetPrinterSemanticCapsAndDefaults(printer_name, |
528 &printer_info)) { | 528 &printer_info)) { |
529 Send(new ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Succeeded( | 529 Send(new ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Succeeded( |
530 printer_name, printer_info)); | 530 printer_name, printer_info)); |
531 } else { | 531 } else { |
532 Send(new ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Failed( | 532 Send(new ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Failed( |
533 printer_name)); | 533 printer_name)); |
534 } | 534 } |
535 ReleaseProcessIfNeeded(); | 535 ReleaseProcessIfNeeded(); |
536 } | 536 } |
OLD | NEW |