Index: webkit/glue/plugins/pepper_widget.cc |
=================================================================== |
--- webkit/glue/plugins/pepper_widget.cc (revision 0) |
+++ webkit/glue/plugins/pepper_widget.cc (revision 0) |
@@ -0,0 +1,90 @@ |
+// 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. |
+ |
+#include "webkit/glue/plugins/pepper_widget.h" |
+ |
+#include "base/logging.h" |
+#include "third_party/ppapi/c/pp_completion_callback.h" |
+#include "third_party/ppapi/c/pp_errors.h" |
+#include "third_party/ppapi/c/ppb_widget.h" |
+#include "third_party/ppapi/c/ppp_widget.h" |
+#include "webkit/glue/plugins/pepper_image_data.h" |
+#include "webkit/glue/plugins/pepper_plugin_instance.h" |
+#include "webkit/glue/plugins/pepper_plugin_module.h" |
+ |
+namespace pepper { |
+ |
+namespace { |
+ |
+bool IsWidget(PP_Resource resource) { |
+ return !!Resource::GetAs<Widget>(resource).get(); |
+} |
+ |
+bool Paint(PP_Resource resource, const PP_Rect* rect, PP_Resource image_id) { |
+ scoped_refptr<Widget> widget(Resource::GetAs<Widget>(resource)); |
+ if (!widget.get()) |
+ return false; |
+ |
+ scoped_refptr<ImageData> image(Resource::GetAs<ImageData>(image_id)); |
+ return widget.get() && widget->Paint(rect, image); |
+} |
+ |
+bool HandleEvent(PP_Resource resource, const PP_Event* event) { |
+ scoped_refptr<Widget> widget(Resource::GetAs<Widget>(resource)); |
+ return widget.get() && widget->HandleEvent(event); |
+} |
+ |
+bool GetLocation(PP_Resource resource, PP_Rect* location) { |
+ scoped_refptr<Widget> widget(Resource::GetAs<Widget>(resource)); |
+ return widget.get() && widget->GetLocation(location); |
+} |
+ |
+void SetLocation(PP_Resource resource, const PP_Rect* location) { |
+ scoped_refptr<Widget> widget(Resource::GetAs<Widget>(resource)); |
+ if (widget.get()) |
+ widget->SetLocation(location); |
+} |
+ |
+const PPB_Widget ppb_widget = { |
+ &IsWidget, |
+ &Paint, |
+ &HandleEvent, |
+ &GetLocation, |
+ &SetLocation, |
+}; |
+ |
+} // namespace |
+ |
+Widget::Widget(PluginInstance* instance) |
+ : Resource(instance->module()), |
+ instance_(instance) { |
+} |
+ |
+Widget::~Widget() { |
+} |
+ |
+// static |
+const PPB_Widget* Widget::GetInterface() { |
+ return &ppb_widget; |
+} |
+ |
+bool Widget::GetLocation(PP_Rect* location) { |
+ *location = location_; |
+ return true; |
+} |
+ |
+void Widget::SetLocation(const PP_Rect* location) { |
+ location_ = *location; |
+ SetLocationInternal(location); |
+} |
+ |
+void Widget::Invalidate(const PP_Rect* dirty) { |
+ const PPP_Widget* widget = static_cast<const PPP_Widget*>( |
+ module()->GetPluginInterface(PPP_WIDGET_INTERFACE)); |
+ if (!widget) |
+ return; |
+ widget->Invalidate(instance_->GetPPInstance(), GetResource(), dirty); |
+} |
+ |
+} // namespace pepper |
Property changes on: webkit\glue\plugins\pepper_widget.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |