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

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

Issue 172115: Pass printing result to the browser.... (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 11 years, 3 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
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "base/gfx/jpeg_codec.h" 8 #include "base/gfx/jpeg_codec.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "chrome/common/render_messages.h" 10 #include "chrome/common/render_messages.h"
(...skipping 11 matching lines...) Expand all
22 using WebKit::WebRect; 22 using WebKit::WebRect;
23 using WebKit::WebScreenInfo; 23 using WebKit::WebScreenInfo;
24 using WebKit::WebString; 24 using WebKit::WebString;
25 using WebKit::WebURLRequest; 25 using WebKit::WebURLRequest;
26 26
27 PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint( 27 PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint(
28 const ViewMsg_Print_Params& print_params, 28 const ViewMsg_Print_Params& print_params,
29 WebFrame* frame, 29 WebFrame* frame,
30 WebView* web_view) 30 WebView* web_view)
31 : frame_(frame), web_view_(web_view), expected_pages_count_(0) { 31 : frame_(frame), web_view_(web_view), expected_pages_count_(0) {
32
33 print_canvas_size_.set_width( 32 print_canvas_size_.set_width(
34 printing::ConvertUnit(print_params.printable_size.width(), 33 printing::ConvertUnit(print_params.printable_size.width(),
35 static_cast<int>(print_params.dpi), 34 static_cast<int>(print_params.dpi),
36 print_params.desired_dpi)); 35 print_params.desired_dpi));
37 36
38 print_canvas_size_.set_height( 37 print_canvas_size_.set_height(
39 printing::ConvertUnit(print_params.printable_size.height(), 38 printing::ConvertUnit(print_params.printable_size.height(),
40 static_cast<int>(print_params.dpi), 39 static_cast<int>(print_params.dpi),
41 print_params.desired_dpi)); 40 print_params.desired_dpi));
42 41
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 url_str.append(html); 106 url_str.append(html);
108 GURL url(url_str); 107 GURL url(url_str);
109 108
110 // When loading is done this will call DidStopLoading that will do the 109 // When loading is done this will call DidStopLoading that will do the
111 // actual printing. 110 // actual printing.
112 print_web_view_->GetMainFrame()->loadRequest(WebURLRequest(url)); 111 print_web_view_->GetMainFrame()->loadRequest(WebURLRequest(url));
113 112
114 return true; 113 return true;
115 } 114 }
116 115
117 void PrintWebViewHelper::PrintPages(const ViewMsg_PrintPages_Params& params,
118 WebFrame* frame) {
119 PrepareFrameAndViewForPrint prep_frame_view(params.params,
120 frame,
121 frame->view());
122 int page_count = prep_frame_view.GetExpectedPageCount();
123
124 Send(new ViewHostMsg_DidGetPrintedPagesCount(routing_id(),
125 params.params.document_cookie,
126 page_count));
127 if (page_count) {
128 ViewMsg_PrintPage_Params page_params;
129 page_params.params = params.params;
130 if (params.pages.empty()) {
131 for (int i = 0; i < page_count; ++i) {
132 page_params.page_number = i;
133 PrintPage(page_params, prep_frame_view.GetPrintCanvasSize(), frame);
134 }
135 } else {
136 for (size_t i = 0; i < params.pages.size(); ++i) {
137 page_params.page_number = params.pages[i];
138 PrintPage(page_params, prep_frame_view.GetPrintCanvasSize(), frame);
139 }
140 }
141 }
142 }
143
144 void PrintWebViewHelper::PrintPageAsJPEG( 116 void PrintWebViewHelper::PrintPageAsJPEG(
145 const ViewMsg_PrintPage_Params& params, 117 const ViewMsg_PrintPage_Params& params,
146 WebFrame* frame, 118 WebFrame* frame,
147 float zoom_factor, 119 float zoom_factor,
148 std::vector<unsigned char>* image_data) { 120 std::vector<unsigned char>* image_data) {
149 PrepareFrameAndViewForPrint prep_frame_view(params.params, 121 PrepareFrameAndViewForPrint prep_frame_view(params.params,
150 frame, 122 frame,
151 frame->view()); 123 frame->view());
152 const gfx::Size& canvas_size(prep_frame_view.GetPrintCanvasSize()); 124 const gfx::Size& canvas_size(prep_frame_view.GetPrintCanvasSize());
153 125
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 WebScreenInfo PrintWebViewHelper::screenInfo() { 174 WebScreenInfo PrintWebViewHelper::screenInfo() {
203 NOTREACHED(); 175 NOTREACHED();
204 return WebScreenInfo(); 176 return WebScreenInfo();
205 } 177 }
206 178
207 void PrintWebViewHelper::DidStopLoading(WebView* webview) { 179 void PrintWebViewHelper::DidStopLoading(WebView* webview) {
208 DCHECK(print_pages_params_.get() != NULL); 180 DCHECK(print_pages_params_.get() != NULL);
209 DCHECK_EQ(webview, print_web_view_.get()); 181 DCHECK_EQ(webview, print_web_view_.get());
210 PrintPages(*print_pages_params_.get(), print_web_view_->GetMainFrame()); 182 PrintPages(*print_pages_params_.get(), print_web_view_->GetMainFrame());
211 } 183 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698