|  | // Copyright 2014 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. | 
|  |  | 
|  | // This file provides forward declarations for private XPC symbols. | 
|  |  | 
|  | #ifndef SANDBOX_MAC_XPC_H_ | 
|  | #define SANDBOX_MAC_XPC_H_ | 
|  |  | 
|  | #include <AvailabilityMacros.h> | 
|  | #include <mach/mach.h> | 
|  | #include <bsm/libbsm.h> | 
|  | #include <xpc/xpc.h> | 
|  |  | 
|  | #include "sandbox/sandbox_export.h" | 
|  |  | 
|  | // Declare private types. | 
|  | extern "C" { | 
|  | typedef struct _xpc_pipe_s* xpc_pipe_t; | 
|  | }  // extern "C" | 
|  |  | 
|  | #if defined(MAC_OS_X_VERSION_10_7) && \ | 
|  | MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7 | 
|  | // Redeclare methods that only exist on 10.7+ to suppress | 
|  | // -Wpartial-availability warnings. | 
|  | extern "C" { | 
|  | void xpc_dictionary_set_int64(xpc_object_t xdict, | 
|  | const char* key, | 
|  | int64_t value); | 
|  | void xpc_release(xpc_object_t object); | 
|  | bool xpc_dictionary_get_bool(xpc_object_t xdict, const char* key); | 
|  | int64_t xpc_dictionary_get_int64(xpc_object_t xdict, const char* key); | 
|  | const char* xpc_dictionary_get_string(xpc_object_t xdict, const char* key); | 
|  | uint64_t xpc_dictionary_get_uint64(xpc_object_t xdict, const char* key); | 
|  | void xpc_dictionary_set_uint64(xpc_object_t xdict, | 
|  | const char* key, | 
|  | uint64_t value); | 
|  | void xpc_dictionary_set_string(xpc_object_t xdict, const char* key, | 
|  | const char* string); | 
|  | xpc_object_t xpc_dictionary_create(const char* const* keys, | 
|  | const xpc_object_t* values, | 
|  | size_t count); | 
|  | xpc_object_t xpc_dictionary_create_reply(xpc_object_t original); | 
|  | xpc_object_t xpc_dictionary_get_value(xpc_object_t xdict, const char* key); | 
|  | char* xpc_copy_description(xpc_object_t object); | 
|  | }  // extern "C" | 
|  | #endif | 
|  |  | 
|  | // Signatures for private XPC functions. | 
|  | extern "C" { | 
|  | // Dictionary manipulation. | 
|  | void xpc_dictionary_set_mach_send(xpc_object_t dictionary, | 
|  | const char* name, | 
|  | mach_port_t port); | 
|  | void xpc_dictionary_get_audit_token(xpc_object_t dictionary, | 
|  | audit_token_t* token); | 
|  |  | 
|  | // Raw object getters. | 
|  | mach_port_t xpc_mach_send_get_right(xpc_object_t value); | 
|  |  | 
|  | // Pipe methods. | 
|  | xpc_pipe_t xpc_pipe_create_from_port(mach_port_t port, int flags); | 
|  | int xpc_pipe_receive(mach_port_t port, xpc_object_t* message); | 
|  | int xpc_pipe_routine(xpc_pipe_t pipe, | 
|  | xpc_object_t request, | 
|  | xpc_object_t* reply); | 
|  | int xpc_pipe_routine_reply(xpc_object_t reply); | 
|  | int xpc_pipe_simpleroutine(xpc_pipe_t pipe, xpc_object_t message); | 
|  | int xpc_pipe_routine_forward(xpc_pipe_t forward_to, xpc_object_t request); | 
|  | }  // extern "C" | 
|  |  | 
|  | #endif  // SANDBOX_MAC_XPC_H_ |