| 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() {
 | 
| 
 |