| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/process_util.h" | 9 #include "base/process_util.h" |
| 10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
| 11 #include "chrome/common/render_messages.h" | 11 #include "chrome/common/render_messages.h" |
| 12 #include "chrome/common/render_messages_params.h" | 12 #include "chrome/common/render_messages_params.h" |
| 13 #include "chrome/renderer/render_view.h" | 13 #include "chrome/renderer/render_view.h" |
| 14 #include "grit/generated_resources.h" | 14 #include "grit/generated_resources.h" |
| 15 #include "printing/units.h" | 15 #include "printing/units.h" |
| 16 #include "third_party/WebKit/WebKit/chromium/public/WebConsoleMessage.h" | 16 #include "third_party/WebKit/WebKit/chromium/public/WebConsoleMessage.h" |
| 17 #include "third_party/WebKit/WebKit/chromium/public/WebDocument.h" |
| 18 #include "third_party/WebKit/WebKit/chromium/public/WebElement.h" |
| 17 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" | 19 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" |
| 20 #include "third_party/WebKit/WebKit/chromium/public/WebNode.h" |
| 18 #include "third_party/WebKit/WebKit/chromium/public/WebRect.h" | 21 #include "third_party/WebKit/WebKit/chromium/public/WebRect.h" |
| 19 #include "third_party/WebKit/WebKit/chromium/public/WebScreenInfo.h" | 22 #include "third_party/WebKit/WebKit/chromium/public/WebScreenInfo.h" |
| 20 #include "third_party/WebKit/WebKit/chromium/public/WebSize.h" | 23 #include "third_party/WebKit/WebKit/chromium/public/WebSize.h" |
| 21 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h" | 24 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h" |
| 22 #include "third_party/WebKit/WebKit/chromium/public/WebView.h" | 25 #include "third_party/WebKit/WebKit/chromium/public/WebView.h" |
| 23 #include "webkit/glue/webkit_glue.h" | 26 #include "webkit/glue/webkit_glue.h" |
| 24 | 27 |
| 25 using printing::ConvertPixelsToPoint; | 28 using printing::ConvertPixelsToPoint; |
| 26 using printing::ConvertPixelsToPointDouble; | 29 using printing::ConvertPixelsToPointDouble; |
| 27 using printing::ConvertUnit; | 30 using printing::ConvertUnit; |
| 28 using printing::ConvertUnitDouble; | 31 using printing::ConvertUnitDouble; |
| 29 using WebKit::WebConsoleMessage; | 32 using WebKit::WebConsoleMessage; |
| 30 using WebKit::WebFrame; | 33 using WebKit::WebFrame; |
| 31 using WebKit::WebNode; | 34 using WebKit::WebNode; |
| 32 using WebKit::WebRect; | 35 using WebKit::WebRect; |
| 33 using WebKit::WebSize; | 36 using WebKit::WebSize; |
| 34 using WebKit::WebScreenInfo; | 37 using WebKit::WebScreenInfo; |
| 35 using WebKit::WebString; | 38 using WebKit::WebString; |
| 36 using WebKit::WebURLRequest; | 39 using WebKit::WebURLRequest; |
| 37 using WebKit::WebView; | 40 using WebKit::WebView; |
| 38 | 41 |
| 39 PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint( | 42 PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint( |
| 40 const ViewMsg_Print_Params& print_params, | 43 const ViewMsg_Print_Params& print_params, |
| 41 WebFrame* frame, | 44 WebFrame* frame, |
| 45 WebNode* node, |
| 42 WebView* web_view) | 46 WebView* web_view) |
| 43 : frame_(frame), web_view_(web_view), expected_pages_count_(0), | 47 : frame_(frame), web_view_(web_view), expected_pages_count_(0), |
| 44 use_browser_overlays_(true) { | 48 use_browser_overlays_(true) { |
| 45 int dpi = static_cast<int>(print_params.dpi); | 49 int dpi = static_cast<int>(print_params.dpi); |
| 46 #if defined(OS_MACOSX) | 50 #if defined(OS_MACOSX) |
| 47 // On the Mac, the printable area is in points, don't do any scaling based | 51 // On the Mac, the printable area is in points, don't do any scaling based |
| 48 // on dpi. | 52 // on dpi. |
| 49 dpi = printing::kPointsPerInch; | 53 dpi = printing::kPointsPerInch; |
| 50 #endif // defined(OS_MACOSX) | 54 #endif // defined(OS_MACOSX) |
| 51 print_canvas_size_.set_width( | 55 print_canvas_size_.set_width( |
| (...skipping 10 matching lines...) Expand all Loading... |
| 62 // minimum (default) scaling. | 66 // minimum (default) scaling. |
| 63 // This is important for sites that try to fill the page. | 67 // This is important for sites that try to fill the page. |
| 64 gfx::Size print_layout_size(print_canvas_size_); | 68 gfx::Size print_layout_size(print_canvas_size_); |
| 65 print_layout_size.set_height(static_cast<int>( | 69 print_layout_size.set_height(static_cast<int>( |
| 66 static_cast<double>(print_layout_size.height()) * 1.25)); | 70 static_cast<double>(print_layout_size.height()) * 1.25)); |
| 67 | 71 |
| 68 prev_view_size_ = web_view->size(); | 72 prev_view_size_ = web_view->size(); |
| 69 | 73 |
| 70 web_view->resize(print_layout_size); | 74 web_view->resize(print_layout_size); |
| 71 | 75 |
| 72 #if defined(WEBFRAME_PRINTBEGIN_TAKES_NODE) | 76 WebNode node_to_print; |
| 77 if (node) |
| 78 node_to_print = *node; |
| 73 expected_pages_count_ = frame->printBegin( | 79 expected_pages_count_ = frame->printBegin( |
| 74 print_canvas_size_, WebNode(), static_cast<int>(print_params.dpi), | 80 print_canvas_size_, node_to_print, static_cast<int>(print_params.dpi), |
| 75 &use_browser_overlays_); | 81 &use_browser_overlays_); |
| 76 #else | |
| 77 expected_pages_count_ = frame->printBegin( | |
| 78 print_canvas_size_, static_cast<int>(print_params.dpi), | |
| 79 &use_browser_overlays_); | |
| 80 #endif | |
| 81 } | 82 } |
| 82 | 83 |
| 83 PrepareFrameAndViewForPrint::~PrepareFrameAndViewForPrint() { | 84 PrepareFrameAndViewForPrint::~PrepareFrameAndViewForPrint() { |
| 84 frame_->printEnd(); | 85 frame_->printEnd(); |
| 85 web_view_->resize(prev_view_size_); | 86 web_view_->resize(prev_view_size_); |
| 86 } | 87 } |
| 87 | 88 |
| 88 | 89 |
| 89 PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view) | 90 PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view) |
| 90 : render_view_(render_view), | 91 : render_view_(render_view), |
| 91 print_web_view_(NULL), | 92 print_web_view_(NULL), |
| 92 user_cancelled_scripted_print_count_(0), | 93 user_cancelled_scripted_print_count_(0), |
| 93 is_preview_(false) {} | 94 is_preview_(false) {} |
| 94 | 95 |
| 95 PrintWebViewHelper::~PrintWebViewHelper() {} | 96 PrintWebViewHelper::~PrintWebViewHelper() {} |
| 96 | 97 |
| 97 void PrintWebViewHelper::Print(WebFrame* frame, | 98 void PrintWebViewHelper::PrintFrame(WebFrame* frame, |
| 99 bool script_initiated, |
| 100 bool is_preview) { |
| 101 Print(frame, NULL, script_initiated, is_preview); |
| 102 } |
| 103 |
| 104 void PrintWebViewHelper::PrintNode(WebNode* node, |
| 105 bool script_initiated, |
| 106 bool is_preview) { |
| 107 Print(node->document().frame(), node, script_initiated, is_preview); |
| 108 } |
| 109 |
| 110 void PrintWebViewHelper::Print(WebKit::WebFrame* frame, |
| 111 WebNode* node, |
| 98 bool script_initiated, | 112 bool script_initiated, |
| 99 bool is_preview) { | 113 bool is_preview) { |
| 100 const int kMinSecondsToIgnoreJavascriptInitiatedPrint = 2; | 114 const int kMinSecondsToIgnoreJavascriptInitiatedPrint = 2; |
| 101 const int kMaxSecondsToIgnoreJavascriptInitiatedPrint = 2 * 60; // 2 Minutes. | 115 const int kMaxSecondsToIgnoreJavascriptInitiatedPrint = 2 * 60; // 2 Minutes. |
| 102 | 116 |
| 103 // If still not finished with earlier print request simply ignore. | 117 // If still not finished with earlier print request simply ignore. |
| 104 if (IsPrinting()) | 118 if (IsPrinting()) |
| 105 return; | 119 return; |
| 106 | 120 |
| 107 // Check if there is script repeatedly trying to print and ignore it if too | 121 // Check if there is script repeatedly trying to print and ignore it if too |
| (...skipping 14 matching lines...) Expand all Loading... |
| 122 WebConsoleMessage::LevelWarning, | 136 WebConsoleMessage::LevelWarning, |
| 123 message)); | 137 message)); |
| 124 return; | 138 return; |
| 125 } | 139 } |
| 126 } | 140 } |
| 127 | 141 |
| 128 bool print_cancelled = false; | 142 bool print_cancelled = false; |
| 129 is_preview_ = is_preview; | 143 is_preview_ = is_preview; |
| 130 | 144 |
| 131 // Initialize print settings. | 145 // Initialize print settings. |
| 132 if (!InitPrintSettings(frame)) | 146 if (!InitPrintSettings(frame, node)) |
| 133 return; // Failed to init print page settings. | 147 return; // Failed to init print page settings. |
| 134 | 148 |
| 135 int expected_pages_count = 0; | 149 int expected_pages_count = 0; |
| 136 bool use_browser_overlays = true; | 150 bool use_browser_overlays = true; |
| 137 | 151 |
| 138 // Prepare once to calculate the estimated page count. This must be in | 152 // Prepare once to calculate the estimated page count. This must be in |
| 139 // a scope for itself (see comments on PrepareFrameAndViewForPrint). | 153 // a scope for itself (see comments on PrepareFrameAndViewForPrint). |
| 140 { | 154 { |
| 141 PrepareFrameAndViewForPrint prep_frame_view( | 155 PrepareFrameAndViewForPrint prep_frame_view( |
| 142 (*print_pages_params_).params, frame, frame->view()); | 156 (*print_pages_params_).params, frame, node, frame->view()); |
| 143 expected_pages_count = prep_frame_view.GetExpectedPageCount(); | 157 expected_pages_count = prep_frame_view.GetExpectedPageCount(); |
| 144 if (expected_pages_count) | 158 if (expected_pages_count) |
| 145 use_browser_overlays = prep_frame_view.ShouldUseBrowserOverlays(); | 159 use_browser_overlays = prep_frame_view.ShouldUseBrowserOverlays(); |
| 146 } | 160 } |
| 147 | 161 |
| 148 // Some full screen plugins can say they don't want to print. | 162 // Some full screen plugins can say they don't want to print. |
| 149 if (expected_pages_count) { | 163 if (expected_pages_count) { |
| 150 if (!is_preview_) { | 164 if (!is_preview_) { |
| 151 // Ask the browser to show UI to retrieve the final print settings. | 165 // Ask the browser to show UI to retrieve the final print settings. |
| 152 if (!GetPrintSettingsFromUser(frame, expected_pages_count, | 166 if (!GetPrintSettingsFromUser(frame, expected_pages_count, |
| 153 use_browser_overlays)) { | 167 use_browser_overlays)) { |
| 154 print_cancelled = true; | 168 print_cancelled = true; |
| 155 } | 169 } |
| 156 } | 170 } |
| 157 | 171 |
| 158 // Render Pages for printing. | 172 // Render Pages for printing. |
| 159 if (!print_cancelled) { | 173 if (!print_cancelled) { |
| 160 if (is_preview_) | 174 if (is_preview_) |
| 161 RenderPagesForPreview(frame); | 175 RenderPagesForPreview(frame); |
| 162 else | 176 else |
| 163 RenderPagesForPrint(frame); | 177 RenderPagesForPrint(frame, node); |
| 164 | 178 |
| 165 // Reset cancel counter on first successful print. | 179 // Reset cancel counter on first successful print. |
| 166 user_cancelled_scripted_print_count_ = 0; | 180 user_cancelled_scripted_print_count_ = 0; |
| 167 return; // All went well. | 181 return; // All went well. |
| 168 } else { | 182 } else { |
| 169 if (script_initiated) { | 183 if (script_initiated) { |
| 170 ++user_cancelled_scripted_print_count_; | 184 ++user_cancelled_scripted_print_count_; |
| 171 last_cancelled_script_print_ = base::Time::Now(); | 185 last_cancelled_script_print_ = base::Time::Now(); |
| 172 } | 186 } |
| 173 } | 187 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 | 236 |
| 223 // When loading is done this will call DidStopLoading that will do the | 237 // When loading is done this will call DidStopLoading that will do the |
| 224 // actual printing. | 238 // actual printing. |
| 225 print_web_view_->mainFrame()->loadRequest(WebURLRequest(url)); | 239 print_web_view_->mainFrame()->loadRequest(WebURLRequest(url)); |
| 226 | 240 |
| 227 return true; | 241 return true; |
| 228 } | 242 } |
| 229 | 243 |
| 230 #if defined(OS_MACOSX) || defined(OS_WIN) | 244 #if defined(OS_MACOSX) || defined(OS_WIN) |
| 231 void PrintWebViewHelper::PrintPages(const ViewMsg_PrintPages_Params& params, | 245 void PrintWebViewHelper::PrintPages(const ViewMsg_PrintPages_Params& params, |
| 232 WebFrame* frame) { | 246 WebFrame* frame, |
| 247 WebNode* node) { |
| 233 ViewMsg_Print_Params printParams = params.params; | 248 ViewMsg_Print_Params printParams = params.params; |
| 234 UpdatePrintableSizeInPrintParameters(frame, &printParams); | 249 UpdatePrintableSizeInPrintParameters(frame, node, &printParams); |
| 235 | 250 |
| 236 PrepareFrameAndViewForPrint prep_frame_view(printParams, | 251 PrepareFrameAndViewForPrint prep_frame_view(printParams, |
| 237 frame, | 252 frame, |
| 253 node, |
| 238 frame->view()); | 254 frame->view()); |
| 239 int page_count = prep_frame_view.GetExpectedPageCount(); | 255 int page_count = prep_frame_view.GetExpectedPageCount(); |
| 240 | 256 |
| 241 Send(new ViewHostMsg_DidGetPrintedPagesCount(routing_id(), | 257 Send(new ViewHostMsg_DidGetPrintedPagesCount(routing_id(), |
| 242 printParams.document_cookie, | 258 printParams.document_cookie, |
| 243 page_count)); | 259 page_count)); |
| 244 if (!page_count) | 260 if (!page_count) |
| 245 return; | 261 return; |
| 246 | 262 |
| 247 const gfx::Size& canvas_size = prep_frame_view.GetPrintCanvasSize(); | 263 const gfx::Size& canvas_size = prep_frame_view.GetPrintCanvasSize(); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 266 bool PrintWebViewHelper::Send(IPC::Message* msg) { | 282 bool PrintWebViewHelper::Send(IPC::Message* msg) { |
| 267 return render_view_->Send(msg); | 283 return render_view_->Send(msg); |
| 268 } | 284 } |
| 269 | 285 |
| 270 int32 PrintWebViewHelper::routing_id() { | 286 int32 PrintWebViewHelper::routing_id() { |
| 271 return render_view_->routing_id(); | 287 return render_view_->routing_id(); |
| 272 } | 288 } |
| 273 | 289 |
| 274 void PrintWebViewHelper::didStopLoading() { | 290 void PrintWebViewHelper::didStopLoading() { |
| 275 DCHECK(print_pages_params_.get() != NULL); | 291 DCHECK(print_pages_params_.get() != NULL); |
| 276 PrintPages(*print_pages_params_.get(), print_web_view_->mainFrame()); | 292 PrintPages(*print_pages_params_.get(), print_web_view_->mainFrame(), NULL); |
| 277 } | 293 } |
| 278 | 294 |
| 279 void PrintWebViewHelper::GetPageSizeAndMarginsInPoints( | 295 void PrintWebViewHelper::GetPageSizeAndMarginsInPoints( |
| 280 WebFrame* frame, | 296 WebFrame* frame, |
| 281 int page_index, | 297 int page_index, |
| 282 const ViewMsg_Print_Params& default_params, | 298 const ViewMsg_Print_Params& default_params, |
| 283 double* content_width_in_points, | 299 double* content_width_in_points, |
| 284 double* content_height_in_points, | 300 double* content_height_in_points, |
| 285 double* margin_top_in_points, | 301 double* margin_top_in_points, |
| 286 double* margin_right_in_points, | 302 double* margin_right_in_points, |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 ConvertPixelsToPointDouble(margin_right_in_pixels); | 367 ConvertPixelsToPointDouble(margin_right_in_pixels); |
| 352 if (margin_bottom_in_points) | 368 if (margin_bottom_in_points) |
| 353 *margin_bottom_in_points = | 369 *margin_bottom_in_points = |
| 354 ConvertPixelsToPointDouble(margin_bottom_in_pixels); | 370 ConvertPixelsToPointDouble(margin_bottom_in_pixels); |
| 355 if (margin_left_in_points) | 371 if (margin_left_in_points) |
| 356 *margin_left_in_points = | 372 *margin_left_in_points = |
| 357 ConvertPixelsToPointDouble(margin_left_in_pixels); | 373 ConvertPixelsToPointDouble(margin_left_in_pixels); |
| 358 } | 374 } |
| 359 | 375 |
| 360 void PrintWebViewHelper::UpdatePrintableSizeInPrintParameters( | 376 void PrintWebViewHelper::UpdatePrintableSizeInPrintParameters( |
| 361 WebFrame* frame, ViewMsg_Print_Params* params) { | 377 WebFrame* frame, |
| 378 WebNode* node, |
| 379 ViewMsg_Print_Params* params) { |
| 362 double content_width_in_points; | 380 double content_width_in_points; |
| 363 double content_height_in_points; | 381 double content_height_in_points; |
| 364 double margin_top_in_points; | 382 double margin_top_in_points; |
| 365 double margin_right_in_points; | 383 double margin_right_in_points; |
| 366 double margin_bottom_in_points; | 384 double margin_bottom_in_points; |
| 367 double margin_left_in_points; | 385 double margin_left_in_points; |
| 368 PrepareFrameAndViewForPrint prepare(*params, frame, frame->view()); | 386 PrepareFrameAndViewForPrint prepare(*params, frame, node, frame->view()); |
| 369 PrintWebViewHelper::GetPageSizeAndMarginsInPoints(frame, 0, *params, | 387 PrintWebViewHelper::GetPageSizeAndMarginsInPoints(frame, 0, *params, |
| 370 &content_width_in_points, &content_height_in_points, | 388 &content_width_in_points, &content_height_in_points, |
| 371 &margin_top_in_points, &margin_right_in_points, | 389 &margin_top_in_points, &margin_right_in_points, |
| 372 &margin_bottom_in_points, &margin_left_in_points); | 390 &margin_bottom_in_points, &margin_left_in_points); |
| 373 #if defined(OS_MACOSX) | 391 #if defined(OS_MACOSX) |
| 374 // On the Mac, the printable area is in points, don't do any scaling based | 392 // On the Mac, the printable area is in points, don't do any scaling based |
| 375 // on dpi. | 393 // on dpi. |
| 376 int dpi = printing::kPointsPerInch; | 394 int dpi = printing::kPointsPerInch; |
| 377 #else | 395 #else |
| 378 int dpi = static_cast<int>(params->dpi); | 396 int dpi = static_cast<int>(params->dpi); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 390 static_cast<int>(ConvertUnitDouble(content_height_in_points + | 408 static_cast<int>(ConvertUnitDouble(content_height_in_points + |
| 391 margin_top_in_points + margin_bottom_in_points, | 409 margin_top_in_points + margin_bottom_in_points, |
| 392 printing::kPointsPerInch, dpi))); | 410 printing::kPointsPerInch, dpi))); |
| 393 | 411 |
| 394 params->margin_top = static_cast<int>(ConvertUnitDouble( | 412 params->margin_top = static_cast<int>(ConvertUnitDouble( |
| 395 margin_top_in_points, printing::kPointsPerInch, dpi)); | 413 margin_top_in_points, printing::kPointsPerInch, dpi)); |
| 396 params->margin_left = static_cast<int>(ConvertUnitDouble( | 414 params->margin_left = static_cast<int>(ConvertUnitDouble( |
| 397 margin_left_in_points, printing::kPointsPerInch, dpi)); | 415 margin_left_in_points, printing::kPointsPerInch, dpi)); |
| 398 } | 416 } |
| 399 | 417 |
| 400 bool PrintWebViewHelper::InitPrintSettings(WebFrame* frame) { | 418 bool PrintWebViewHelper::InitPrintSettings(WebFrame* frame, |
| 419 WebNode* node) { |
| 401 ViewMsg_PrintPages_Params settings; | 420 ViewMsg_PrintPages_Params settings; |
| 402 if (GetDefaultPrintSettings(frame, &settings.params)) { | 421 if (GetDefaultPrintSettings(frame, node, &settings.params)) { |
| 403 print_pages_params_.reset(new ViewMsg_PrintPages_Params(settings)); | 422 print_pages_params_.reset(new ViewMsg_PrintPages_Params(settings)); |
| 404 print_pages_params_->pages.clear(); | 423 print_pages_params_->pages.clear(); |
| 405 return true; | 424 return true; |
| 406 } | 425 } |
| 407 return false; | 426 return false; |
| 408 } | 427 } |
| 409 | 428 |
| 410 bool PrintWebViewHelper::GetDefaultPrintSettings( | 429 bool PrintWebViewHelper::GetDefaultPrintSettings( |
| 411 WebFrame* frame, ViewMsg_Print_Params* params) { | 430 WebFrame* frame, |
| 431 WebNode* node, |
| 432 ViewMsg_Print_Params* params) { |
| 412 IPC::SyncMessage* msg = | 433 IPC::SyncMessage* msg = |
| 413 new ViewHostMsg_GetDefaultPrintSettings(routing_id(), params); | 434 new ViewHostMsg_GetDefaultPrintSettings(routing_id(), params); |
| 414 if (!Send(msg)) { | 435 if (!Send(msg)) { |
| 415 NOTREACHED(); | 436 NOTREACHED(); |
| 416 return false; | 437 return false; |
| 417 } | 438 } |
| 418 // Check if the printer returned any settings, if the settings is empty, we | 439 // Check if the printer returned any settings, if the settings is empty, we |
| 419 // can safely assume there are no printer drivers configured. So we safely | 440 // can safely assume there are no printer drivers configured. So we safely |
| 420 // terminate. | 441 // terminate. |
| 421 if (params->IsEmpty()) { | 442 if (params->IsEmpty()) { |
| 422 render_view_->runModalAlertDialog( | 443 render_view_->runModalAlertDialog( |
| 423 frame, | 444 frame, |
| 424 l10n_util::GetStringUTF16(IDS_DEFAULT_PRINTER_NOT_FOUND_WARNING)); | 445 l10n_util::GetStringUTF16(IDS_DEFAULT_PRINTER_NOT_FOUND_WARNING)); |
| 425 return false; | 446 return false; |
| 426 } | 447 } |
| 427 if (!(params->dpi && params->document_cookie)) { | 448 if (!(params->dpi && params->document_cookie)) { |
| 428 // Invalid print page settings. | 449 // Invalid print page settings. |
| 429 NOTREACHED(); | 450 NOTREACHED(); |
| 430 return false; | 451 return false; |
| 431 } | 452 } |
| 432 UpdatePrintableSizeInPrintParameters(frame, params); | 453 UpdatePrintableSizeInPrintParameters(frame, node, params); |
| 433 return true; | 454 return true; |
| 434 } | 455 } |
| 435 | 456 |
| 436 bool PrintWebViewHelper::GetPrintSettingsFromUser(WebFrame* frame, | 457 bool PrintWebViewHelper::GetPrintSettingsFromUser(WebFrame* frame, |
| 437 int expected_pages_count, | 458 int expected_pages_count, |
| 438 bool use_browser_overlays) { | 459 bool use_browser_overlays) { |
| 439 ViewHostMsg_ScriptedPrint_Params params; | 460 ViewHostMsg_ScriptedPrint_Params params; |
| 440 ViewMsg_PrintPages_Params print_settings; | 461 ViewMsg_PrintPages_Params print_settings; |
| 441 | 462 |
| 442 // The routing id is sent across as it is needed to look up the | 463 // The routing id is sent across as it is needed to look up the |
| (...skipping 16 matching lines...) Expand all Loading... |
| 459 if (Send(msg)) { | 480 if (Send(msg)) { |
| 460 print_pages_params_.reset(new ViewMsg_PrintPages_Params(print_settings)); | 481 print_pages_params_.reset(new ViewMsg_PrintPages_Params(print_settings)); |
| 461 } else { | 482 } else { |
| 462 // Send() failed. | 483 // Send() failed. |
| 463 NOTREACHED(); | 484 NOTREACHED(); |
| 464 return false; | 485 return false; |
| 465 } | 486 } |
| 466 return (print_settings.params.dpi && print_settings.params.document_cookie); | 487 return (print_settings.params.dpi && print_settings.params.document_cookie); |
| 467 } | 488 } |
| 468 | 489 |
| 469 void PrintWebViewHelper::RenderPagesForPrint(WebFrame *frame) { | 490 void PrintWebViewHelper::RenderPagesForPrint(WebFrame* frame, |
| 491 WebNode* node) { |
| 470 ViewMsg_PrintPages_Params print_settings = *print_pages_params_; | 492 ViewMsg_PrintPages_Params print_settings = *print_pages_params_; |
| 471 if (print_settings.params.selection_only) { | 493 if (print_settings.params.selection_only) { |
| 472 CopyAndPrint(frame); | 494 CopyAndPrint(frame); |
| 473 } else { | 495 } else { |
| 474 // TODO: Always copy before printing. | 496 // TODO: Always copy before printing. |
| 475 PrintPages(print_settings, frame); | 497 PrintPages(print_settings, frame, node); |
| 476 } | 498 } |
| 477 } | 499 } |
| 478 | 500 |
| 479 void PrintWebViewHelper::RenderPagesForPreview(WebFrame *frame) { | 501 void PrintWebViewHelper::RenderPagesForPreview(WebFrame *frame) { |
| 480 ViewMsg_PrintPages_Params print_settings = *print_pages_params_; | 502 ViewMsg_PrintPages_Params print_settings = *print_pages_params_; |
| 481 ViewHostMsg_DidPreviewDocument_Params print_params; | 503 ViewHostMsg_DidPreviewDocument_Params print_params; |
| 482 CreatePreviewDocument(print_settings, frame, &print_params); | 504 CreatePreviewDocument(print_settings, frame, &print_params); |
| 483 Send(new ViewHostMsg_PagesReadyForPreview(routing_id(), print_params)); | 505 Send(new ViewHostMsg_PagesReadyForPreview(routing_id(), print_params)); |
| 484 } | 506 } |
| 485 | 507 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 507 shared_buf.GiveToProcess(base::GetCurrentProcessHandle(), | 529 shared_buf.GiveToProcess(base::GetCurrentProcessHandle(), |
| 508 shared_mem_handle); | 530 shared_mem_handle); |
| 509 return true; | 531 return true; |
| 510 } | 532 } |
| 511 } | 533 } |
| 512 } | 534 } |
| 513 NOTREACHED(); | 535 NOTREACHED(); |
| 514 return false; | 536 return false; |
| 515 } | 537 } |
| 516 #endif | 538 #endif |
| OLD | NEW |