// Copyright (c) 2012 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.

#ifndef CONTENT_COMMON_FONT_CONFIG_IPC_LINUX_H_
#define CONTENT_COMMON_FONT_CONFIG_IPC_LINUX_H_

#include "base/compiler_specific.h"
#include "skia/ext/SkFontHost_fontconfig_impl.h"

#include <string>

// FontConfig implementation for Skia that proxies out of process to get out
// of the sandbox. See http://code.google.com/p/chromium/wiki/LinuxSandboxIPC
class FontConfigIPC : public FontConfigInterface {
 public:
  explicit FontConfigIPC(int fd);
  virtual ~FontConfigIPC();

  // FontConfigInterface implementation.
  virtual bool 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) OVERRIDE;
  virtual int Open(unsigned filefaceid) OVERRIDE;

  enum Method {
    METHOD_MATCH = 0,
    METHOD_OPEN = 1,
  };

 private:
  const int fd_;
};

#endif  // CONTENT_COMMON_FONT_CONFIG_IPC_LINUX_H_
