Index: ppapi/proxy/ppb_font_proxy.h |
=================================================================== |
--- ppapi/proxy/ppb_font_proxy.h (revision 84713) |
+++ ppapi/proxy/ppb_font_proxy.h (working copy) |
@@ -6,18 +6,18 @@ |
#define PPAPI_PROXY_PPB_FONT_PROXY_H_ |
#include "base/basictypes.h" |
-#include "ppapi/c/pp_instance.h" |
-#include "ppapi/c/pp_resource.h" |
+#include "base/synchronization/waitable_event.h" |
#include "ppapi/proxy/host_resource.h" |
#include "ppapi/proxy/interface_proxy.h" |
+#include "ppapi/proxy/plugin_resource.h" |
+#include "ppapi/shared_impl/webkit_forwarding.h" |
+#include "ppapi/thunk/ppb_font_api.h" |
struct PPB_Font_Dev; |
namespace pp { |
namespace proxy { |
-struct PPBFont_DrawTextAt_Params; |
-struct SerializedFontDescription; |
class SerializedVarReceiveInput; |
class PPB_Font_Proxy : public InterfaceProxy { |
@@ -27,44 +27,57 @@ |
static const Info* GetInfo(); |
- const PPB_Font_Dev* ppb_font_target() const { |
- return static_cast<const PPB_Font_Dev*>(target_interface()); |
- } |
- |
// InterfaceProxy implementation. |
virtual bool OnMessageReceived(const IPC::Message& msg); |
private: |
- // Message handlers. |
- void OnMsgCreate(PP_Instance instance, |
- const SerializedFontDescription& in_description, |
- HostResource* result, |
- SerializedFontDescription* out_description, |
- std::string* out_metrics); |
- void OnMsgDrawTextAt(SerializedVarReceiveInput text, |
- const PPBFont_DrawTextAt_Params& params, |
- PP_Bool* result); |
- void OnMsgMeasureText(HostResource font, |
- SerializedVarReceiveInput text, |
- PP_Bool text_is_rtl, |
- PP_Bool override_direction, |
- int32_t* result); |
- void OnMsgCharacterOffsetForPixel(HostResource font, |
- SerializedVarReceiveInput text, |
- PP_Bool text_is_rtl, |
- PP_Bool override_direction, |
- int32_t pixel_pos, |
- uint32_t* result); |
- void OnMsgPixelOffsetForCharacter(HostResource font, |
- SerializedVarReceiveInput text, |
- PP_Bool text_is_rtl, |
- PP_Bool override_direction, |
- uint32_t char_offset, |
- int32_t* result); |
- |
DISALLOW_COPY_AND_ASSIGN(PPB_Font_Proxy); |
}; |
+class Font : public PluginResource, |
+ public ppapi::thunk::PPB_Font_API { |
+ public: |
+ // Note that there isn't a "real" resource in the renderer backing a font, |
+ // it lives entirely in the plugin process. So the resource ID in the host |
+ // resource should be 0. However, various code assumes the instance in the |
+ // host resource is valid (this is how resources are associated with |
+ // instances), so that should be set. |
+ Font(const HostResource& resource, const PP_FontDescription_Dev& desc); |
+ virtual ~Font(); |
+ |
+ // ResourceObjectBase. |
+ virtual ppapi::thunk::PPB_Font_API* AsFont_API() OVERRIDE; |
+ |
+ // PluginResource overrides. |
+ virtual Font* AsFont() OVERRIDE; |
+ |
+ // PPB_Font_API implementation. |
+ virtual PP_Bool Describe(PP_FontDescription_Dev* description, |
+ PP_FontMetrics_Dev* metrics) OVERRIDE; |
+ virtual PP_Bool DrawTextAt(PP_Resource image_data, |
+ const PP_TextRun_Dev* text, |
+ const PP_Point* position, |
+ uint32_t color, |
+ const PP_Rect* clip, |
+ PP_Bool image_data_is_opaque) OVERRIDE; |
+ virtual int32_t MeasureText(const PP_TextRun_Dev* text) OVERRIDE; |
+ virtual uint32_t CharacterOffsetForPixel(const PP_TextRun_Dev* text, |
+ int32_t pixel_position) OVERRIDE; |
+ virtual int32_t PixelOffsetForCharacter(const PP_TextRun_Dev* text, |
+ uint32_t char_offset) OVERRIDE; |
+ |
+ private: |
+ // Posts the given closure to the WebKit thread and waits on the |
+ // webkit_event_ for the task to continue. |
+ void RunOnWebKitThread(const base::Closure& task); |
+ |
+ base::WaitableEvent webkit_event_; |
+ |
+ scoped_ptr<pp::shared_impl::WebKitForwarding::Font> font_forwarding_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(Font); |
+}; |
+ |
} // namespace proxy |
} // namespace pp |