From 9cf9229308bc69e15d3b75e1d71a10b9e6627a93 Mon Sep 17 00:00:00 2001 From: Haojian Wu Date: Sun, 31 May 2015 11:07:26 +0800 Subject: [PATCH] Write PDF file in FILE thread. --- .../printing/print_preview_message_handler.cc | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/chromium_src/chrome/browser/printing/print_preview_message_handler.cc b/chromium_src/chrome/browser/printing/print_preview_message_handler.cc index 6cc47e90876f..c5b59547599b 100644 --- a/chromium_src/chrome/browser/printing/print_preview_message_handler.cc +++ b/chromium_src/chrome/browser/printing/print_preview_message_handler.cc @@ -60,6 +60,15 @@ base::RefCountedBytes* GetDataFromHandle(base::SharedMemoryHandle handle, return base::RefCountedBytes::TakeVector(&data); } +void PrintToPdfCallback(const scoped_refptr& data, + const base::FilePath& save_path) { + printing::PdfMetafileSkia metafile; + metafile.InitFromData(static_cast(data->front()), data->size()); + base::File file(save_path, + base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE); + metafile.SaveTo(&file); +} + } // namespace namespace printing { @@ -116,11 +125,11 @@ void PrintPreviewMessageHandler::OnMetafileReadyForPrinting( file_dialog::ShowSaveDialog(window, "Save As", base::FilePath(FILE_PATH_LITERAL("print.pdf")), file_dialog::Filters(), &save_path); - printing::PdfMetafileSkia metafile; - metafile.InitFromData(static_cast(data->front()), data->size()); - base::File file(save_path, - base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE); - metafile.SaveTo(&file); + BrowserThread::PostTask(BrowserThread::FILE, + FROM_HERE, + base::Bind(&PrintToPdfCallback, + data, + save_path)); } //void PrintPreviewMessageHandler::OnPrintPreviewFailed(int document_cookie) {