Index: ppapi/proxy/ppb_font_proxy.cc |
=================================================================== |
--- ppapi/proxy/ppb_font_proxy.cc (revision 71973) |
+++ ppapi/proxy/ppb_font_proxy.cc (working copy) |
@@ -14,7 +14,7 @@ |
class Font : public PluginResource { |
public: |
- Font(); |
+ Font(PP_Instance instance); |
virtual ~Font(); |
// PluginResource overrides. |
@@ -31,21 +31,23 @@ |
DISALLOW_COPY_AND_ASSIGN(Font); |
}; |
-Font::Font() { |
+Font::Font(PP_Instance instance) : PluginResource(instance) { |
memset(&desc_, 0, sizeof(PP_FontDescription_Dev)); |
desc_.face.type = PP_VARTYPE_UNDEFINED; |
memset(&metrics_, 0, sizeof(PP_FontMetrics_Dev)); |
} |
Font::~Font() { |
- PluginDispatcher::Get()->plugin_var_tracker()->Release(desc_.face); |
+ PluginVarTracker::GetInstance()->Release(desc_.face); |
} |
namespace { |
PP_Resource Create(PP_Instance instance, |
const PP_FontDescription_Dev* description) { |
- PluginDispatcher* dispatcher = PluginDispatcher::Get(); |
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); |
+ if (!dispatcher) |
+ return 0; |
SerializedFontDescription in_description; |
in_description.SetFromPPFontDescription(dispatcher, *description, true); |
@@ -53,14 +55,14 @@ |
PP_Resource result; |
SerializedFontDescription out_description; |
std::string out_metrics; |
- PluginDispatcher::Get()->Send(new PpapiHostMsg_PPBFont_Create( |
+ dispatcher->Send(new PpapiHostMsg_PPBFont_Create( |
INTERFACE_ID_PPB_FONT, |
instance, in_description, &result, &out_description, &out_metrics)); |
if (!result) |
return 0; // Failure creating font. |
- linked_ptr<Font> object(new Font); |
+ linked_ptr<Font> object(new Font(instance)); |
out_description.SetToPPFontDescription(dispatcher, object->desc_ptr(), true); |
// Convert the metrics, this is just serialized as a string of bytes. |
@@ -68,7 +70,7 @@ |
return 0; |
memcpy(&object->metrics(), out_metrics.data(), sizeof(PP_FontMetrics_Dev)); |
- dispatcher->plugin_resource_tracker()->AddResource(result, object); |
+ PluginResourceTracker::GetInstance()->AddResource(result, object); |
return result; |
} |
@@ -78,8 +80,8 @@ |
} |
PP_Bool Describe(PP_Resource font_id, |
- PP_FontDescription_Dev* description, |
- PP_FontMetrics_Dev* metrics) { |
+ PP_FontDescription_Dev* description, |
+ PP_FontMetrics_Dev* metrics) { |
Font* object = PluginResource::GetAs<Font>(font_id); |
if (!object) |
return PP_FALSE; |
@@ -87,7 +89,7 @@ |
// Copy the description, the caller expects its face PP_Var to have a ref |
// added to it on its behalf. |
memcpy(description, &object->desc(), sizeof(PP_FontDescription_Dev)); |
- PluginDispatcher::Get()->plugin_var_tracker()->AddRef(description->face); |
+ PluginVarTracker::GetInstance()->AddRef(description->face); |
memcpy(metrics, &object->metrics(), sizeof(PP_FontMetrics_Dev)); |
return PP_TRUE; |
@@ -100,6 +102,10 @@ |
uint32_t color, |
const PP_Rect* clip, |
PP_Bool image_data_is_opaque) { |
+ Font* object = PluginResource::GetAs<Font>(font_id); |
+ if (!object) |
+ return PP_FALSE; |
+ |
PPBFont_DrawTextAt_Params params; |
params.font = font_id; |
params.image_data = image_data; |
@@ -116,17 +122,23 @@ |
} |
params.image_data_is_opaque = image_data_is_opaque; |
- Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ Dispatcher* dispatcher = PluginDispatcher::GetForInstance(object->instance()); |
PP_Bool result = PP_FALSE; |
- dispatcher->Send(new PpapiHostMsg_PPBFont_DrawTextAt( |
- INTERFACE_ID_PPB_FONT, |
- SerializedVarSendInput(dispatcher, text->text), |
- params, &result)); |
+ if (dispatcher) { |
+ dispatcher->Send(new PpapiHostMsg_PPBFont_DrawTextAt( |
+ INTERFACE_ID_PPB_FONT, |
+ SerializedVarSendInput(dispatcher, text->text), |
+ params, &result)); |
+ } |
return result; |
} |
int32_t MeasureText(PP_Resource font_id, const PP_TextRun_Dev* text) { |
- Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ Font* object = PluginResource::GetAs<Font>(font_id); |
+ if (!object) |
+ return -1; |
+ |
+ Dispatcher* dispatcher = PluginDispatcher::GetForInstance(object->instance()); |
int32_t result = 0; |
dispatcher->Send(new PpapiHostMsg_PPBFont_MeasureText( |
INTERFACE_ID_PPB_FONT, font_id, |
@@ -138,7 +150,11 @@ |
uint32_t CharacterOffsetForPixel(PP_Resource font_id, |
const PP_TextRun_Dev* text, |
int32_t pixel_position) { |
- Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ Font* object = PluginResource::GetAs<Font>(font_id); |
+ if (!object) |
+ return -1; |
+ |
+ Dispatcher* dispatcher = PluginDispatcher::GetForInstance(object->instance()); |
uint32_t result = 0; |
dispatcher->Send(new PpapiHostMsg_PPBFont_CharacterOffsetForPixel( |
INTERFACE_ID_PPB_FONT, font_id, |
@@ -150,7 +166,11 @@ |
int32_t PixelOffsetForCharacter(PP_Resource font_id, |
const PP_TextRun_Dev* text, |
uint32_t char_offset) { |
- Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ Font* object = PluginResource::GetAs<Font>(font_id); |
+ if (!object) |
+ return -1; |
+ |
+ Dispatcher* dispatcher = PluginDispatcher::GetForInstance(object->instance()); |
int32_t result = 0; |
dispatcher->Send(new PpapiHostMsg_PPBFont_PixelOffsetForCharacter( |
INTERFACE_ID_PPB_FONT, font_id, |