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

Side by Side Diff: chrome/renderer/print_web_view_helper_linux.cc

Issue 6594121: Revert 76553 - Applying factory pattern (through NativeMetafileFactory class)... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 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 | Annotate | Revision Log
« no previous file with comments | « chrome/renderer/mock_printer.cc ('k') | chrome/renderer/print_web_view_helper_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/renderer/print_web_view_helper.h" 5 #include "chrome/renderer/print_web_view_helper.h"
6 6
7 #include "base/file_descriptor_posix.h" 7 #include "base/file_descriptor_posix.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/scoped_ptr.h"
10 #include "chrome/common/render_messages.h" 9 #include "chrome/common/render_messages.h"
11 #include "chrome/common/render_messages_params.h" 10 #include "chrome/common/render_messages_params.h"
12 #include "printing/native_metafile_factory.h"
13 #include "printing/native_metafile.h" 11 #include "printing/native_metafile.h"
14 #include "skia/ext/vector_canvas.h" 12 #include "skia/ext/vector_canvas.h"
15 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" 13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
16 14
17 #if !defined(OS_CHROMEOS) 15 #if !defined(OS_CHROMEOS)
18 #include "base/process_util.h" 16 #include "base/process_util.h"
19 #endif // !defined(OS_CHROMEOS) 17 #endif // !defined(OS_CHROMEOS)
20 18
21 using WebKit::WebFrame; 19 using WebKit::WebFrame;
22 using WebKit::WebNode; 20 using WebKit::WebNode;
23 21
24 void PrintWebViewHelper::CreatePreviewDocument( 22 void PrintWebViewHelper::CreatePreviewDocument(
25 const ViewMsg_PrintPages_Params& params, WebFrame* frame) { 23 const ViewMsg_PrintPages_Params& params, WebFrame* frame) {
26 // We only can use PDF in the renderer because Cairo needs to create a 24 // We only can use PDF in the renderer because Cairo needs to create a
27 // temporary file for a PostScript surface. 25 // temporary file for a PostScript surface.
28 scoped_ptr<printing::NativeMetafile> metafile( 26 printing::NativeMetafile metafile;
29 printing::NativeMetafileFactory::CreateMetafile());
30 int page_count = 0; 27 int page_count = 0;
31 28
32 if (!RenderPages(params, frame, false, &page_count, metafile.get())) 29 if (!RenderPages(params, frame, false, &page_count, &metafile))
33 return; 30 return;
34 31
35 // Get the size of the resulting metafile. 32 // Get the size of the resulting metafile.
36 uint32 buf_size = metafile->GetDataSize(); 33 uint32 buf_size = metafile.GetDataSize();
37 DCHECK_GT(buf_size, 0u); 34 DCHECK_GT(buf_size, 0u);
38 35
39 ViewHostMsg_DidPreviewDocument_Params preview_params; 36 ViewHostMsg_DidPreviewDocument_Params preview_params;
40 preview_params.document_cookie = params.params.document_cookie; 37 preview_params.document_cookie = params.params.document_cookie;
41 preview_params.expected_pages_count = page_count; 38 preview_params.expected_pages_count = page_count;
42 preview_params.data_size = buf_size; 39 preview_params.data_size = buf_size;
43 40
44 if (!CopyMetafileDataToSharedMem(metafile.get(), 41 if (!CopyMetafileDataToSharedMem(&metafile,
45 &(preview_params.metafile_data_handle))) { 42 &(preview_params.metafile_data_handle))) {
46 preview_params.expected_pages_count = 0; 43 preview_params.expected_pages_count = 0;
47 preview_params.data_size = 0; 44 preview_params.data_size = 0;
48 } 45 }
49 Send(new ViewHostMsg_PagesReadyForPreview(routing_id(), preview_params)); 46 Send(new ViewHostMsg_PagesReadyForPreview(routing_id(), preview_params));
50 } 47 }
51 48
52 void PrintWebViewHelper::PrintPages(const ViewMsg_PrintPages_Params& params, 49 void PrintWebViewHelper::PrintPages(const ViewMsg_PrintPages_Params& params,
53 WebFrame* frame, 50 WebFrame* frame,
54 WebNode* node) { 51 WebNode* node) {
55 // We only can use PDF in the renderer because Cairo needs to create a 52 // We only can use PDF in the renderer because Cairo needs to create a
56 // temporary file for a PostScript surface. 53 // temporary file for a PostScript surface.
57 scoped_ptr<printing::NativeMetafile> metafile( 54 printing::NativeMetafile metafile;
58 printing::NativeMetafileFactory::CreateMetafile());
59 int page_count = 0; 55 int page_count = 0;
60 bool send_expected_page_count = 56 bool send_expected_page_count =
61 #if defined(OS_CHROMEOS) 57 #if defined(OS_CHROMEOS)
62 false; 58 false;
63 #else 59 #else
64 true; 60 true;
65 #endif // defined(OS_CHROMEOS) 61 #endif // defined(OS_CHROMEOS)
66 62
67 if (!RenderPages(params, frame, send_expected_page_count, &page_count, 63 if (!RenderPages(params, frame, send_expected_page_count, &page_count,
68 metafile.get())) { 64 &metafile)) {
69 return; 65 return;
70 } 66 }
71 67
72 // Get the size of the resulting metafile. 68 // Get the size of the resulting metafile.
73 uint32 buf_size = metafile->GetDataSize(); 69 uint32 buf_size = metafile.GetDataSize();
74 DCHECK_GT(buf_size, 0u); 70 DCHECK_GT(buf_size, 0u);
75 71
76 #if defined(OS_CHROMEOS) 72 #if defined(OS_CHROMEOS)
77 int sequence_number = -1; 73 int sequence_number = -1;
78 base::FileDescriptor fd; 74 base::FileDescriptor fd;
79 75
80 // Ask the browser to open a file for us. 76 // Ask the browser to open a file for us.
81 if (!Send(new ViewHostMsg_AllocateTempFileForPrinting(&fd, 77 if (!Send(new ViewHostMsg_AllocateTempFileForPrinting(&fd,
82 &sequence_number))) { 78 &sequence_number))) {
83 return; 79 return;
(...skipping 18 matching lines...) Expand all
102 NOTREACHED() << "AllocateSharedMemoryBuffer returned bad handle"; 98 NOTREACHED() << "AllocateSharedMemoryBuffer returned bad handle";
103 return; 99 return;
104 } 100 }
105 101
106 { 102 {
107 base::SharedMemory shared_buf(shared_mem_handle, false); 103 base::SharedMemory shared_buf(shared_mem_handle, false);
108 if (!shared_buf.Map(buf_size)) { 104 if (!shared_buf.Map(buf_size)) {
109 NOTREACHED() << "Map failed"; 105 NOTREACHED() << "Map failed";
110 return; 106 return;
111 } 107 }
112 metafile->GetData(shared_buf.memory(), buf_size); 108 metafile.GetData(shared_buf.memory(), buf_size);
113 printed_page_params.data_size = buf_size; 109 printed_page_params.data_size = buf_size;
114 shared_buf.GiveToProcess(base::GetCurrentProcessHandle(), 110 shared_buf.GiveToProcess(base::GetCurrentProcessHandle(),
115 &(printed_page_params.metafile_data_handle)); 111 &(printed_page_params.metafile_data_handle));
116 } 112 }
117 113
118 // Send the first page with a valid handle. 114 // Send the first page with a valid handle.
119 printed_page_params.page_number = 0; 115 printed_page_params.page_number = 0;
120 Send(new ViewHostMsg_DidPrintPage(routing_id(), printed_page_params)); 116 Send(new ViewHostMsg_DidPrintPage(routing_id(), printed_page_params));
121 117
122 // Send the rest of the pages with an invalid metafile handle. 118 // Send the rest of the pages with an invalid metafile handle.
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 canvas_size.height())); 217 canvas_size.height()));
222 frame->printPage(params.page_number, canvas->get()); 218 frame->printPage(params.page_number, canvas->get());
223 219
224 // TODO(myhuang): We should handle transformation for paper margins. 220 // TODO(myhuang): We should handle transformation for paper margins.
225 // TODO(myhuang): We should render the header and the footer. 221 // TODO(myhuang): We should render the header and the footer.
226 222
227 // Done printing. Close the device context to retrieve the compiled metafile. 223 // Done printing. Close the device context to retrieve the compiled metafile.
228 if (!metafile->FinishPage()) 224 if (!metafile->FinishPage())
229 NOTREACHED() << "metafile failed"; 225 NOTREACHED() << "metafile failed";
230 } 226 }
OLDNEW
« no previous file with comments | « chrome/renderer/mock_printer.cc ('k') | chrome/renderer/print_web_view_helper_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698