1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CONTENT_PUBLIC_COMMON_CHILD_PROCESS_SANDBOX_SUPPORT_LINUX_H_
6#define CONTENT_PUBLIC_COMMON_CHILD_PROCESS_SANDBOX_SUPPORT_LINUX_H_
7
8#include <stdint.h>
9#include <string>
10
11#include "content/common/content_export.h"
12#include "ppapi/c/trusted/ppb_browser_font_trusted.h"
13
14namespace content {
15
16// Returns a file descriptor for a shared memory segment.  The
17// executable flag indicates that the caller intends to use mprotect
18// with PROT_EXEC after making a mapping, but not that it intends to
19// mmap with PROT_EXEC in the first place.  (Some systems, such as
20// ChromeOS, disallow PROT_EXEC in mmap on /dev/shm files but do allow
21// PROT_EXEC in mprotect on mappings from such files.  This function
22// can yield an object that has that constraint.)
23CONTENT_EXPORT int MakeSharedMemorySegmentViaIPC(size_t length,
24                                                 bool executable);
25
26// Return a read-only file descriptor to the font which best matches the given
27// properties or -1 on failure.
28//   charset: specifies the language(s) that the font must cover. See
29// render_sandbox_host_linux.cc for more information.
30// fallback_family: If not set to PP_BROWSERFONT_TRUSTED_FAMILY_DEFAULT, font
31// selection should fall back to generic Windows font names like Arial and
32// Times New Roman.
33CONTENT_EXPORT int MatchFontWithFallback(
34    const std::string& face,
35    bool bold,
36    bool italic,
37    int charset,
38    PP_BrowserFont_Trusted_Family fallback_family);
39
40// GetFontTable loads a specified font table from an open SFNT file.
41//   fd: a file descriptor to the SFNT file. The position doesn't matter.
42//   table_tag: the table tag in *big-endian* format, or 0 for the entire font.
43//   offset: offset into the table or entire font where loading should start.
44//     The offset must be between 0 and 1 GB - 1.
45//   output: a buffer of size output_length that gets the data.  can be 0, in
46//     which case output_length will be set to the required size in bytes.
47//   output_length: size of output, if it's not 0.
48//
49//   returns: true on success.
50CONTENT_EXPORT bool GetFontTable(int fd, uint32_t table_tag, off_t offset,
51                                 uint8_t* output, size_t* output_length);
52
53// Sends a zygote child "ping" message to browser process via socket |fd|.
54// Returns true on success.
55CONTENT_EXPORT bool SendZygoteChildPing(int fd);
56
57};  // namespace content
58
59#endif  // CONTENT_PUBLIC_COMMON_CHILD_PROCESS_SANDBOX_SUPPORT_LINUX_H_
60