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

Side by Side Diff: chrome/browser/printing/print_preview_message_handler.cc

Issue 1803263002: base: Make RefCountedBytes::TakeVector return ref ptr instead of raw ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 (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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/printing/print_preview_data_service.cc ('k') | chrome/browser/themes/browser_theme_pack.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698