Index: chrome/common/font_config_ipc_linux.cc |
=================================================================== |
--- chrome/common/font_config_ipc_linux.cc (revision 78451) |
+++ chrome/common/font_config_ipc_linux.cc (working copy) |
@@ -1,110 +0,0 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/common/font_config_ipc_linux.h" |
- |
-#include <errno.h> |
-#include <unistd.h> |
-#include <fcntl.h> |
-#include <sys/socket.h> |
-#include <sys/uio.h> |
- |
-#include "base/pickle.h" |
-#include "chrome/common/unix_domain_socket_posix.h" |
- |
-FontConfigIPC::FontConfigIPC(int fd) |
- : fd_(fd) { |
-} |
- |
-FontConfigIPC::~FontConfigIPC() { |
- close(fd_); |
-} |
- |
-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.WriteBool(filefaceid_valid); |
- if (filefaceid_valid) |
- request.WriteUInt32(filefaceid); |
- |
- 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); |
- if (r == -1) |
- return false; |
- |
- Pickle reply(reinterpret_cast<char*>(reply_buf), r); |
- void* iter = NULL; |
- bool result; |
- if (!reply.ReadBool(&iter, &result)) |
- return false; |
- if (!result) |
- return false; |
- |
- 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; |
- } |
- |
- *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; |
-} |
- |
-int FontConfigIPC::Open(unsigned filefaceid) { |
- Pickle request; |
- request.WriteInt(METHOD_OPEN); |
- request.WriteUInt32(filefaceid); |
- |
- int result_fd = -1; |
- uint8_t reply_buf[256]; |
- const ssize_t r = UnixDomainSocket::SendRecvMsg(fd_, reply_buf, |
- sizeof(reply_buf), |
- &result_fd, request); |
- |
- if (r == -1) |
- return -1; |
- |
- Pickle reply(reinterpret_cast<char*>(reply_buf), r); |
- bool result; |
- void* iter = NULL; |
- if (!reply.ReadBool(&iter, &result) || |
- !result) { |
- if (result_fd) |
- close(result_fd); |
- return -1; |
- } |
- |
- return result_fd; |
-} |