summaryrefslogtreecommitdiffstats
path: root/webkit/glue/plugins/pepper_widget.h
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/glue/plugins/pepper_widget.h')
-rw-r--r--webkit/glue/plugins/pepper_widget.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/webkit/glue/plugins/pepper_widget.h b/webkit/glue/plugins/pepper_widget.h
new file mode 100644
index 0000000..048a718
--- /dev/null
+++ b/webkit/glue/plugins/pepper_widget.h
@@ -0,0 +1,53 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef WEBKIT_GLUE_PLUGINS_PEPPER_WIDGET_H_
+#define WEBKIT_GLUE_PLUGINS_PEPPER_WIDGET_H_
+
+#include "base/scoped_ptr.h"
+#include "third_party/ppapi/c/pp_rect.h"
+#include "webkit/glue/plugins/pepper_resource.h"
+
+typedef struct _ppb_Widget PPB_Widget;
+typedef struct _pp_Event PP_Event;
+
+namespace pepper {
+
+class ImageData;
+class PluginInstance;
+
+class Widget : public Resource {
+ public:
+ explicit Widget(PluginInstance* instance);
+ virtual ~Widget();
+
+ // Returns a pointer to the interface implementing PPB_Widget that is
+ // exposed to the plugin.
+ static const PPB_Widget* GetInterface();
+
+ // Resource overrides.
+ Widget* AsWidget() { return this; }
+
+ // PPB_Widget implementation.
+ virtual bool Paint(const PP_Rect* rect, ImageData* image) = 0;
+ virtual bool HandleEvent(const PP_Event* event) = 0;
+ bool GetLocation(PP_Rect* location);
+ void SetLocation(const PP_Rect* location);
+
+ // Notifies the plugin instance that the given rect needs to be repainted.
+ void Invalidate(const PP_Rect* dirty);
+ PluginInstance* instance() { return instance_; }
+
+ protected:
+ virtual void SetLocationInternal(const PP_Rect* location) = 0;
+ PP_Rect location() const { return location_; }
+
+ private:
+ scoped_refptr<PluginInstance> instance_;
+ PP_Rect location_;
+};
+
+} // namespace pepper
+
+#endif // WEBKIT_GLUE_PLUGINS_PEPPER_WIDGET_H_