Index: ppapi/nacl_irt/irt_ppapi.cc |
diff --git a/ppapi/nacl_irt/irt_ppapi.cc b/ppapi/nacl_irt/irt_ppapi.cc |
index 1d41f518c4fabd535979bc1c240734fa06acfb7a..466573ce68b38321e08b89bad3be3ead839d0e49 100644 |
--- a/ppapi/nacl_irt/irt_ppapi.cc |
+++ b/ppapi/nacl_irt/irt_ppapi.cc |
@@ -6,6 +6,7 @@ |
#include "native_client/src/trusted/service_runtime/include/sys/unistd.h" |
#include "native_client/src/untrusted/irt/irt.h" |
#include "native_client/src/untrusted/irt/irt_private.h" |
+#include "ppapi/nacl_irt/irt_manifest.h" |
#include "ppapi/nacl_irt/irt_ppapi.h" |
#include "ppapi/nacl_irt/plugin_main.h" |
#include "ppapi/nacl_irt/public/irt_ppapi.h" |
@@ -46,19 +47,35 @@ static int ppapihook_pnacl_private_filter(void) { |
return pnacl_mode; |
} |
+static const nacl_irt_resource_open kIrtResourceOpen = { |
+ ppapi::IrtOpenResource, |
+}; |
+ |
+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; |
+} |
+ |
static const struct nacl_irt_interface irt_interfaces[] = { |
{ NACL_IRT_PPAPIHOOK_v0_1, &nacl_irt_ppapihook, sizeof(nacl_irt_ppapihook), |
NULL }, |
{ NACL_IRT_PPAPIHOOK_PNACL_PRIVATE_v0_1, |
&nacl_irt_ppapihook_pnacl_private, sizeof(nacl_irt_ppapihook_pnacl_private), |
ppapihook_pnacl_private_filter }, |
+ { NACL_IRT_RESOURCE_OPEN_v0_1, &kIrtResourceOpen, |
+ sizeof(kIrtResourceOpen), not_pnacl_filter }, |
}; |
size_t chrome_irt_query(const char* interface_ident, |
void* table, size_t tablesize) { |
- size_t result = nacl_irt_query_core(interface_ident, table, 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_list(interface_ident, table, tablesize, |
- irt_interfaces, sizeof(irt_interfaces)); |
+ return nacl_irt_query_core(interface_ident, table, tablesize); |
} |