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

Side by Side Diff: webkit/plugins/ppapi/ppapi_plugin_instance.cc

Issue 10083059: [Print Preview] Modified PP_PrintSettings_Dev interface to support auto fit to page functionality. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed review comments Created 8 years, 8 months 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 | Annotate | Revision Log
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 "webkit/plugins/ppapi/ppapi_plugin_instance.h" 5 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/linked_ptr.h" 10 #include "base/memory/linked_ptr.h"
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 using ppapi::ViewData; 114 using ppapi::ViewData;
115 using WebKit::WebBindings; 115 using WebKit::WebBindings;
116 using WebKit::WebCanvas; 116 using WebKit::WebCanvas;
117 using WebKit::WebCursorInfo; 117 using WebKit::WebCursorInfo;
118 using WebKit::WebDocument; 118 using WebKit::WebDocument;
119 using WebKit::WebElement; 119 using WebKit::WebElement;
120 using WebKit::WebFrame; 120 using WebKit::WebFrame;
121 using WebKit::WebInputEvent; 121 using WebKit::WebInputEvent;
122 using WebKit::WebPlugin; 122 using WebKit::WebPlugin;
123 using WebKit::WebPluginContainer; 123 using WebKit::WebPluginContainer;
124 using WebKit::WebPrintScalingOption;
124 using WebKit::WebScopedUserGesture; 125 using WebKit::WebScopedUserGesture;
125 using WebKit::WebString; 126 using WebKit::WebString;
126 using WebKit::WebURLRequest; 127 using WebKit::WebURLRequest;
127 using WebKit::WebView; 128 using WebKit::WebView;
128 129
129 namespace webkit { 130 namespace webkit {
130 namespace ppapi { 131 namespace ppapi {
131 132
132 #if defined(OS_WIN) 133 #if defined(OS_WIN)
133 // Exported by pdf.dll 134 // Exported by pdf.dll
(...skipping 22 matching lines...) Expand all
156 // unaware plugins (e.g., PPAPI Flash or PDF plugin for M16). 157 // unaware plugins (e.g., PPAPI Flash or PDF plugin for M16).
157 // Plugins need to explicitly opt out the text input mode if they know 158 // Plugins need to explicitly opt out the text input mode if they know
158 // that they don't accept texts. 159 // that they don't accept texts.
159 const ui::TextInputType kPluginDefaultTextInputType = ui::TEXT_INPUT_TYPE_TEXT; 160 const ui::TextInputType kPluginDefaultTextInputType = ui::TEXT_INPUT_TYPE_TEXT;
160 161
161 #define COMPILE_ASSERT_MATCHING_ENUM(webkit_name, np_name) \ 162 #define COMPILE_ASSERT_MATCHING_ENUM(webkit_name, np_name) \
162 COMPILE_ASSERT(static_cast<int>(WebCursorInfo::webkit_name) \ 163 COMPILE_ASSERT(static_cast<int>(WebCursorInfo::webkit_name) \
163 == static_cast<int>(np_name), \ 164 == static_cast<int>(np_name), \
164 mismatching_enums) 165 mismatching_enums)
165 166
167 #define COMPILE_ASSERT_PRINT_SCALING_MATCHING_ENUM(webkit_name, pp_name) \
168 COMPILE_ASSERT(static_cast<int>(webkit_name) \
169 == static_cast<int>(pp_name), \
170 mismatching_enums)
171
166 // <embed>/<object> attributes. 172 // <embed>/<object> attributes.
167 const char kWidth[] = "width"; 173 const char kWidth[] = "width";
168 const char kHeight[] = "height"; 174 const char kHeight[] = "height";
169 const char kBorder[] = "border"; // According to w3c, deprecated. 175 const char kBorder[] = "border"; // According to w3c, deprecated.
170 const char kStyle[] = "style"; 176 const char kStyle[] = "style";
171 177
172 COMPILE_ASSERT_MATCHING_ENUM(TypePointer, PP_MOUSECURSOR_TYPE_POINTER); 178 COMPILE_ASSERT_MATCHING_ENUM(TypePointer, PP_MOUSECURSOR_TYPE_POINTER);
173 COMPILE_ASSERT_MATCHING_ENUM(TypeCross, PP_MOUSECURSOR_TYPE_CROSS); 179 COMPILE_ASSERT_MATCHING_ENUM(TypeCross, PP_MOUSECURSOR_TYPE_CROSS);
174 COMPILE_ASSERT_MATCHING_ENUM(TypeHand, PP_MOUSECURSOR_TYPE_HAND); 180 COMPILE_ASSERT_MATCHING_ENUM(TypeHand, PP_MOUSECURSOR_TYPE_HAND);
175 COMPILE_ASSERT_MATCHING_ENUM(TypeIBeam, PP_MOUSECURSOR_TYPE_IBEAM); 181 COMPILE_ASSERT_MATCHING_ENUM(TypeIBeam, PP_MOUSECURSOR_TYPE_IBEAM);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 COMPILE_ASSERT_MATCHING_ENUM(TypeCopy, PP_MOUSECURSOR_TYPE_COPY); 231 COMPILE_ASSERT_MATCHING_ENUM(TypeCopy, PP_MOUSECURSOR_TYPE_COPY);
226 COMPILE_ASSERT_MATCHING_ENUM(TypeNone, PP_MOUSECURSOR_TYPE_NONE); 232 COMPILE_ASSERT_MATCHING_ENUM(TypeNone, PP_MOUSECURSOR_TYPE_NONE);
227 COMPILE_ASSERT_MATCHING_ENUM(TypeNotAllowed, PP_MOUSECURSOR_TYPE_NOTALLOWED); 233 COMPILE_ASSERT_MATCHING_ENUM(TypeNotAllowed, PP_MOUSECURSOR_TYPE_NOTALLOWED);
228 COMPILE_ASSERT_MATCHING_ENUM(TypeZoomIn, PP_MOUSECURSOR_TYPE_ZOOMIN); 234 COMPILE_ASSERT_MATCHING_ENUM(TypeZoomIn, PP_MOUSECURSOR_TYPE_ZOOMIN);
229 COMPILE_ASSERT_MATCHING_ENUM(TypeZoomOut, PP_MOUSECURSOR_TYPE_ZOOMOUT); 235 COMPILE_ASSERT_MATCHING_ENUM(TypeZoomOut, PP_MOUSECURSOR_TYPE_ZOOMOUT);
230 COMPILE_ASSERT_MATCHING_ENUM(TypeGrab, PP_MOUSECURSOR_TYPE_GRAB); 236 COMPILE_ASSERT_MATCHING_ENUM(TypeGrab, PP_MOUSECURSOR_TYPE_GRAB);
231 COMPILE_ASSERT_MATCHING_ENUM(TypeGrabbing, PP_MOUSECURSOR_TYPE_GRABBING); 237 COMPILE_ASSERT_MATCHING_ENUM(TypeGrabbing, PP_MOUSECURSOR_TYPE_GRABBING);
232 // Do not assert WebCursorInfo::TypeCustom == PP_CURSORTYPE_CUSTOM; 238 // Do not assert WebCursorInfo::TypeCustom == PP_CURSORTYPE_CUSTOM;
233 // PP_CURSORTYPE_CUSTOM is pinned to allow new cursor types. 239 // PP_CURSORTYPE_CUSTOM is pinned to allow new cursor types.
234 240
241 COMPILE_ASSERT_PRINT_SCALING_MATCHING_ENUM(WebKit::WebPrintScaleNone,
242 PP_PRINTSCALINGOPTION_NONE);
243 COMPILE_ASSERT_PRINT_SCALING_MATCHING_ENUM(
244 WebKit::WebPrintFitToPrintableArea,
245 PP_PRINTSCALINGOPTION_FIT_TO_PRINTABLE_AREA);
246 COMPILE_ASSERT_PRINT_SCALING_MATCHING_ENUM(WebKit::WebPrintSourceSize,
247 PP_PRINTSCALINGOPTION_SOURCE_SIZE);
248
235 // Sets |*security_origin| to be the WebKit security origin associated with the 249 // Sets |*security_origin| to be the WebKit security origin associated with the
236 // document containing the given plugin instance. On success, returns true. If 250 // document containing the given plugin instance. On success, returns true. If
237 // the instance is invalid, returns false and |*security_origin| will be 251 // the instance is invalid, returns false and |*security_origin| will be
238 // unchanged. 252 // unchanged.
239 bool SecurityOriginForInstance(PP_Instance instance_id, 253 bool SecurityOriginForInstance(PP_Instance instance_id,
240 WebKit::WebSecurityOrigin* security_origin) { 254 WebKit::WebSecurityOrigin* security_origin) {
241 PluginInstance* instance = HostGlobals::Get()->GetInstance(instance_id); 255 PluginInstance* instance = HostGlobals::Get()->GetInstance(instance_id);
242 if (!instance) 256 if (!instance)
243 return false; 257 return false;
244 258
(...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after
1128 return GetPreferredPrintOutputFormat(&format); 1142 return GetPreferredPrintOutputFormat(&format);
1129 } 1143 }
1130 1144
1131 bool PluginInstance::IsPrintScalingDisabled() { 1145 bool PluginInstance::IsPrintScalingDisabled() {
1132 DCHECK(plugin_print_interface_); 1146 DCHECK(plugin_print_interface_);
1133 if (!plugin_print_interface_) 1147 if (!plugin_print_interface_)
1134 return false; 1148 return false;
1135 return plugin_print_interface_->IsScalingDisabled(pp_instance()) == PP_TRUE; 1149 return plugin_print_interface_->IsScalingDisabled(pp_instance()) == PP_TRUE;
1136 } 1150 }
1137 1151
1138 int PluginInstance::PrintBegin(const gfx::Rect& printable_area, 1152 int PluginInstance::PrintBegin(const gfx::Rect& content_area,
1153 const gfx::Rect& printable_area,
1154 const gfx::Size& paper_size,
1155 WebPrintScalingOption print_scaling_option,
1139 int printer_dpi) { 1156 int printer_dpi) {
1140 // Keep a reference on the stack. See NOTE above. 1157 // Keep a reference on the stack. See NOTE above.
1141 scoped_refptr<PluginInstance> ref(this); 1158 scoped_refptr<PluginInstance> ref(this);
1142 PP_PrintOutputFormat_Dev format; 1159 PP_PrintOutputFormat_Dev format;
1143 if (!GetPreferredPrintOutputFormat(&format)) { 1160 if (!GetPreferredPrintOutputFormat(&format)) {
1144 // PrintBegin should not have been called since SupportsPrintInterface 1161 // PrintBegin should not have been called since SupportsPrintInterface
1145 // would have returned false; 1162 // would have returned false;
1146 NOTREACHED(); 1163 NOTREACHED();
1147 return 0; 1164 return 0;
1148 } 1165 }
1149
1150 int num_pages = 0; 1166 int num_pages = 0;
1151 PP_PrintSettings_Dev print_settings; 1167 PP_PrintSettings_Dev print_settings;
1152 print_settings.printable_area = PP_FromGfxRect(printable_area); 1168 print_settings.printable_area = PP_FromGfxRect(printable_area);
1169 print_settings.content_area = PP_FromGfxRect(content_area);
1170 print_settings.paper_size = PP_FromGfxSize(paper_size);
1153 print_settings.dpi = printer_dpi; 1171 print_settings.dpi = printer_dpi;
1154 print_settings.orientation = PP_PRINTORIENTATION_NORMAL; 1172 print_settings.orientation = PP_PRINTORIENTATION_NORMAL;
1155 print_settings.grayscale = PP_FALSE; 1173 print_settings.grayscale = PP_FALSE;
1174 print_settings.print_scaling_option = static_cast<PP_PrintScalingOption_Dev>(
1175 print_scaling_option);
1156 print_settings.format = format; 1176 print_settings.format = format;
1157 num_pages = plugin_print_interface_->Begin(pp_instance(), 1177 num_pages = plugin_print_interface_->Begin(pp_instance(),
1158 &print_settings); 1178 &print_settings);
1159 if (!num_pages) 1179 if (!num_pages)
1160 return 0; 1180 return 0;
1161 current_print_settings_ = print_settings; 1181 current_print_settings_ = print_settings;
1162 #if defined(USE_SKIA) 1182 #if defined(USE_SKIA)
1163 canvas_ = NULL; 1183 canvas_ = NULL;
1164 ranges_.clear(); 1184 ranges_.clear();
1165 #endif // USE_SKIA 1185 #endif // USE_SKIA
(...skipping 877 matching lines...) Expand 10 before | Expand all | Expand 10 after
2043 screen_size_for_fullscreen_ = gfx::Size(); 2063 screen_size_for_fullscreen_ = gfx::Size();
2044 WebElement element = container_->element(); 2064 WebElement element = container_->element();
2045 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); 2065 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_);
2046 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); 2066 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_);
2047 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); 2067 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_);
2048 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); 2068 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_);
2049 } 2069 }
2050 2070
2051 } // namespace ppapi 2071 } // namespace ppapi
2052 } // namespace webkit 2072 } // namespace webkit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698