Index: chrome/renderer/printing/print_web_view_helper.cc |
diff --git a/chrome/renderer/printing/print_web_view_helper.cc b/chrome/renderer/printing/print_web_view_helper.cc |
index d9a5cd79ef509c466e68112439e74d7e1de0588e..c41839bbd6e47d46b0ac5e5e81c760f25c496aa0 100644 |
--- a/chrome/renderer/printing/print_web_view_helper.cc |
+++ b/chrome/renderer/printing/print_web_view_helper.cc |
@@ -1106,12 +1106,14 @@ void PrintWebViewHelper::OnPrintNodeUnderContextMenu() { |
PrintNode(render_view()->GetContextMenuNode()); |
} |
-void PrintWebViewHelper::OnInitiatePrintPreview() { |
+void PrintWebViewHelper::OnInitiatePrintPreview(bool selection_only) { |
DCHECK(is_preview_enabled_); |
WebKit::WebFrame* frame; |
if (GetPrintFrame(&frame)) { |
print_preview_context_.InitWithFrame(frame); |
- RequestPrintPreview(PRINT_PREVIEW_USER_INITIATED_ENTIRE_FRAME); |
+ RequestPrintPreview(selection_only ? |
+ PRINT_PREVIEW_USER_INITIATED_SELECTION : |
+ PRINT_PREVIEW_USER_INITIATED_ENTIRE_FRAME); |
} else { |
// This should not happen. Let's add a CHECK here to see how often this |
// gets hit. |
@@ -1577,22 +1579,27 @@ void PrintWebViewHelper::RequestPrintPreview(PrintPreviewRequestType type) { |
const bool is_modifiable = print_preview_context_.IsModifiable(); |
const bool has_selection = print_preview_context_.HasSelection(); |
old_print_pages_params_.reset(); |
+ PrintHostMsg_RequestPrintPreview_Params params; |
+ params.is_modifiable = is_modifiable; |
+ params.has_selection = has_selection; |
switch (type) { |
- case PRINT_PREVIEW_USER_INITIATED_ENTIRE_FRAME: { |
- Send(new PrintHostMsg_RequestPrintPreview(routing_id(), is_modifiable, |
- false, has_selection)); |
- break; |
- } |
- case PRINT_PREVIEW_USER_INITIATED_CONTEXT_NODE: { |
- Send(new PrintHostMsg_RequestPrintPreview(routing_id(), is_modifiable, |
- true, has_selection)); |
- break; |
- } |
case PRINT_PREVIEW_SCRIPTED: { |
IPC::SyncMessage* msg = |
new PrintHostMsg_ScriptedPrintPreview(routing_id(), is_modifiable); |
msg->EnableMessagePumping(); |
Send(msg); |
+ return; |
+ } |
+ case PRINT_PREVIEW_USER_INITIATED_ENTIRE_FRAME: { |
+ break; |
+ } |
+ case PRINT_PREVIEW_USER_INITIATED_SELECTION: { |
+ DCHECK(has_selection); |
+ params.selection_only = has_selection; |
+ break; |
+ } |
+ case PRINT_PREVIEW_USER_INITIATED_CONTEXT_NODE: { |
+ params.webnode_only = true; |
break; |
} |
default: { |
@@ -1600,6 +1607,7 @@ void PrintWebViewHelper::RequestPrintPreview(PrintPreviewRequestType type) { |
return; |
} |
} |
+ Send(new PrintHostMsg_RequestPrintPreview(routing_id(), params)); |
} |
bool PrintWebViewHelper::CheckForCancel() { |