summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-16 17:59:02 +0000
committerkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-16 17:59:02 +0000
commita965432b5ff20ab56971ece3c1a5533b9f25061d (patch)
treeb81d81fb910ce64c92fe8e6d0dd21f42d4f5ab5c
parent3de391e83b7685f135807f41e798afac1fb555ff (diff)
downloadchromium_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.idl14
-rw-r--r--ppapi/c/dev/ppp_printing_dev.h22
-rw-r--r--webkit/plugins/ppapi/ppapi_plugin_instance.cc29
-rw-r--r--webkit/plugins/ppapi/ppapi_plugin_instance.h3
-rw-r--r--webkit/plugins/ppapi/ppapi_webplugin_impl.cc21
-rw-r--r--webkit/plugins/ppapi/ppapi_webplugin_impl.h9
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;