OLD | NEW |
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 "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 using blink::WebURLRequest; | 175 using blink::WebURLRequest; |
176 using blink::WebURLResponse; | 176 using blink::WebURLResponse; |
177 using blink::WebUserGestureIndicator; | 177 using blink::WebUserGestureIndicator; |
178 using blink::WebUserGestureToken; | 178 using blink::WebUserGestureToken; |
179 using blink::WebView; | 179 using blink::WebView; |
180 | 180 |
181 namespace content { | 181 namespace content { |
182 | 182 |
183 namespace { | 183 namespace { |
184 | 184 |
| 185 #define STATIC_ASSERT_PP_MATCHING_ENUM(a, b) \ |
| 186 static_assert(static_cast<int>(a) == static_cast<int>(b), \ |
| 187 "mismatching enums: " #a) |
| 188 |
185 // Check PP_TextInput_Type and ui::TextInputType are kept in sync. | 189 // Check PP_TextInput_Type and ui::TextInputType are kept in sync. |
186 COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_NONE) == int(PP_TEXTINPUT_TYPE_NONE), | 190 STATIC_ASSERT_PP_MATCHING_ENUM(ui::TEXT_INPUT_TYPE_NONE, |
187 mismatching_enums); | 191 PP_TEXTINPUT_TYPE_NONE); |
188 COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_TEXT) == int(PP_TEXTINPUT_TYPE_TEXT), | 192 STATIC_ASSERT_PP_MATCHING_ENUM(ui::TEXT_INPUT_TYPE_TEXT, |
189 mismatching_enums); | 193 PP_TEXTINPUT_TYPE_TEXT); |
190 COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_PASSWORD) == | 194 STATIC_ASSERT_PP_MATCHING_ENUM(ui::TEXT_INPUT_TYPE_PASSWORD, |
191 int(PP_TEXTINPUT_TYPE_PASSWORD), | 195 PP_TEXTINPUT_TYPE_PASSWORD); |
192 mismatching_enums); | 196 STATIC_ASSERT_PP_MATCHING_ENUM(ui::TEXT_INPUT_TYPE_SEARCH, |
193 COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_SEARCH) == int(PP_TEXTINPUT_TYPE_SEARCH), | 197 PP_TEXTINPUT_TYPE_SEARCH); |
194 mismatching_enums); | 198 STATIC_ASSERT_PP_MATCHING_ENUM(ui::TEXT_INPUT_TYPE_EMAIL, |
195 COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_EMAIL) == int(PP_TEXTINPUT_TYPE_EMAIL), | 199 PP_TEXTINPUT_TYPE_EMAIL); |
196 mismatching_enums); | 200 STATIC_ASSERT_PP_MATCHING_ENUM(ui::TEXT_INPUT_TYPE_NUMBER, |
197 COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_NUMBER) == int(PP_TEXTINPUT_TYPE_NUMBER), | 201 PP_TEXTINPUT_TYPE_NUMBER); |
198 mismatching_enums); | 202 STATIC_ASSERT_PP_MATCHING_ENUM(ui::TEXT_INPUT_TYPE_TELEPHONE, |
199 COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_TELEPHONE) == | 203 PP_TEXTINPUT_TYPE_TELEPHONE); |
200 int(PP_TEXTINPUT_TYPE_TELEPHONE), | 204 STATIC_ASSERT_PP_MATCHING_ENUM(ui::TEXT_INPUT_TYPE_URL, |
201 mismatching_enums); | 205 PP_TEXTINPUT_TYPE_URL); |
202 COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_URL) == int(PP_TEXTINPUT_TYPE_URL), | |
203 mismatching_enums); | |
204 | 206 |
205 // The default text input type is to regard the plugin always accept text input. | 207 // The default text input type is to regard the plugin always accept text input. |
206 // This is for allowing users to use input methods even on completely-IME- | 208 // This is for allowing users to use input methods even on completely-IME- |
207 // unaware plugins (e.g., PPAPI Flash or PDF plugin for M16). | 209 // unaware plugins (e.g., PPAPI Flash or PDF plugin for M16). |
208 // Plugins need to explicitly opt out the text input mode if they know | 210 // Plugins need to explicitly opt out the text input mode if they know |
209 // that they don't accept texts. | 211 // that they don't accept texts. |
210 const ui::TextInputType kPluginDefaultTextInputType = ui::TEXT_INPUT_TYPE_TEXT; | 212 const ui::TextInputType kPluginDefaultTextInputType = ui::TEXT_INPUT_TYPE_TEXT; |
211 | 213 |
212 #define COMPILE_ASSERT_MATCHING_ENUM(webkit_name, np_name) \ | |
213 COMPILE_ASSERT(static_cast<int>(WebCursorInfo::webkit_name) == \ | |
214 static_cast<int>(np_name), \ | |
215 mismatching_enums) | |
216 | |
217 #define COMPILE_ASSERT_PRINT_SCALING_MATCHING_ENUM(webkit_name, pp_name) \ | |
218 COMPILE_ASSERT(static_cast<int>(webkit_name) == static_cast<int>(pp_name), \ | |
219 mismatching_enums) | |
220 | |
221 // <embed>/<object> attributes. | 214 // <embed>/<object> attributes. |
222 const char kWidth[] = "width"; | 215 const char kWidth[] = "width"; |
223 const char kHeight[] = "height"; | 216 const char kHeight[] = "height"; |
224 const char kBorder[] = "border"; // According to w3c, deprecated. | 217 const char kBorder[] = "border"; // According to w3c, deprecated. |
225 const char kStyle[] = "style"; | 218 const char kStyle[] = "style"; |
226 | 219 |
227 COMPILE_ASSERT_MATCHING_ENUM(TypePointer, PP_MOUSECURSOR_TYPE_POINTER); | 220 #define STATIC_ASSERT_MATCHING_ENUM(webkit_name, np_name) \ |
228 COMPILE_ASSERT_MATCHING_ENUM(TypeCross, PP_MOUSECURSOR_TYPE_CROSS); | 221 static_assert(static_cast<int>(WebCursorInfo::webkit_name) == \ |
229 COMPILE_ASSERT_MATCHING_ENUM(TypeHand, PP_MOUSECURSOR_TYPE_HAND); | 222 static_cast<int>(np_name), \ |
230 COMPILE_ASSERT_MATCHING_ENUM(TypeIBeam, PP_MOUSECURSOR_TYPE_IBEAM); | 223 "mismatching enums: " #webkit_name) |
231 COMPILE_ASSERT_MATCHING_ENUM(TypeWait, PP_MOUSECURSOR_TYPE_WAIT); | 224 |
232 COMPILE_ASSERT_MATCHING_ENUM(TypeHelp, PP_MOUSECURSOR_TYPE_HELP); | 225 STATIC_ASSERT_MATCHING_ENUM(TypePointer, PP_MOUSECURSOR_TYPE_POINTER); |
233 COMPILE_ASSERT_MATCHING_ENUM(TypeEastResize, PP_MOUSECURSOR_TYPE_EASTRESIZE); | 226 STATIC_ASSERT_MATCHING_ENUM(TypeCross, PP_MOUSECURSOR_TYPE_CROSS); |
234 COMPILE_ASSERT_MATCHING_ENUM(TypeNorthResize, PP_MOUSECURSOR_TYPE_NORTHRESIZE); | 227 STATIC_ASSERT_MATCHING_ENUM(TypeHand, PP_MOUSECURSOR_TYPE_HAND); |
235 COMPILE_ASSERT_MATCHING_ENUM(TypeNorthEastResize, | 228 STATIC_ASSERT_MATCHING_ENUM(TypeIBeam, PP_MOUSECURSOR_TYPE_IBEAM); |
236 PP_MOUSECURSOR_TYPE_NORTHEASTRESIZE); | 229 STATIC_ASSERT_MATCHING_ENUM(TypeWait, PP_MOUSECURSOR_TYPE_WAIT); |
237 COMPILE_ASSERT_MATCHING_ENUM(TypeNorthWestResize, | 230 STATIC_ASSERT_MATCHING_ENUM(TypeHelp, PP_MOUSECURSOR_TYPE_HELP); |
238 PP_MOUSECURSOR_TYPE_NORTHWESTRESIZE); | 231 STATIC_ASSERT_MATCHING_ENUM(TypeEastResize, PP_MOUSECURSOR_TYPE_EASTRESIZE); |
239 COMPILE_ASSERT_MATCHING_ENUM(TypeSouthResize, PP_MOUSECURSOR_TYPE_SOUTHRESIZE); | 232 STATIC_ASSERT_MATCHING_ENUM(TypeNorthResize, PP_MOUSECURSOR_TYPE_NORTHRESIZE); |
240 COMPILE_ASSERT_MATCHING_ENUM(TypeSouthEastResize, | 233 STATIC_ASSERT_MATCHING_ENUM(TypeNorthEastResize, |
241 PP_MOUSECURSOR_TYPE_SOUTHEASTRESIZE); | 234 PP_MOUSECURSOR_TYPE_NORTHEASTRESIZE); |
242 COMPILE_ASSERT_MATCHING_ENUM(TypeSouthWestResize, | 235 STATIC_ASSERT_MATCHING_ENUM(TypeNorthWestResize, |
243 PP_MOUSECURSOR_TYPE_SOUTHWESTRESIZE); | 236 PP_MOUSECURSOR_TYPE_NORTHWESTRESIZE); |
244 COMPILE_ASSERT_MATCHING_ENUM(TypeWestResize, PP_MOUSECURSOR_TYPE_WESTRESIZE); | 237 STATIC_ASSERT_MATCHING_ENUM(TypeSouthResize, PP_MOUSECURSOR_TYPE_SOUTHRESIZE); |
245 COMPILE_ASSERT_MATCHING_ENUM(TypeNorthSouthResize, | 238 STATIC_ASSERT_MATCHING_ENUM(TypeSouthEastResize, |
246 PP_MOUSECURSOR_TYPE_NORTHSOUTHRESIZE); | 239 PP_MOUSECURSOR_TYPE_SOUTHEASTRESIZE); |
247 COMPILE_ASSERT_MATCHING_ENUM(TypeEastWestResize, | 240 STATIC_ASSERT_MATCHING_ENUM(TypeSouthWestResize, |
248 PP_MOUSECURSOR_TYPE_EASTWESTRESIZE); | 241 PP_MOUSECURSOR_TYPE_SOUTHWESTRESIZE); |
249 COMPILE_ASSERT_MATCHING_ENUM(TypeNorthEastSouthWestResize, | 242 STATIC_ASSERT_MATCHING_ENUM(TypeWestResize, PP_MOUSECURSOR_TYPE_WESTRESIZE); |
250 PP_MOUSECURSOR_TYPE_NORTHEASTSOUTHWESTRESIZE); | 243 STATIC_ASSERT_MATCHING_ENUM(TypeNorthSouthResize, |
251 COMPILE_ASSERT_MATCHING_ENUM(TypeNorthWestSouthEastResize, | 244 PP_MOUSECURSOR_TYPE_NORTHSOUTHRESIZE); |
252 PP_MOUSECURSOR_TYPE_NORTHWESTSOUTHEASTRESIZE); | 245 STATIC_ASSERT_MATCHING_ENUM(TypeEastWestResize, |
253 COMPILE_ASSERT_MATCHING_ENUM(TypeColumnResize, | 246 PP_MOUSECURSOR_TYPE_EASTWESTRESIZE); |
254 PP_MOUSECURSOR_TYPE_COLUMNRESIZE); | 247 STATIC_ASSERT_MATCHING_ENUM(TypeNorthEastSouthWestResize, |
255 COMPILE_ASSERT_MATCHING_ENUM(TypeRowResize, PP_MOUSECURSOR_TYPE_ROWRESIZE); | 248 PP_MOUSECURSOR_TYPE_NORTHEASTSOUTHWESTRESIZE); |
256 COMPILE_ASSERT_MATCHING_ENUM(TypeMiddlePanning, | 249 STATIC_ASSERT_MATCHING_ENUM(TypeNorthWestSouthEastResize, |
257 PP_MOUSECURSOR_TYPE_MIDDLEPANNING); | 250 PP_MOUSECURSOR_TYPE_NORTHWESTSOUTHEASTRESIZE); |
258 COMPILE_ASSERT_MATCHING_ENUM(TypeEastPanning, PP_MOUSECURSOR_TYPE_EASTPANNING); | 251 STATIC_ASSERT_MATCHING_ENUM(TypeColumnResize, |
259 COMPILE_ASSERT_MATCHING_ENUM(TypeNorthPanning, | 252 PP_MOUSECURSOR_TYPE_COLUMNRESIZE); |
260 PP_MOUSECURSOR_TYPE_NORTHPANNING); | 253 STATIC_ASSERT_MATCHING_ENUM(TypeRowResize, PP_MOUSECURSOR_TYPE_ROWRESIZE); |
261 COMPILE_ASSERT_MATCHING_ENUM(TypeNorthEastPanning, | 254 STATIC_ASSERT_MATCHING_ENUM(TypeMiddlePanning, |
262 PP_MOUSECURSOR_TYPE_NORTHEASTPANNING); | 255 PP_MOUSECURSOR_TYPE_MIDDLEPANNING); |
263 COMPILE_ASSERT_MATCHING_ENUM(TypeNorthWestPanning, | 256 STATIC_ASSERT_MATCHING_ENUM(TypeEastPanning, PP_MOUSECURSOR_TYPE_EASTPANNING); |
264 PP_MOUSECURSOR_TYPE_NORTHWESTPANNING); | 257 STATIC_ASSERT_MATCHING_ENUM(TypeNorthPanning, |
265 COMPILE_ASSERT_MATCHING_ENUM(TypeSouthPanning, | 258 PP_MOUSECURSOR_TYPE_NORTHPANNING); |
266 PP_MOUSECURSOR_TYPE_SOUTHPANNING); | 259 STATIC_ASSERT_MATCHING_ENUM(TypeNorthEastPanning, |
267 COMPILE_ASSERT_MATCHING_ENUM(TypeSouthEastPanning, | 260 PP_MOUSECURSOR_TYPE_NORTHEASTPANNING); |
268 PP_MOUSECURSOR_TYPE_SOUTHEASTPANNING); | 261 STATIC_ASSERT_MATCHING_ENUM(TypeNorthWestPanning, |
269 COMPILE_ASSERT_MATCHING_ENUM(TypeSouthWestPanning, | 262 PP_MOUSECURSOR_TYPE_NORTHWESTPANNING); |
270 PP_MOUSECURSOR_TYPE_SOUTHWESTPANNING); | 263 STATIC_ASSERT_MATCHING_ENUM(TypeSouthPanning, |
271 COMPILE_ASSERT_MATCHING_ENUM(TypeWestPanning, PP_MOUSECURSOR_TYPE_WESTPANNING); | 264 PP_MOUSECURSOR_TYPE_SOUTHPANNING); |
272 COMPILE_ASSERT_MATCHING_ENUM(TypeMove, PP_MOUSECURSOR_TYPE_MOVE); | 265 STATIC_ASSERT_MATCHING_ENUM(TypeSouthEastPanning, |
273 COMPILE_ASSERT_MATCHING_ENUM(TypeVerticalText, | 266 PP_MOUSECURSOR_TYPE_SOUTHEASTPANNING); |
274 PP_MOUSECURSOR_TYPE_VERTICALTEXT); | 267 STATIC_ASSERT_MATCHING_ENUM(TypeSouthWestPanning, |
275 COMPILE_ASSERT_MATCHING_ENUM(TypeCell, PP_MOUSECURSOR_TYPE_CELL); | 268 PP_MOUSECURSOR_TYPE_SOUTHWESTPANNING); |
276 COMPILE_ASSERT_MATCHING_ENUM(TypeContextMenu, PP_MOUSECURSOR_TYPE_CONTEXTMENU); | 269 STATIC_ASSERT_MATCHING_ENUM(TypeWestPanning, PP_MOUSECURSOR_TYPE_WESTPANNING); |
277 COMPILE_ASSERT_MATCHING_ENUM(TypeAlias, PP_MOUSECURSOR_TYPE_ALIAS); | 270 STATIC_ASSERT_MATCHING_ENUM(TypeMove, PP_MOUSECURSOR_TYPE_MOVE); |
278 COMPILE_ASSERT_MATCHING_ENUM(TypeProgress, PP_MOUSECURSOR_TYPE_PROGRESS); | 271 STATIC_ASSERT_MATCHING_ENUM(TypeVerticalText, |
279 COMPILE_ASSERT_MATCHING_ENUM(TypeNoDrop, PP_MOUSECURSOR_TYPE_NODROP); | 272 PP_MOUSECURSOR_TYPE_VERTICALTEXT); |
280 COMPILE_ASSERT_MATCHING_ENUM(TypeCopy, PP_MOUSECURSOR_TYPE_COPY); | 273 STATIC_ASSERT_MATCHING_ENUM(TypeCell, PP_MOUSECURSOR_TYPE_CELL); |
281 COMPILE_ASSERT_MATCHING_ENUM(TypeNone, PP_MOUSECURSOR_TYPE_NONE); | 274 STATIC_ASSERT_MATCHING_ENUM(TypeContextMenu, PP_MOUSECURSOR_TYPE_CONTEXTMENU); |
282 COMPILE_ASSERT_MATCHING_ENUM(TypeNotAllowed, PP_MOUSECURSOR_TYPE_NOTALLOWED); | 275 STATIC_ASSERT_MATCHING_ENUM(TypeAlias, PP_MOUSECURSOR_TYPE_ALIAS); |
283 COMPILE_ASSERT_MATCHING_ENUM(TypeZoomIn, PP_MOUSECURSOR_TYPE_ZOOMIN); | 276 STATIC_ASSERT_MATCHING_ENUM(TypeProgress, PP_MOUSECURSOR_TYPE_PROGRESS); |
284 COMPILE_ASSERT_MATCHING_ENUM(TypeZoomOut, PP_MOUSECURSOR_TYPE_ZOOMOUT); | 277 STATIC_ASSERT_MATCHING_ENUM(TypeNoDrop, PP_MOUSECURSOR_TYPE_NODROP); |
285 COMPILE_ASSERT_MATCHING_ENUM(TypeGrab, PP_MOUSECURSOR_TYPE_GRAB); | 278 STATIC_ASSERT_MATCHING_ENUM(TypeCopy, PP_MOUSECURSOR_TYPE_COPY); |
286 COMPILE_ASSERT_MATCHING_ENUM(TypeGrabbing, PP_MOUSECURSOR_TYPE_GRABBING); | 279 STATIC_ASSERT_MATCHING_ENUM(TypeNone, PP_MOUSECURSOR_TYPE_NONE); |
| 280 STATIC_ASSERT_MATCHING_ENUM(TypeNotAllowed, PP_MOUSECURSOR_TYPE_NOTALLOWED); |
| 281 STATIC_ASSERT_MATCHING_ENUM(TypeZoomIn, PP_MOUSECURSOR_TYPE_ZOOMIN); |
| 282 STATIC_ASSERT_MATCHING_ENUM(TypeZoomOut, PP_MOUSECURSOR_TYPE_ZOOMOUT); |
| 283 STATIC_ASSERT_MATCHING_ENUM(TypeGrab, PP_MOUSECURSOR_TYPE_GRAB); |
| 284 STATIC_ASSERT_MATCHING_ENUM(TypeGrabbing, PP_MOUSECURSOR_TYPE_GRABBING); |
287 // Do not assert WebCursorInfo::TypeCustom == PP_CURSORTYPE_CUSTOM; | 285 // Do not assert WebCursorInfo::TypeCustom == PP_CURSORTYPE_CUSTOM; |
288 // PP_CURSORTYPE_CUSTOM is pinned to allow new cursor types. | 286 // PP_CURSORTYPE_CUSTOM is pinned to allow new cursor types. |
289 | 287 |
290 COMPILE_ASSERT_PRINT_SCALING_MATCHING_ENUM(blink::WebPrintScalingOptionNone, | 288 STATIC_ASSERT_PP_MATCHING_ENUM(blink::WebPrintScalingOptionNone, |
291 PP_PRINTSCALINGOPTION_NONE); | 289 PP_PRINTSCALINGOPTION_NONE); |
292 COMPILE_ASSERT_PRINT_SCALING_MATCHING_ENUM( | 290 STATIC_ASSERT_PP_MATCHING_ENUM( |
293 blink::WebPrintScalingOptionFitToPrintableArea, | 291 blink::WebPrintScalingOptionFitToPrintableArea, |
294 PP_PRINTSCALINGOPTION_FIT_TO_PRINTABLE_AREA); | 292 PP_PRINTSCALINGOPTION_FIT_TO_PRINTABLE_AREA); |
295 COMPILE_ASSERT_PRINT_SCALING_MATCHING_ENUM( | 293 STATIC_ASSERT_PP_MATCHING_ENUM( |
296 blink::WebPrintScalingOptionSourceSize, | 294 blink::WebPrintScalingOptionSourceSize, |
297 PP_PRINTSCALINGOPTION_SOURCE_SIZE); | 295 PP_PRINTSCALINGOPTION_SOURCE_SIZE); |
298 | 296 |
299 // Sets |*security_origin| to be the WebKit security origin associated with the | 297 // Sets |*security_origin| to be the WebKit security origin associated with the |
300 // document containing the given plugin instance. On success, returns true. If | 298 // document containing the given plugin instance. On success, returns true. If |
301 // the instance is invalid, returns false and |*security_origin| will be | 299 // the instance is invalid, returns false and |*security_origin| will be |
302 // unchanged. | 300 // unchanged. |
303 bool SecurityOriginForInstance(PP_Instance instance_id, | 301 bool SecurityOriginForInstance(PP_Instance instance_id, |
304 blink::WebSecurityOrigin* security_origin) { | 302 blink::WebSecurityOrigin* security_origin) { |
305 PepperPluginInstanceImpl* instance = | 303 PepperPluginInstanceImpl* instance = |
(...skipping 2988 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3294 | 3292 |
3295 void PepperPluginInstanceImpl::RecordFlashJavaScriptUse() { | 3293 void PepperPluginInstanceImpl::RecordFlashJavaScriptUse() { |
3296 if (!javascript_used_ && is_flash_plugin_) { | 3294 if (!javascript_used_ && is_flash_plugin_) { |
3297 javascript_used_ = true; | 3295 javascript_used_ = true; |
3298 RenderThread::Get()->RecordAction( | 3296 RenderThread::Get()->RecordAction( |
3299 base::UserMetricsAction("Flash.JavaScriptUsed")); | 3297 base::UserMetricsAction("Flash.JavaScriptUsed")); |
3300 } | 3298 } |
3301 } | 3299 } |
3302 | 3300 |
3303 } // namespace content | 3301 } // namespace content |
OLD | NEW |