Index: content/common/font_config_ipc_linux.cc |
=================================================================== |
--- content/common/font_config_ipc_linux.cc (revision 187285) |
+++ content/common/font_config_ipc_linux.cc (working copy) |
@@ -12,8 +12,6 @@ |
#include "base/pickle.h" |
#include "base/posix/unix_domain_socket_linux.h" |
-#include "skia/ext/skia_utils_base.h" |
-#include "third_party/skia/include/core/SkStream.h" |
namespace content { |
@@ -25,21 +23,31 @@ |
close(fd_); |
} |
-bool FontConfigIPC::matchFamilyName(const char familyName[], |
- SkTypeface::Style requestedStyle, |
- FontIdentity* outFontIdentity, |
- SkString* outFamilyName, |
- SkTypeface::Style* outStyle) { |
- size_t familyNameLen = familyName ? strlen(familyName) : 0; |
- if (familyNameLen > kMaxFontFamilyLength) |
+bool FontConfigIPC::Match(std::string* result_family, |
+ unsigned* result_filefaceid, |
+ bool filefaceid_valid, unsigned filefaceid, |
+ const std::string& family, |
+ const void* characters, size_t characters_bytes, |
+ bool* is_bold, bool* is_italic) { |
+ if (family.length() > kMaxFontFamilyLength) |
return false; |
Pickle request; |
request.WriteInt(METHOD_MATCH); |
- request.WriteData(familyName, familyNameLen); |
- request.WriteUInt32(requestedStyle); |
+ request.WriteBool(filefaceid_valid); |
+ if (filefaceid_valid) |
+ request.WriteUInt32(filefaceid); |
- uint8_t reply_buf[2048]; |
+ request.WriteBool(is_bold && *is_bold); |
+ request.WriteBool(is_bold && *is_italic); |
+ |
+ request.WriteUInt32(characters_bytes); |
+ if (characters_bytes) |
+ request.WriteBytes(characters, characters_bytes); |
+ |
+ request.WriteString(family); |
+ |
+ uint8_t reply_buf[512]; |
const ssize_t r = UnixDomainSocket::SendRecvMsg(fd_, reply_buf, |
sizeof(reply_buf), NULL, |
request); |
@@ -54,29 +62,33 @@ |
if (!result) |
return false; |
- SkString reply_family; |
- FontIdentity reply_identity; |
- uint32_t reply_style; |
- if (!skia::ReadSkString(reply, &iter, &reply_family) || |
- !skia::ReadSkFontIdentity(reply, &iter, &reply_identity) || |
- !reply.ReadUInt32(&iter, &reply_style)) { |
+ uint32_t reply_filefaceid; |
+ std::string reply_family; |
+ bool resulting_bold, resulting_italic; |
+ if (!reply.ReadUInt32(&iter, &reply_filefaceid) || |
+ !reply.ReadString(&iter, &reply_family) || |
+ !reply.ReadBool(&iter, &resulting_bold) || |
+ !reply.ReadBool(&iter, &resulting_italic)) { |
return false; |
} |
- if (outFontIdentity) |
- *outFontIdentity = reply_identity; |
- if (outFamilyName) |
- *outFamilyName = reply_family; |
- if (outStyle) |
- *outStyle = static_cast<SkTypeface::Style>(reply_style); |
+ if (result_filefaceid) |
+ *result_filefaceid = reply_filefaceid; |
+ if (result_family) |
+ *result_family = reply_family; |
+ if (is_bold) |
+ *is_bold = resulting_bold; |
+ if (is_italic) |
+ *is_italic = resulting_italic; |
+ |
return true; |
} |
-SkStream* FontConfigIPC::openStream(const FontIdentity& identity) { |
+int FontConfigIPC::Open(unsigned filefaceid) { |
Pickle request; |
request.WriteInt(METHOD_OPEN); |
- request.WriteUInt32(identity.fID); |
+ request.WriteUInt32(filefaceid); |
int result_fd = -1; |
uint8_t reply_buf[256]; |
@@ -85,7 +97,7 @@ |
&result_fd, request); |
if (r == -1) |
- return NULL; |
+ return -1; |
Pickle reply(reinterpret_cast<char*>(reply_buf), r); |
bool result; |
@@ -94,10 +106,10 @@ |
!result) { |
if (result_fd) |
close(result_fd); |
- return NULL; |
+ return -1; |
} |
- return new SkFDStream(result_fd, true); |
+ return result_fd; |
} |
} // namespace content |