| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/printing/print_preview_message_handler.h" | 5 #include "chrome/browser/printing/print_preview_message_handler.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 g_browser_process->print_job_manager()->queue(); | 42 g_browser_process->print_job_manager()->queue(); |
| 43 scoped_refptr<PrinterQuery> printer_query = | 43 scoped_refptr<PrinterQuery> printer_query = |
| 44 queue->PopPrinterQuery(document_cookie); | 44 queue->PopPrinterQuery(document_cookie); |
| 45 if (printer_query.get()) { | 45 if (printer_query.get()) { |
| 46 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 46 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
| 47 base::Bind(&PrinterQuery::StopWorker, | 47 base::Bind(&PrinterQuery::StopWorker, |
| 48 printer_query)); | 48 printer_query)); |
| 49 } | 49 } |
| 50 } | 50 } |
| 51 | 51 |
| 52 base::RefCountedBytes* GetDataFromHandle(base::SharedMemoryHandle handle, | 52 scoped_refptr<base::RefCountedBytes> GetDataFromHandle( |
| 53 uint32_t data_size) { | 53 base::SharedMemoryHandle handle, |
| 54 uint32_t data_size) { |
| 54 scoped_ptr<base::SharedMemory> shared_buf( | 55 scoped_ptr<base::SharedMemory> shared_buf( |
| 55 new base::SharedMemory(handle, true)); | 56 new base::SharedMemory(handle, true)); |
| 56 if (!shared_buf->Map(data_size)) { | 57 if (!shared_buf->Map(data_size)) { |
| 57 NOTREACHED(); | 58 NOTREACHED(); |
| 58 return nullptr; | 59 return nullptr; |
| 59 } | 60 } |
| 60 | 61 |
| 61 unsigned char* data_begin = static_cast<unsigned char*>(shared_buf->memory()); | 62 unsigned char* data_begin = static_cast<unsigned char*>(shared_buf->memory()); |
| 62 std::vector<unsigned char> data(data_begin, data_begin + data_size); | 63 std::vector<unsigned char> data(data_begin, data_begin + data_size); |
| 63 return base::RefCountedBytes::TakeVector(&data); | 64 return base::RefCountedBytes::TakeVector(&data); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 void PrintPreviewMessageHandler::OnDidPreviewPage( | 118 void PrintPreviewMessageHandler::OnDidPreviewPage( |
| 118 const PrintHostMsg_DidPreviewPage_Params& params) { | 119 const PrintHostMsg_DidPreviewPage_Params& params) { |
| 119 int page_number = params.page_number; | 120 int page_number = params.page_number; |
| 120 if (page_number < FIRST_PAGE_INDEX || !params.data_size) | 121 if (page_number < FIRST_PAGE_INDEX || !params.data_size) |
| 121 return; | 122 return; |
| 122 | 123 |
| 123 PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); | 124 PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); |
| 124 if (!print_preview_ui) | 125 if (!print_preview_ui) |
| 125 return; | 126 return; |
| 126 | 127 |
| 127 base::RefCountedBytes* data_bytes = | 128 scoped_refptr<base::RefCountedBytes> data_bytes = |
| 128 GetDataFromHandle(params.metafile_data_handle, params.data_size); | 129 GetDataFromHandle(params.metafile_data_handle, params.data_size); |
| 129 DCHECK(data_bytes); | 130 DCHECK(data_bytes); |
| 130 | 131 |
| 131 print_preview_ui->SetPrintPreviewDataForIndex(page_number, data_bytes); | 132 print_preview_ui->SetPrintPreviewDataForIndex(page_number, |
| 133 std::move(data_bytes)); |
| 132 print_preview_ui->OnDidPreviewPage(page_number, params.preview_request_id); | 134 print_preview_ui->OnDidPreviewPage(page_number, params.preview_request_id); |
| 133 } | 135 } |
| 134 | 136 |
| 135 void PrintPreviewMessageHandler::OnMetafileReadyForPrinting( | 137 void PrintPreviewMessageHandler::OnMetafileReadyForPrinting( |
| 136 const PrintHostMsg_DidPreviewDocument_Params& params) { | 138 const PrintHostMsg_DidPreviewDocument_Params& params) { |
| 137 // Always try to stop the worker. | 139 // Always try to stop the worker. |
| 138 StopWorker(params.document_cookie); | 140 StopWorker(params.document_cookie); |
| 139 | 141 |
| 140 if (params.expected_pages_count <= 0) { | 142 if (params.expected_pages_count <= 0) { |
| 141 NOTREACHED(); | 143 NOTREACHED(); |
| 142 return; | 144 return; |
| 143 } | 145 } |
| 144 | 146 |
| 145 PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); | 147 PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); |
| 146 if (!print_preview_ui) | 148 if (!print_preview_ui) |
| 147 return; | 149 return; |
| 148 | 150 |
| 149 // TODO(joth): This seems like a good match for using RefCountedStaticMemory | 151 // TODO(joth): This seems like a good match for using RefCountedStaticMemory |
| 150 // to avoid the memory copy, but the SetPrintPreviewData call chain below | 152 // to avoid the memory copy, but the SetPrintPreviewData call chain below |
| 151 // needs updating to accept the RefCountedMemory* base class. | 153 // needs updating to accept the RefCountedMemory* base class. |
| 152 base::RefCountedBytes* data_bytes = | 154 scoped_refptr<base::RefCountedBytes> data_bytes = |
| 153 GetDataFromHandle(params.metafile_data_handle, params.data_size); | 155 GetDataFromHandle(params.metafile_data_handle, params.data_size); |
| 154 if (!data_bytes || !data_bytes->size()) | 156 if (!data_bytes || !data_bytes->size()) |
| 155 return; | 157 return; |
| 156 | 158 |
| 157 print_preview_ui->SetPrintPreviewDataForIndex(COMPLETE_PREVIEW_DOCUMENT_INDEX, | 159 print_preview_ui->SetPrintPreviewDataForIndex(COMPLETE_PREVIEW_DOCUMENT_INDEX, |
| 158 data_bytes); | 160 std::move(data_bytes)); |
| 159 print_preview_ui->OnPreviewDataIsAvailable( | 161 print_preview_ui->OnPreviewDataIsAvailable( |
| 160 params.expected_pages_count, params.preview_request_id); | 162 params.expected_pages_count, params.preview_request_id); |
| 161 } | 163 } |
| 162 | 164 |
| 163 void PrintPreviewMessageHandler::OnPrintPreviewFailed(int document_cookie) { | 165 void PrintPreviewMessageHandler::OnPrintPreviewFailed(int document_cookie) { |
| 164 StopWorker(document_cookie); | 166 StopWorker(document_cookie); |
| 165 | 167 |
| 166 PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); | 168 PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); |
| 167 if (!print_preview_ui) | 169 if (!print_preview_ui) |
| 168 return; | 170 return; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewInvalidPrinterSettings, | 225 IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewInvalidPrinterSettings, |
| 224 OnInvalidPrinterSettings) | 226 OnInvalidPrinterSettings) |
| 225 IPC_MESSAGE_HANDLER(PrintHostMsg_SetOptionsFromDocument, | 227 IPC_MESSAGE_HANDLER(PrintHostMsg_SetOptionsFromDocument, |
| 226 OnSetOptionsFromDocument) | 228 OnSetOptionsFromDocument) |
| 227 IPC_MESSAGE_UNHANDLED(handled = false) | 229 IPC_MESSAGE_UNHANDLED(handled = false) |
| 228 IPC_END_MESSAGE_MAP() | 230 IPC_END_MESSAGE_MAP() |
| 229 return handled; | 231 return handled; |
| 230 } | 232 } |
| 231 | 233 |
| 232 } // namespace printing | 234 } // namespace printing |
| OLD | NEW |