Chromium Code Reviews| Index: components/printing/renderer/print_web_view_helper.cc |
| diff --git a/components/printing/renderer/print_web_view_helper.cc b/components/printing/renderer/print_web_view_helper.cc |
| index d6bf626889141f8afee9816fe208a6c7e9997d78..019e54ddb6c89b57a00e83c0b01e8ad7ed963d1e 100644 |
| --- a/components/printing/renderer/print_web_view_helper.cc |
| +++ b/components/printing/renderer/print_web_view_helper.cc |
| @@ -49,6 +49,17 @@ namespace printing { |
| namespace { |
| +#define STATIC_ASSERT_PP_MATCHING_ENUM(a, b) \ |
| + static_assert(static_cast<int>(a) == static_cast<int>(b), \ |
|
raymes
2015/03/05 03:28:20
nit: 4 spaces?
Lei Zhang
2015/03/05 05:52:45
Done.
|
| + "mismatching enums: " #a) |
| + |
| +// Check blink::WebDuplexMode and printing::DuplexMode are kept in sync. |
| +STATIC_ASSERT_PP_MATCHING_ENUM(blink::WebUnknownDuplexMode, |
| + UNKNOWN_DUPLEX_MODE); |
| +STATIC_ASSERT_PP_MATCHING_ENUM(blink::WebSimplex, SIMPLEX); |
| +STATIC_ASSERT_PP_MATCHING_ENUM(blink::WebLongEdge, LONG_EDGE); |
| +STATIC_ASSERT_PP_MATCHING_ENUM(blink::WebShortEdge, SHORT_EDGE); |
| + |
| enum PrintPreviewHelperEvents { |
| PREVIEW_EVENT_REQUESTED, |
| PREVIEW_EVENT_CACHE_HIT, // Unused |
| @@ -1005,9 +1016,9 @@ void PrintWebViewHelper::OnPrintPreview(const base::DictionaryValue& settings) { |
| // message to browser. |
| if (print_pages_params_->params.is_first_request && |
| !print_preview_context_.IsModifiable()) { |
| - PrintHostMsg_SetOptionsFromDocument_Params params; |
| - SetOptionsFromDocument(params); |
| - Send(new PrintHostMsg_SetOptionsFromDocument(routing_id(), params)); |
| + PrintHostMsg_SetOptionsFromDocument_Params options; |
| + SetOptionsFromPdfDocument(&options); |
| + Send(new PrintHostMsg_SetOptionsFromDocument(routing_id(), options)); |
| } |
| is_print_ready_metafile_sent_ = false; |
| @@ -1432,8 +1443,8 @@ bool PrintWebViewHelper::CalculateNumberOfPages(blink::WebLocalFrame* frame, |
| return true; |
| } |
| -void PrintWebViewHelper::SetOptionsFromDocument( |
| - PrintHostMsg_SetOptionsFromDocument_Params& params) { |
| +void PrintWebViewHelper::SetOptionsFromPdfDocument( |
| + PrintHostMsg_SetOptionsFromDocument_Params* options) { |
| blink::WebLocalFrame* source_frame = print_preview_context_.source_frame(); |
| const blink::WebNode& source_node = print_preview_context_.source_node(); |
| @@ -1443,8 +1454,22 @@ void PrintWebViewHelper::SetOptionsFromDocument( |
| return; |
| } |
| - params.is_scaling_disabled = preset_options.isScalingDisabled; |
| - params.copies = preset_options.copies; |
| + options->is_scaling_disabled = preset_options.isScalingDisabled; |
| + options->copies = preset_options.copies; |
| + |
| + // TODO(thestig) This should be a straight pass-through, but print preview |
| + // does not currently support short-edge printing. |
| + switch (preset_options.duplexMode) { |
| + case blink::WebSimplex: |
| + options->duplex = SIMPLEX; |
| + break; |
| + case blink::WebLongEdge: |
| + options->duplex = LONG_EDGE; |
| + break; |
| + default: |
| + options->duplex = UNKNOWN_DUPLEX_MODE; |
| + break; |
| + } |
| } |
| bool PrintWebViewHelper::UpdatePrintSettings( |