Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Side by Side Diff: content/renderer/pepper/pepper_plugin_instance_impl.cc

Issue 2524143003: Print Preview: Add option to rasterize PDFs and add JPEG compression. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/renderer/pepper/pepper_plugin_instance_impl.h" 5 #include "content/renderer/pepper/pepper_plugin_instance_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bit_cast.h" 10 #include "base/bit_cast.h"
(...skipping 1729 matching lines...) Expand 10 before | Expand all | Expand 10 after
1740 1740
1741 void PepperPluginInstanceImpl::ReportGeometry() { 1741 void PepperPluginInstanceImpl::ReportGeometry() {
1742 // If this call was delayed, we may have transitioned back to fullscreen in 1742 // If this call was delayed, we may have transitioned back to fullscreen in
1743 // the mean time, so only report the geometry if we are actually in normal 1743 // the mean time, so only report the geometry if we are actually in normal
1744 // mode. 1744 // mode.
1745 if (container_ && !fullscreen_container_ && !flash_fullscreen_) 1745 if (container_ && !fullscreen_container_ && !flash_fullscreen_)
1746 container_->reportGeometry(); 1746 container_->reportGeometry();
1747 } 1747 }
1748 1748
1749 bool PepperPluginInstanceImpl::GetPreferredPrintOutputFormat( 1749 bool PepperPluginInstanceImpl::GetPreferredPrintOutputFormat(
1750 PP_PrintOutputFormat_Dev* format) { 1750 PP_PrintOutputFormat_Dev* format, const WebPrintParams& print_params) {
1751 // Keep a reference on the stack. See NOTE above. 1751 // Keep a reference on the stack. See NOTE above.
1752 scoped_refptr<PepperPluginInstanceImpl> ref(this); 1752 scoped_refptr<PepperPluginInstanceImpl> ref(this);
1753 if (!LoadPrintInterface()) 1753 if (!LoadPrintInterface())
1754 return false; 1754 return false;
1755 uint32_t supported_formats = 1755 uint32_t supported_formats =
1756 plugin_print_interface_->QuerySupportedFormats(pp_instance()); 1756 plugin_print_interface_->QuerySupportedFormats(pp_instance());
1757 if (supported_formats & PP_PRINTOUTPUTFORMAT_PDF) { 1757 if ((supported_formats & PP_PRINTOUTPUTFORMAT_PDF) &&
1758 !print_params.rasterizePDF) {
1758 *format = PP_PRINTOUTPUTFORMAT_PDF; 1759 *format = PP_PRINTOUTPUTFORMAT_PDF;
1759 return true; 1760 return true;
1760 } 1761 }
1762 if (supported_formats & PP_PRINTOUTPUTFORMAT_RASTER) {
1763 *format = PP_PRINTOUTPUTFORMAT_RASTER;
1764 return true;
1765 }
1761 return false; 1766 return false;
1762 } 1767 }
1763 1768
1764 bool PepperPluginInstanceImpl::SupportsPrintInterface() { 1769 bool PepperPluginInstanceImpl::SupportsPrintInterface() {
1765 PP_PrintOutputFormat_Dev format; 1770 PP_PrintOutputFormat_Dev format;
1766 return GetPreferredPrintOutputFormat(&format); 1771 WebPrintParams params;
1772 params.rasterizePDF = false;
1773 return GetPreferredPrintOutputFormat(&format, params);
1767 } 1774 }
1768 1775
1769 bool PepperPluginInstanceImpl::IsPrintScalingDisabled() { 1776 bool PepperPluginInstanceImpl::IsPrintScalingDisabled() {
1770 DCHECK(plugin_print_interface_); 1777 DCHECK(plugin_print_interface_);
1771 if (!plugin_print_interface_) 1778 if (!plugin_print_interface_)
1772 return false; 1779 return false;
1773 return plugin_print_interface_->IsScalingDisabled(pp_instance()) == PP_TRUE; 1780 return plugin_print_interface_->IsScalingDisabled(pp_instance()) == PP_TRUE;
1774 } 1781 }
1775 1782
1776 int PepperPluginInstanceImpl::PrintBegin(const WebPrintParams& print_params) { 1783 int PepperPluginInstanceImpl::PrintBegin(const WebPrintParams& print_params) {
1777 // Keep a reference on the stack. See NOTE above. 1784 // Keep a reference on the stack. See NOTE above.
1778 scoped_refptr<PepperPluginInstanceImpl> ref(this); 1785 scoped_refptr<PepperPluginInstanceImpl> ref(this);
1779 PP_PrintOutputFormat_Dev format; 1786 PP_PrintOutputFormat_Dev format;
1780 if (!GetPreferredPrintOutputFormat(&format)) { 1787 if (!GetPreferredPrintOutputFormat(&format, print_params)) {
1781 // PrintBegin should not have been called since SupportsPrintInterface 1788 // PrintBegin should not have been called since SupportsPrintInterface
1782 // would have returned false; 1789 // would have returned false;
1783 NOTREACHED(); 1790 NOTREACHED();
1784 return 0; 1791 return 0;
1785 } 1792 }
1786 int num_pages = 0; 1793 int num_pages = 0;
1787 PP_PrintSettings_Dev print_settings; 1794 PP_PrintSettings_Dev print_settings;
1788 print_settings.printable_area = PP_FromGfxRect(print_params.printableArea); 1795 print_settings.printable_area = PP_FromGfxRect(print_params.printableArea);
1789 print_settings.content_area = PP_FromGfxRect(print_params.printContentArea); 1796 print_settings.content_area = PP_FromGfxRect(print_params.printContentArea);
1790 print_settings.paper_size = PP_FromGfxSize(print_params.paperSize); 1797 print_settings.paper_size = PP_FromGfxSize(print_params.paperSize);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1832 // Keep a reference on the stack. See NOTE above. 1839 // Keep a reference on the stack. See NOTE above.
1833 scoped_refptr<PepperPluginInstanceImpl> ref(this); 1840 scoped_refptr<PepperPluginInstanceImpl> ref(this);
1834 DCHECK(plugin_print_interface_); 1841 DCHECK(plugin_print_interface_);
1835 if (!plugin_print_interface_) 1842 if (!plugin_print_interface_)
1836 return; 1843 return;
1837 PP_Resource print_output = plugin_print_interface_->PrintPages( 1844 PP_Resource print_output = plugin_print_interface_->PrintPages(
1838 pp_instance(), page_ranges, num_ranges); 1845 pp_instance(), page_ranges, num_ranges);
1839 if (!print_output) 1846 if (!print_output)
1840 return; 1847 return;
1841 1848
1842 if (current_print_settings_.format == PP_PRINTOUTPUTFORMAT_PDF) 1849 if (current_print_settings_.format == PP_PRINTOUTPUTFORMAT_PDF ||
1850 current_print_settings_.format == PP_PRINTOUTPUTFORMAT_RASTER)
1843 PrintPDFOutput(print_output, metafile); 1851 PrintPDFOutput(print_output, metafile);
1844 1852
1845 // Now we need to release the print output resource. 1853 // Now we need to release the print output resource.
1846 PluginModule::GetCore()->ReleaseResource(print_output); 1854 PluginModule::GetCore()->ReleaseResource(print_output);
1847 } 1855 }
1848 1856
1849 void PepperPluginInstanceImpl::PrintEnd() { 1857 void PepperPluginInstanceImpl::PrintEnd() {
1850 // Keep a reference on the stack. See NOTE above. 1858 // Keep a reference on the stack. See NOTE above.
1851 scoped_refptr<PepperPluginInstanceImpl> ref(this); 1859 scoped_refptr<PepperPluginInstanceImpl> ref(this);
1852 if (!ranges_.empty()) 1860 if (!ranges_.empty())
(...skipping 1583 matching lines...) Expand 10 before | Expand all | Expand 10 after
3436 const cc::TextureMailbox& mailbox) const { 3444 const cc::TextureMailbox& mailbox) const {
3437 auto it = 3445 auto it =
3438 std::find_if(texture_ref_counts_.begin(), texture_ref_counts_.end(), 3446 std::find_if(texture_ref_counts_.begin(), texture_ref_counts_.end(),
3439 [&mailbox](const TextureMailboxRefCount& ref_count) { 3447 [&mailbox](const TextureMailboxRefCount& ref_count) {
3440 return ref_count.first.mailbox() == mailbox.mailbox(); 3448 return ref_count.first.mailbox() == mailbox.mailbox();
3441 }); 3449 });
3442 return it != texture_ref_counts_.end(); 3450 return it != texture_ref_counts_.end();
3443 } 3451 }
3444 3452
3445 } // namespace content 3453 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698