summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authorbbudge@chromium.org <bbudge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-15 22:15:53 +0000
committerbbudge@chromium.org <bbudge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-15 22:15:53 +0000
commit3375e1a876e293d8acec655fb97273399ef46091 (patch)
treea7cc81377be61f901bbc093462af182f8a7cfff2 /base
parentced8e8d8ccea289ce8dde43aa04617f417f63596 (diff)
downloadchromium_src-3375e1a876e293d8acec655fb97273399ef46091.zip
chromium_src-3375e1a876e293d8acec655fb97273399ef46091.tar.gz
chromium_src-3375e1a876e293d8acec655fb97273399ef46091.tar.bz2
Revert 142482 - Add untrusted NaCl build for PPAPI proxy.
This patch refactors ppapi_shared.gypi and ppapi_proxy.gypi into proper includes, adds ppapi_shared_untrusted and ppapi_proxy_untrusted .gyp files, and integrates them into the nacl_irt build (ppapi/native_client/native_client.gyp). In order to build without link errors, it includes our plugin side initialization of PluginDispatcher, and a PpapiPluginMain definition. When the 'build_ppapi_ipc_proxy_untrusted' gyp flag is set to '1', this will build a working NaCl IRT using the Chrome IPC proxy. BUG=116317 TEST=compiles, runs HelloWorld and GetURL SDK examples. Review URL: https://chromiumcodereview.appspot.com/10546140 TBR=bbudge@chromium.org Review URL: https://chromiumcodereview.appspot.com/10565012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@142494 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r--base/base.gypi3
-rw-r--r--base/base_untrusted.gyp4
-rw-r--r--base/rand_util_nacl.cc53
3 files changed, 57 insertions, 3 deletions
diff --git a/base/base.gypi b/base/base.gypi
index 22aeda7..2f01f53 100644
--- a/base/base.gypi
+++ b/base/base.gypi
@@ -286,6 +286,7 @@
'property_bag.h',
'rand_util.cc',
'rand_util.h',
+ 'rand_util_nacl.cc',
'rand_util_posix.cc',
'rand_util_win.cc',
'safe_strerror_posix.cc',
@@ -524,8 +525,6 @@
'process_posix.cc',
'process_util.cc',
'process_util_posix.cc',
- 'rand_util.cc',
- 'rand_util_posix.cc',
'scoped_native_library.cc',
'scoped_temp_dir.cc',
'shared_memory_posix.cc',
diff --git a/base/base_untrusted.gyp b/base/base_untrusted.gyp
index 44baaa1..16aef58 100644
--- a/base/base_untrusted.gyp
+++ b/base/base_untrusted.gyp
@@ -11,7 +11,7 @@
'base.gypi',
],
'conditions': [
- ['disable_nacl==0 and disable_nacl_untrusted==0', {
+ ['disable_nacl_untrusted==0', {
'targets': [
{
'target_name': 'base_untrusted',
@@ -32,6 +32,8 @@
},
'dependencies': [
'<(DEPTH)/native_client/tools.gyp:prep_toolchain',
+ '<(DEPTH)/native_client/src/untrusted/pthread/pthread.gyp:pthread_lib',
+ '<(DEPTH)/native_client/src/untrusted/nacl/nacl.gyp:nacl_lib_newlib',
],
},
],
diff --git a/base/rand_util_nacl.cc b/base/rand_util_nacl.cc
new file mode 100644
index 0000000..718da05
--- /dev/null
+++ b/base/rand_util_nacl.cc
@@ -0,0 +1,53 @@
+// 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.
+
+#include "base/rand_util.h"
+
+#include "base/lazy_instance.h"
+#include "base/logging.h"
+
+// TODO(bbudge) Replace this with a proper system header file when NaCl
+// provides one.
+#include "native_client/src/untrusted/irt/irt.h"
+
+namespace {
+
+// Create a wrapper class so we can cache the NaCl random number interface.
+class URandomInterface {
+ public:
+ URandomInterface() {
+ size_t result = nacl_interface_query(NACL_IRT_RANDOM_v0_1,
+ &interface_,
+ sizeof(interface_));
+ DCHECK_EQ(result, sizeof(interface_)) << "Can't get random interface.";
+ }
+
+ uint64 get_random_bytes() const {
+ size_t nbytes;
+ uint64 result;
+ int error = interface_.get_random_bytes(&result,
+ sizeof(result),
+ &nbytes);
+ DCHECK_EQ(error, 0);
+ DCHECK_EQ(nbytes, sizeof(result));
+ return result;
+ }
+
+ private:
+ struct nacl_irt_random interface_;
+};
+
+base::LazyInstance<URandomInterface> g_urandom_interface =
+ LAZY_INSTANCE_INITIALIZER;
+
+} // namespace
+
+namespace base {
+
+uint64 RandUint64() {
+ return g_urandom_interface.Pointer()->get_random_bytes();
+}
+
+} // namespace base
+