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

Unified Diff: ppapi/proxy/truetype_font_singleton_resource.cc

Issue 13913006: Add Pepper TrueType font API call to enumerate fonts in a given family. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rename IsFont to IsTrueTypeFont. Created 7 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: ppapi/proxy/truetype_font_singleton_resource.cc
diff --git a/ppapi/proxy/truetype_font_singleton_resource.cc b/ppapi/proxy/truetype_font_singleton_resource.cc
index b812bf1647fc1186a2dfcc8bc6d2899965630ed4..5b5f7138e1007477750748d3e5f15ead698705c4 100644
--- a/ppapi/proxy/truetype_font_singleton_resource.cc
+++ b/ppapi/proxy/truetype_font_singleton_resource.cc
@@ -39,6 +39,23 @@ int32_t TrueTypeFontSingletonResource::GetFontFamilies(
return PP_OK_COMPLETIONPENDING;
}
+int32_t TrueTypeFontSingletonResource::GetFontsInFamily(
+ PP_Instance instance,
+ PP_Var family,
+ const PP_ArrayOutput& output,
+ const scoped_refptr<TrackedCallback>& callback) {
+ scoped_refptr<StringVar> family_var = StringVar::FromPPVar(family);
+ const uint32_t kMaxFamilySizeInBytes = 1024;
+ if (!family_var || family_var->value().size() > kMaxFamilySizeInBytes)
+ return PP_ERROR_BADARGUMENT;
+ Call<PpapiPluginMsg_TrueTypeFontSingleton_GetFontsInFamilyReply>(BROWSER,
+ PpapiHostMsg_TrueTypeFontSingleton_GetFontsInFamily(family_var->value()),
+ base::Bind(
+ &TrueTypeFontSingletonResource::OnPluginMsgGetFontsInFamilyComplete,
+ this, callback, output));
+ return PP_OK_COMPLETIONPENDING;
+}
+
void TrueTypeFontSingletonResource::OnPluginMsgGetFontFamiliesComplete(
scoped_refptr<TrackedCallback> callback,
PP_ArrayOutput array_output,
@@ -64,5 +81,31 @@ void TrueTypeFontSingletonResource::OnPluginMsgGetFontFamiliesComplete(
callback->Run(result);
}
+void TrueTypeFontSingletonResource::OnPluginMsgGetFontsInFamilyComplete(
+ scoped_refptr<TrackedCallback> callback,
+ PP_ArrayOutput array_output,
+ const ResourceMessageReplyParams& params,
+ const std::vector<SerializedTrueTypeFontDesc>& fonts) {
+ // The result code should contain the data size if it's positive.
dmichael (off chromium) 2013/04/12 23:34:18 It's possible that you can get here in a situation
bbudge 2013/04/13 00:44:44 Is that possible on a singleton resource? On 2013/
dmichael (off chromium) 2013/04/15 18:11:44 Oh, forgot about that. Yes, I think that would sti
bbudge 2013/04/17 23:49:19 I added the check at the beginning of this method
+ int32_t result = params.result();
+ DCHECK((result < 0 && fonts.size() == 0) ||
+ result == static_cast<int32_t>(fonts.size()));
+ ArrayWriter output;
+ output.set_pp_array_output(array_output);
+ if (output.is_valid()) {
+ // Convvert the message data to an array of PP_TrueTypeFontDesc_Dev structs.
dmichael (off chromium) 2013/04/12 23:34:18 nit: Convvert->Convert
bbudge 2013/04/13 00:44:44 Done.
+ // The embedded family PP_Var is null so we don't worry about refs.
dmichael (off chromium) 2013/04/12 23:34:18 The family is NULL? That seems like it might be co
bbudge 2013/04/13 00:44:44 I initially thought I could sidestep problems with
+ std::vector<PP_TrueTypeFontDesc_Dev> pp_fonts(fonts.size());
+ for (size_t i = 0; i < fonts.size(); i++)
+ fonts[i].CopyToPPTrueTypeFontDesc(&pp_fonts[i]);
+
+ output.StoreVector(pp_fonts);
+ } else {
+ result = PP_ERROR_FAILED;
+ }
+
+ callback->Run(result);
+}
+
} // namespace proxy
} // namespace ppapi

Powered by Google App Engine
This is Rietveld 408576698