Chromium Code Reviews| Index: content/renderer/pepper/pepper_plugin_instance_impl.cc |
| diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.cc b/content/renderer/pepper/pepper_plugin_instance_impl.cc |
| index 367fa644a0a51ab6ae18f33ae221eaa7601ac5db..a7b5dca930b2f7dd63835f97833d74ce2e964735 100644 |
| --- a/content/renderer/pepper/pepper_plugin_instance_impl.cc |
| +++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc |
| @@ -94,6 +94,7 @@ |
| #include "ppapi/thunk/enter.h" |
| #include "ppapi/thunk/ppb_buffer_api.h" |
| #include "printing/features/features.h" |
| +#include "printing/metafile_skia_wrapper.h" |
|
Lei Zhang
2016/11/18 02:25:53
BTW, this is already on line 135.
|
| #include "skia/ext/platform_canvas.h" |
| #include "third_party/WebKit/public/platform/URLConversion.h" |
| #include "third_party/WebKit/public/platform/WebCursorInfo.h" |
| @@ -1798,7 +1799,7 @@ int PepperPluginInstanceImpl::PrintBegin(const WebPrintParams& print_params) { |
| if (!num_pages) |
| return 0; |
| current_print_settings_ = print_settings; |
| - canvas_ = nullptr; |
| + metafile_wrapper_.reset(); |
|
bbudge
2016/11/17 22:37:00
Would a DCHECK(!metafile_wrapper_) make sense here
|
| ranges_.clear(); |
| return num_pages; |
| } |
| @@ -1810,16 +1811,18 @@ void PepperPluginInstanceImpl::PrintPage(int page_number, |
| PP_PrintPageNumberRange_Dev page_range; |
| page_range.first_page_number = page_range.last_page_number = page_number; |
| // The canvas only has a metafile on it for print preview. |
| - bool save_for_later = |
| - (printing::MetafileSkiaWrapper::GetMetafileFromCanvas(*canvas) != NULL); |
| + sk_sp<printing::MetafileSkiaWrapper> wrapper = |
| + printing::MetafileSkiaWrapper::RefFromCanvas(*canvas); |
| + bool save_for_later = wrapper && wrapper->getMetafile(); |
| #if defined(OS_MACOSX) |
| save_for_later = save_for_later && skia::IsPreviewMetafile(*canvas); |
| #endif // defined(OS_MACOSX) |
| + |
| if (save_for_later) { |
| ranges_.push_back(page_range); |
| - canvas_ = canvas; |
| + metafile_wrapper_ = wrapper; |
| } else { |
| - PrintPageHelper(&page_range, 1, canvas); |
| + PrintPageHelper(&page_range, 1, wrapper.get()); |
| } |
| #endif |
| } |
| @@ -1827,7 +1830,7 @@ void PepperPluginInstanceImpl::PrintPage(int page_number, |
| void PepperPluginInstanceImpl::PrintPageHelper( |
| PP_PrintPageNumberRange_Dev* page_ranges, |
| int num_ranges, |
| - blink::WebCanvas* canvas) { |
| + printing::MetafileSkiaWrapper* wrapper) { |
| // Keep a reference on the stack. See NOTE above. |
| scoped_refptr<PepperPluginInstanceImpl> ref(this); |
| DCHECK(plugin_print_interface_); |
| @@ -1839,7 +1842,7 @@ void PepperPluginInstanceImpl::PrintPageHelper( |
| return; |
| if (current_print_settings_.format == PP_PRINTOUTPUTFORMAT_PDF) |
| - PrintPDFOutput(print_output, canvas); |
| + PrintPDFOutput(print_output, wrapper); |
| // Now we need to release the print output resource. |
| PluginModule::GetCore()->ReleaseResource(print_output); |
| @@ -1849,8 +1852,9 @@ void PepperPluginInstanceImpl::PrintEnd() { |
| // Keep a reference on the stack. See NOTE above. |
| scoped_refptr<PepperPluginInstanceImpl> ref(this); |
| if (!ranges_.empty()) |
|
Lei Zhang
2016/11/18 01:53:37
nit: needs curly braces now.
|
| - PrintPageHelper(&(ranges_.front()), ranges_.size(), canvas_); |
| - canvas_ = nullptr; |
| + PrintPageHelper(&(ranges_.front()), ranges_.size(), |
| + metafile_wrapper_.get()); |
| + metafile_wrapper_.reset(); |
| ranges_.clear(); |
| DCHECK(plugin_print_interface_); |
| @@ -2017,8 +2021,9 @@ bool PepperPluginInstanceImpl::IsViewAccelerated() { |
| return view->isAcceleratedCompositingActive(); |
| } |
| -bool PepperPluginInstanceImpl::PrintPDFOutput(PP_Resource print_output, |
| - blink::WebCanvas* canvas) { |
| +bool PepperPluginInstanceImpl::PrintPDFOutput( |
| + PP_Resource print_output, |
| + printing::MetafileSkiaWrapper* wrapper) { |
| #if BUILDFLAG(ENABLE_PRINTING) |
| ppapi::thunk::EnterResourceNoLock<PPB_Buffer_API> enter(print_output, true); |
| if (enter.failed()) |
| @@ -2031,7 +2036,7 @@ bool PepperPluginInstanceImpl::PrintPDFOutput(PP_Resource print_output, |
| } |
| printing::PdfMetafileSkia* metafile = |
| - printing::MetafileSkiaWrapper::GetMetafileFromCanvas(*canvas); |
| + wrapper ? wrapper->getMetafile() : nullptr; |
| if (metafile) |
|
bbudge
2016/11/17 22:37:00
How about:
if (wrapper) {
printing::PdfMetafileS
|
| return metafile->InitFromData(mapper.data(), mapper.size()); |