diff options
author | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-16 17:59:02 +0000 |
---|---|---|
committer | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-16 17:59:02 +0000 |
commit | a965432b5ff20ab56971ece3c1a5533b9f25061d (patch) | |
tree | b81d81fb910ce64c92fe8e6d0dd21f42d4f5ab5c | |
parent | 3de391e83b7685f135807f41e798afac1fb555ff (diff) | |
download | chromium_src-a965432b5ff20ab56971ece3c1a5533b9f25061d.zip chromium_src-a965432b5ff20ab56971ece3c1a5533b9f25061d.tar.gz chromium_src-a965432b5ff20ab56971ece3c1a5533b9f25061d.tar.bz2 |
[Print Preview] Modified PP_PrintSettings_Dev interface to support auto fit to page functionality.
BUG=85132
TEST=none
Review URL: https://chromiumcodereview.appspot.com/10083059
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@137453 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ppapi/api/dev/ppp_printing_dev.idl | 14 | ||||
-rw-r--r-- | ppapi/c/dev/ppp_printing_dev.h | 22 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppapi_plugin_instance.cc | 29 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppapi_plugin_instance.h | 3 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppapi_webplugin_impl.cc | 21 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppapi_webplugin_impl.h | 9 |
6 files changed, 79 insertions, 19 deletions
diff --git a/ppapi/api/dev/ppp_printing_dev.idl b/ppapi/api/dev/ppp_printing_dev.idl index 74f5f6a..d89916e 100644 --- a/ppapi/api/dev/ppp_printing_dev.idl +++ b/ppapi/api/dev/ppp_printing_dev.idl @@ -8,7 +8,7 @@ */ label Chrome { - M14 = 0.5 + M21 = 0.6 }; [assert_size(4)] @@ -27,12 +27,22 @@ enum PP_PrintOutputFormat_Dev { PP_PRINTOUTPUTFORMAT_EMF = 1u << 3 }; -[assert_size(32)] +[assert_size(4)] +enum PP_PrintScalingOption_Dev { + PP_PRINTSCALINGOPTION_NONE = 0, + PP_PRINTSCALINGOPTION_FIT_TO_PRINTABLE_AREA = 1, + PP_PRINTSCALINGOPTION_SOURCE_SIZE = 2 +}; + +[assert_size(60)] struct PP_PrintSettings_Dev { /** This is the size of the printable area in points (1/72 of an inch) */ PP_Rect printable_area; + PP_Rect content_area; + PP_Size paper_size; int32_t dpi; PP_PrintOrientation_Dev orientation; + PP_PrintScalingOption_Dev print_scaling_option; PP_Bool grayscale; /** Note that Chrome currently only supports PDF printing. */ PP_PrintOutputFormat_Dev format; diff --git a/ppapi/c/dev/ppp_printing_dev.h b/ppapi/c/dev/ppp_printing_dev.h index b600358..5da2df8 100644 --- a/ppapi/c/dev/ppp_printing_dev.h +++ b/ppapi/c/dev/ppp_printing_dev.h @@ -3,7 +3,7 @@ * found in the LICENSE file. */ -/* From dev/ppp_printing_dev.idl modified Tue Apr 17 20:28:30 2012. */ +/* From dev/ppp_printing_dev.idl modified Tue May 15 15:17:01 2012. */ #ifndef PPAPI_C_DEV_PPP_PRINTING_DEV_H_ #define PPAPI_C_DEV_PPP_PRINTING_DEV_H_ @@ -17,8 +17,8 @@ #include "ppapi/c/pp_size.h" #include "ppapi/c/pp_stdint.h" -#define PPP_PRINTING_DEV_INTERFACE_0_5 "PPP_Printing(Dev);0.5" -#define PPP_PRINTING_DEV_INTERFACE PPP_PRINTING_DEV_INTERFACE_0_5 +#define PPP_PRINTING_DEV_INTERFACE_0_6 "PPP_Printing(Dev);0.6" +#define PPP_PRINTING_DEV_INTERFACE PPP_PRINTING_DEV_INTERFACE_0_6 /** * @file @@ -45,6 +45,13 @@ typedef enum { PP_PRINTOUTPUTFORMAT_EMF = 1u << 3 } PP_PrintOutputFormat_Dev; PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_PrintOutputFormat_Dev, 4); + +typedef enum { + PP_PRINTSCALINGOPTION_NONE = 0, + PP_PRINTSCALINGOPTION_FIT_TO_PRINTABLE_AREA = 1, + PP_PRINTSCALINGOPTION_SOURCE_SIZE = 2 +} PP_PrintScalingOption_Dev; +PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_PrintScalingOption_Dev, 4); /** * @} */ @@ -56,13 +63,16 @@ PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_PrintOutputFormat_Dev, 4); struct PP_PrintSettings_Dev { /** This is the size of the printable area in points (1/72 of an inch) */ struct PP_Rect printable_area; + struct PP_Rect content_area; + struct PP_Size paper_size; int32_t dpi; PP_PrintOrientation_Dev orientation; + PP_PrintScalingOption_Dev print_scaling_option; PP_Bool grayscale; /** Note that Chrome currently only supports PDF printing. */ PP_PrintOutputFormat_Dev format; }; -PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_PrintSettings_Dev, 32); +PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_PrintSettings_Dev, 60); /** * Specifies a contiguous range of page numbers to be printed. @@ -81,7 +91,7 @@ PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_PrintPageNumberRange_Dev, 8); * @addtogroup Interfaces * @{ */ -struct PPP_Printing_Dev_0_5 { +struct PPP_Printing_Dev_0_6 { /** * Returns a bit field representing the supported print output formats. For * example, if only PDF and PostScript are supported, @@ -115,7 +125,7 @@ struct PPP_Printing_Dev_0_5 { PP_Bool (*IsScalingDisabled)(PP_Instance instance); }; -typedef struct PPP_Printing_Dev_0_5 PPP_Printing_Dev; +typedef struct PPP_Printing_Dev_0_6 PPP_Printing_Dev; /** * @} */ diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.cc b/webkit/plugins/ppapi/ppapi_plugin_instance.cc index 4bf6475..390f8dc 100644 --- a/webkit/plugins/ppapi/ppapi_plugin_instance.cc +++ b/webkit/plugins/ppapi/ppapi_plugin_instance.cc @@ -50,6 +50,8 @@ #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebGamepads.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebPrintParams.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebPrintScalingOption.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebScopedUserGesture.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" @@ -120,6 +122,8 @@ using WebKit::WebFrame; using WebKit::WebInputEvent; using WebKit::WebPlugin; using WebKit::WebPluginContainer; +using WebKit::WebPrintParams; +using WebKit::WebPrintScalingOption; using WebKit::WebScopedUserGesture; using WebKit::WebString; using WebKit::WebURLRequest; @@ -180,6 +184,11 @@ const ui::TextInputType kPluginDefaultTextInputType = ui::TEXT_INPUT_TYPE_TEXT; == static_cast<int>(np_name), \ mismatching_enums) +#define COMPILE_ASSERT_PRINT_SCALING_MATCHING_ENUM(webkit_name, pp_name) \ + COMPILE_ASSERT(static_cast<int>(webkit_name) \ + == static_cast<int>(pp_name), \ + mismatching_enums) + // <embed>/<object> attributes. const char kWidth[] = "width"; const char kHeight[] = "height"; @@ -249,6 +258,14 @@ COMPILE_ASSERT_MATCHING_ENUM(TypeGrabbing, PP_MOUSECURSOR_TYPE_GRABBING); // Do not assert WebCursorInfo::TypeCustom == PP_CURSORTYPE_CUSTOM; // PP_CURSORTYPE_CUSTOM is pinned to allow new cursor types. +COMPILE_ASSERT_PRINT_SCALING_MATCHING_ENUM(WebKit::WebPrintScalingOptionNone, + PP_PRINTSCALINGOPTION_NONE); +COMPILE_ASSERT_PRINT_SCALING_MATCHING_ENUM( + WebKit::WebPrintScalingOptionFitToPrintableArea, + PP_PRINTSCALINGOPTION_FIT_TO_PRINTABLE_AREA); +COMPILE_ASSERT_PRINT_SCALING_MATCHING_ENUM( + WebKit::WebPrintScalingOptionSourceSize, PP_PRINTSCALINGOPTION_SOURCE_SIZE); + // Sets |*security_origin| to be the WebKit security origin associated with the // document containing the given plugin instance. On success, returns true. If // the instance is invalid, returns false and |*security_origin| will be @@ -1118,8 +1135,7 @@ bool PluginInstance::IsPrintScalingDisabled() { return plugin_print_interface_->IsScalingDisabled(pp_instance()) == PP_TRUE; } -int PluginInstance::PrintBegin(const gfx::Rect& printable_area, - int printer_dpi) { +int PluginInstance::PrintBegin(const WebPrintParams& print_params) { // Keep a reference on the stack. See NOTE above. scoped_refptr<PluginInstance> ref(this); PP_PrintOutputFormat_Dev format; @@ -1129,13 +1145,16 @@ int PluginInstance::PrintBegin(const gfx::Rect& printable_area, NOTREACHED(); return 0; } - int num_pages = 0; PP_PrintSettings_Dev print_settings; - print_settings.printable_area = PP_FromGfxRect(printable_area); - print_settings.dpi = printer_dpi; + print_settings.printable_area = PP_FromGfxRect(print_params.printableArea); + print_settings.content_area = PP_FromGfxRect(print_params.printContentArea); + print_settings.paper_size = PP_FromGfxSize(print_params.paperSize); + print_settings.dpi = print_params.printerDPI; print_settings.orientation = PP_PRINTORIENTATION_NORMAL; print_settings.grayscale = PP_FALSE; + print_settings.print_scaling_option = static_cast<PP_PrintScalingOption_Dev>( + print_params.printScalingOption); print_settings.format = format; num_pages = plugin_print_interface_->Begin(pp_instance(), &print_settings); diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.h b/webkit/plugins/ppapi/ppapi_plugin_instance.h index e05ca63..63b742f 100644 --- a/webkit/plugins/ppapi/ppapi_plugin_instance.h +++ b/webkit/plugins/ppapi/ppapi_plugin_instance.h @@ -60,6 +60,7 @@ class WebMouseEvent; class WebPluginContainer; struct WebCompositionUnderline; struct WebCursorInfo; +struct WebPrintParams; } namespace ppapi { @@ -227,7 +228,7 @@ class WEBKIT_PLUGINS_EXPORT PluginInstance : bool SupportsPrintInterface(); bool IsPrintScalingDisabled(); - int PrintBegin(const gfx::Rect& printable_area, int printer_dpi); + int PrintBegin(const WebKit::WebPrintParams& print_params); bool PrintPage(int page_number, WebKit::WebCanvas* canvas); void PrintEnd(); diff --git a/webkit/plugins/ppapi/ppapi_webplugin_impl.cc b/webkit/plugins/ppapi/ppapi_webplugin_impl.cc index 1e2327a..1641a71 100644 --- a/webkit/plugins/ppapi/ppapi_webplugin_impl.cc +++ b/webkit/plugins/ppapi/ppapi_webplugin_impl.cc @@ -16,8 +16,11 @@ #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginParams.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebPrintParams.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebPrintScalingOption.h" #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebPoint.h" #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebRect.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSize.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" #include "webkit/plugins/ppapi/message_channel.h" #include "webkit/plugins/ppapi/npobject_var.h" @@ -31,7 +34,9 @@ using WebKit::WebPlugin; using WebKit::WebPluginContainer; using WebKit::WebPluginParams; using WebKit::WebPoint; +using WebKit::WebPrintParams; using WebKit::WebRect; +using WebKit::WebSize; using WebKit::WebString; using WebKit::WebURL; using WebKit::WebVector; @@ -264,9 +269,19 @@ bool WebPluginImpl::isPrintScalingDisabled() { return instance_->IsPrintScalingDisabled(); } -int WebPluginImpl::printBegin(const WebKit::WebRect& printable_area, - int printer_dpi) { - return instance_->PrintBegin(printable_area, printer_dpi); +// TODO(kmadhusu): This is a temporary interface to avoid the compile errors. +// Remove this function after fixing crbug.com/85132. +int WebPluginImpl::printBegin(const WebRect& content_area, int printer_dpi) { + WebRect printable_area(content_area); + WebSize paper_size(content_area.width, content_area.height); + WebPrintParams print_params (content_area, printable_area, paper_size, + printer_dpi, + WebKit::WebPrintScalingOptionSourceSize); + return printBegin(print_params); +} + +int WebPluginImpl::printBegin(const WebPrintParams& print_params) { + return instance_->PrintBegin(print_params); } bool WebPluginImpl::printPage(int page_number, diff --git a/webkit/plugins/ppapi/ppapi_webplugin_impl.h b/webkit/plugins/ppapi/ppapi_webplugin_impl.h index 6f99ab9..16a62e9 100644 --- a/webkit/plugins/ppapi/ppapi_webplugin_impl.h +++ b/webkit/plugins/ppapi/ppapi_webplugin_impl.h @@ -18,6 +18,7 @@ namespace WebKit { struct WebPluginParams; +struct WebPrintParams; } namespace webkit { @@ -75,8 +76,12 @@ class WebPluginImpl : public WebKit::WebPlugin { virtual void stopFind(); virtual bool supportsPaginatedPrint() OVERRIDE; virtual bool isPrintScalingDisabled() OVERRIDE; - virtual int printBegin(const WebKit::WebRect& printable_area, - int printer_dpi) OVERRIDE; + + // TODO(kmadhusu): Remove this function after fixing crbug.com/85132 and add + // OVERRIDE keyword to the overloaded function. + virtual int printBegin(const WebKit::WebRect& content_area, + int printer_dpi); + virtual int printBegin(const WebKit::WebPrintParams& print_params); virtual bool printPage(int page_number, WebKit::WebCanvas* canvas) OVERRIDE; virtual void printEnd() OVERRIDE; |