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 |