| 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
|
|
|