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

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

Issue 7285010: Implement an input event resource. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 5 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #ifndef WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ 5 #ifndef WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_
6 #define WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ 6 #define WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/basictypes.h" 13 #include "base/basictypes.h"
14 #include "base/compiler_specific.h" 14 #include "base/compiler_specific.h"
15 #include "base/memory/ref_counted.h" 15 #include "base/memory/ref_counted.h"
16 #include "base/memory/scoped_ptr.h" 16 #include "base/memory/scoped_ptr.h"
17 #include "base/string16.h" 17 #include "base/string16.h"
18 #include "googleurl/src/gurl.h" 18 #include "googleurl/src/gurl.h"
19 #include "ppapi/c/dev/pp_cursor_type_dev.h" 19 #include "ppapi/c/dev/pp_cursor_type_dev.h"
20 #include "ppapi/c/dev/ppp_graphics_3d_dev.h" 20 #include "ppapi/c/dev/ppp_graphics_3d_dev.h"
21 #include "ppapi/c/dev/ppp_printing_dev.h" 21 #include "ppapi/c/dev/ppp_printing_dev.h"
22 #include "ppapi/c/pp_instance.h" 22 #include "ppapi/c/pp_instance.h"
23 #include "ppapi/c/pp_resource.h" 23 #include "ppapi/c/pp_resource.h"
24 #include "ppapi/c/pp_var.h" 24 #include "ppapi/c/pp_var.h"
25 #include "ppapi/c/ppp_instance.h" 25 #include "ppapi/c/ppp_instance.h"
26 #include "ppapi/shared_impl/function_group_base.h" 26 #include "ppapi/shared_impl/function_group_base.h"
27 #include "ppapi/shared_impl/instance_impl.h"
27 #include "ppapi/shared_impl/ppp_instance_combined.h" 28 #include "ppapi/shared_impl/ppp_instance_combined.h"
28 #include "ppapi/thunk/ppb_instance_api.h" 29 #include "ppapi/thunk/ppb_instance_api.h"
29 #include "third_party/skia/include/core/SkBitmap.h" 30 #include "third_party/skia/include/core/SkBitmap.h"
30 #include "third_party/skia/include/core/SkRefCnt.h" 31 #include "third_party/skia/include/core/SkRefCnt.h"
31 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCanvas.h" 32 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCanvas.h"
32 #include "ui/gfx/rect.h" 33 #include "ui/gfx/rect.h"
33 #include "webkit/plugins/ppapi/plugin_delegate.h" 34 #include "webkit/plugins/ppapi/plugin_delegate.h"
34 35
35 typedef struct NPObject NPObject; 36 typedef struct NPObject NPObject;
36 struct PP_Var; 37 struct PP_Var;
37 struct PPB_Messaging; 38 struct PPB_Messaging;
38 struct PPB_Zoom_Dev; 39 struct PPB_Zoom_Dev;
39 struct PPP_Find_Dev; 40 struct PPP_Find_Dev;
41 struct PPP_InputEvent;
40 struct PPP_Instance_Private; 42 struct PPP_Instance_Private;
41 struct PPP_Messaging; 43 struct PPP_Messaging;
42 struct PPP_Pdf; 44 struct PPP_Pdf;
43 struct PPP_Selection_Dev; 45 struct PPP_Selection_Dev;
44 struct PPP_Zoom_Dev; 46 struct PPP_Zoom_Dev;
45 47
46 class SkBitmap; 48 class SkBitmap;
47 class TransportDIB; 49 class TransportDIB;
48 50
49 namespace gfx { 51 namespace gfx {
(...skipping 25 matching lines...) Expand all
75 class PPB_URLLoader_Impl; 77 class PPB_URLLoader_Impl;
76 class PPB_URLRequestInfo_Impl; 78 class PPB_URLRequestInfo_Impl;
77 class Resource; 79 class Resource;
78 80
79 // Represents one time a plugin appears on one web page. 81 // Represents one time a plugin appears on one web page.
80 // 82 //
81 // Note: to get from a PP_Instance to a PluginInstance*, use the 83 // Note: to get from a PP_Instance to a PluginInstance*, use the
82 // ResourceTracker. 84 // ResourceTracker.
83 class PluginInstance : public base::RefCounted<PluginInstance>, 85 class PluginInstance : public base::RefCounted<PluginInstance>,
84 public ::ppapi::FunctionGroupBase, 86 public ::ppapi::FunctionGroupBase,
85 public ::ppapi::thunk::PPB_Instance_FunctionAPI { 87 public ::ppapi::thunk::PPB_Instance_FunctionAPI,
88 public ::ppapi::InstanceImpl {
86 public: 89 public:
87 // Create and return a PluginInstance object which supports the 90 // Create and return a PluginInstance object which supports the
88 // PPP_Instance_0_5 interface. 91 // PPP_Instance_0_5 interface.
89 static PluginInstance* Create0_5(PluginDelegate* delegate, 92 static PluginInstance* Create0_5(PluginDelegate* delegate,
90 PluginModule* module, 93 PluginModule* module,
91 const void* ppp_instance_if_0_5); 94 const void* ppp_instance_if_0_5);
92 95
93 // Create and return a PluginInstance object which supports the 96 // Create and return a PluginInstance object which supports the
94 // PPP_Instance_0_4 interface. 97 // PPP_Instance_0_4 interface.
95 static PluginInstance* Create0_4(PluginDelegate* delegate, 98 static PluginInstance* Create0_4(PluginDelegate* delegate,
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 virtual PP_Bool IsFullFrame(PP_Instance instance) OVERRIDE; 280 virtual PP_Bool IsFullFrame(PP_Instance instance) OVERRIDE;
278 virtual PP_Var GetWindowObject(PP_Instance instance) OVERRIDE; 281 virtual PP_Var GetWindowObject(PP_Instance instance) OVERRIDE;
279 virtual PP_Var GetOwnerElementObject(PP_Instance instance) OVERRIDE; 282 virtual PP_Var GetOwnerElementObject(PP_Instance instance) OVERRIDE;
280 virtual PP_Var ExecuteScript(PP_Instance instance, 283 virtual PP_Var ExecuteScript(PP_Instance instance,
281 PP_Var script, 284 PP_Var script,
282 PP_Var* exception) OVERRIDE; 285 PP_Var* exception) OVERRIDE;
283 virtual PP_Bool IsFullscreen(PP_Instance instance) OVERRIDE; 286 virtual PP_Bool IsFullscreen(PP_Instance instance) OVERRIDE;
284 virtual PP_Bool SetFullscreen(PP_Instance instance, 287 virtual PP_Bool SetFullscreen(PP_Instance instance,
285 PP_Bool fullscreen) OVERRIDE; 288 PP_Bool fullscreen) OVERRIDE;
286 virtual PP_Bool GetScreenSize(PP_Instance instance, PP_Size* size) OVERRIDE; 289 virtual PP_Bool GetScreenSize(PP_Instance instance, PP_Size* size) OVERRIDE;
290 virtual int32_t RequestInputEvents(PP_Instance instance,
291 uint32_t event_classes) OVERRIDE;
292 virtual int32_t RequestFilteringInputEvents(PP_Instance instance,
293 uint32_t event_classes) OVERRIDE;
294 virtual void ClearInputEventRequest(PP_Instance instance,
295 uint32_t event_classes) OVERRIDE;
287 296
288 private: 297 private:
289 // See the static Create functions above for creating PluginInstance objects. 298 // See the static Create functions above for creating PluginInstance objects.
290 // This constructor is private so that we can hide the PPP_Instance_Combined 299 // This constructor is private so that we can hide the PPP_Instance_Combined
291 // details while still having 1 constructor to maintain for member 300 // details while still having 1 constructor to maintain for member
292 // initialization. 301 // initialization.
293 PluginInstance(PluginDelegate* delegate, 302 PluginInstance(PluginDelegate* delegate,
294 PluginModule* module, 303 PluginModule* module,
295 ::ppapi::PPP_Instance_Combined* instance_interface); 304 ::ppapi::PPP_Instance_Combined* instance_interface);
296 305
297 bool LoadFindInterface(); 306 bool LoadFindInterface();
307 bool LoadInputEventInterface();
298 bool LoadMessagingInterface(); 308 bool LoadMessagingInterface();
299 bool LoadPdfInterface(); 309 bool LoadPdfInterface();
300 bool LoadSelectionInterface(); 310 bool LoadSelectionInterface();
301 bool LoadPrintInterface(); 311 bool LoadPrintInterface();
302 bool LoadPrivateInterface(); 312 bool LoadPrivateInterface();
303 bool LoadZoomInterface(); 313 bool LoadZoomInterface();
304 314
305 // Determines if we think the plugin has focus, both content area and webkit 315 // Determines if we think the plugin has focus, both content area and webkit
306 // (see has_webkit_focus_ below). 316 // (see has_webkit_focus_ below).
307 bool PluginHasFocus() const; 317 bool PluginHasFocus() const;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 // these values are set to true. 390 // these values are set to true.
381 bool has_webkit_focus_; 391 bool has_webkit_focus_;
382 bool has_content_area_focus_; 392 bool has_content_area_focus_;
383 393
384 // The id of the current find operation, or -1 if none is in process. 394 // The id of the current find operation, or -1 if none is in process.
385 int find_identifier_; 395 int find_identifier_;
386 396
387 // The plugin-provided interfaces. 397 // The plugin-provided interfaces.
388 const PPP_Find_Dev* plugin_find_interface_; 398 const PPP_Find_Dev* plugin_find_interface_;
389 const PPP_Messaging* plugin_messaging_interface_; 399 const PPP_Messaging* plugin_messaging_interface_;
400 const PPP_InputEvent* plugin_input_event_interface_;
401 const PPP_Instance_Private* plugin_private_interface_;
390 const PPP_Pdf* plugin_pdf_interface_; 402 const PPP_Pdf* plugin_pdf_interface_;
391 const PPP_Instance_Private* plugin_private_interface_;
392 const PPP_Selection_Dev* plugin_selection_interface_; 403 const PPP_Selection_Dev* plugin_selection_interface_;
393 const PPP_Zoom_Dev* plugin_zoom_interface_; 404 const PPP_Zoom_Dev* plugin_zoom_interface_;
394 405
395 // A flag to indicate whether we have asked this plugin instance for its 406 // Flags indicating whether we have asked this plugin instance for the
396 // messaging interface, so that we can ask only once. 407 // corresponding interfaces, so that we can ask only once.
408 bool checked_for_plugin_input_event_interface_;
397 bool checked_for_plugin_messaging_interface_; 409 bool checked_for_plugin_messaging_interface_;
398 410
399 // This is only valid between a successful PrintBegin call and a PrintEnd 411 // This is only valid between a successful PrintBegin call and a PrintEnd
400 // call. 412 // call.
401 PP_PrintSettings_Dev_0_4 current_print_settings_; 413 PP_PrintSettings_Dev_0_4 current_print_settings_;
402 #if defined(OS_MACOSX) 414 #if defined(OS_MACOSX)
403 // On the Mac, when we draw the bitmap to the PDFContext, it seems necessary 415 // On the Mac, when we draw the bitmap to the PDFContext, it seems necessary
404 // to keep the pixels valid until CGContextEndPage is called. We use this 416 // to keep the pixels valid until CGContextEndPage is called. We use this
405 // variable to hold on to the pixels. 417 // variable to hold on to the pixels.
406 scoped_refptr<PPB_ImageData_Impl> last_printed_page_; 418 scoped_refptr<PPB_ImageData_Impl> last_printed_page_;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 SkBitmap* sad_plugin_; 492 SkBitmap* sad_plugin_;
481 493
482 typedef std::set<PluginObject*> PluginObjectSet; 494 typedef std::set<PluginObject*> PluginObjectSet;
483 PluginObjectSet live_plugin_objects_; 495 PluginObjectSet live_plugin_objects_;
484 496
485 // Tracks all live ObjectVars used by this module so we can map NPObjects to 497 // Tracks all live ObjectVars used by this module so we can map NPObjects to
486 // the corresponding object. These are non-owning references. 498 // the corresponding object. These are non-owning references.
487 typedef std::map<NPObject*, ObjectVar*> NPObjectToObjectVarMap; 499 typedef std::map<NPObject*, ObjectVar*> NPObjectToObjectVarMap;
488 NPObjectToObjectVarMap np_object_to_object_var_; 500 NPObjectToObjectVarMap np_object_to_object_var_;
489 501
502 // Classes of events that the plugin has registered for, both for filtering
503 // and not. The bits are PP_INPUTEVENT_CLASS_*.
504 uint32_t input_event_mask_;
505 uint32_t filtered_input_event_mask_;
506
490 DISALLOW_COPY_AND_ASSIGN(PluginInstance); 507 DISALLOW_COPY_AND_ASSIGN(PluginInstance);
491 }; 508 };
492 509
493 } // namespace ppapi 510 } // namespace ppapi
494 } // namespace webkit 511 } // namespace webkit
495 512
496 #endif // WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ 513 #endif // WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698