| Index: ppapi/nacl_irt/irt_interfaces.cc
|
| diff --git a/ppapi/nacl_irt/irt_interfaces.cc b/ppapi/nacl_irt/irt_interfaces.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..77ce9d8415e03f277b0853b40c01fa8373cfc949
|
| --- /dev/null
|
| +++ b/ppapi/nacl_irt/irt_interfaces.cc
|
| @@ -0,0 +1,70 @@
|
| +// Copyright 2015 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 "ppapi/nacl_irt/irt_interfaces.h"
|
| +
|
| +#include <unistd.h>
|
| +
|
| +#include "build/build_config.h"
|
| +#include "native_client/src/public/irt_core.h"
|
| +#include "native_client/src/trusted/service_runtime/include/sys/unistd.h"
|
| +#include "native_client/src/untrusted/irt/irt.h"
|
| +#include "ppapi/nacl_irt/irt_manifest.h"
|
| +#include "ppapi/nacl_irt/public/irt_ppapi.h"
|
| +#include "ppapi/native_client/src/untrusted/pnacl_irt_shim/irt_shim_ppapi.h"
|
| +
|
| +#if defined(OS_NACL_SFI)
|
| +static int ppapihook_pnacl_private_filter(void) {
|
| + int pnacl_mode = sysconf(NACL_ABI__SC_NACL_PNACL_MODE);
|
| + if (pnacl_mode == -1)
|
| + return 0;
|
| + return pnacl_mode;
|
| +}
|
| +#endif
|
| +
|
| +static const nacl_irt_resource_open kIrtResourceOpen = {
|
| + ppapi::IrtOpenResource,
|
| +};
|
| +
|
| +#if defined(OS_NACL_SFI)
|
| +static int not_pnacl_filter(void) {
|
| + int pnacl_mode = sysconf(NACL_ABI__SC_NACL_PNACL_MODE);
|
| + if (pnacl_mode == -1)
|
| + return 0;
|
| + return !pnacl_mode;
|
| +}
|
| +#endif
|
| +
|
| +static const struct nacl_irt_interface irt_interfaces[] = {
|
| + { NACL_IRT_PPAPIHOOK_v0_1, &nacl_irt_ppapihook, sizeof(nacl_irt_ppapihook),
|
| + NULL },
|
| +#if defined(OS_NACL_SFI)
|
| + { NACL_IRT_PPAPIHOOK_PNACL_PRIVATE_v0_1,
|
| + &nacl_irt_ppapihook_pnacl_private, sizeof(nacl_irt_ppapihook_pnacl_private),
|
| + ppapihook_pnacl_private_filter },
|
| +#endif
|
| + { NACL_IRT_RESOURCE_OPEN_v0_1, &kIrtResourceOpen,
|
| + sizeof(kIrtResourceOpen),
|
| +#if defined(OS_NACL_SFI)
|
| + not_pnacl_filter,
|
| +#else
|
| + // If we change PNaCl to use Non-SFI Mode on the open web,
|
| + // we should add a filter here.
|
| + NULL,
|
| +#endif
|
| + },
|
| +};
|
| +
|
| +size_t chrome_irt_query(const char* interface_ident,
|
| + void* table, size_t tablesize) {
|
| + size_t result = nacl_irt_query_list(interface_ident,
|
| + table,
|
| + tablesize,
|
| + irt_interfaces,
|
| + sizeof(irt_interfaces));
|
| + if (result != 0)
|
| + return result;
|
| +
|
| + return nacl_irt_query_core(interface_ident, table, tablesize);
|
| +}
|
|
|