diff options
Diffstat (limited to 'chrome/renderer/chrome_renderer_glue.cc')
-rw-r--r-- | chrome/renderer/chrome_renderer_glue.cc | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/chrome/renderer/chrome_renderer_glue.cc b/chrome/renderer/chrome_renderer_glue.cc new file mode 100644 index 0000000..eabe492 --- /dev/null +++ b/chrome/renderer/chrome_renderer_glue.cc @@ -0,0 +1,58 @@ +// Copyright (c) 2011 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 the Chrome-specific embedder's side of random webkit glue +// functions. + +#include "base/utf_string_conversions.h" +#include "chrome/common/chrome_version_info.h" +#include "chrome/common/render_messages.h" +#include "content/renderer/render_thread.h" +#include "webkit/glue/webkit_glue.h" + +#if !defined(DISABLE_NACL) +#include "native_client/src/shared/imc/nacl_imc.h" +#include "native_client/src/trusted/plugin/nacl_entry_points.h" +#endif + +namespace webkit_glue { + +void UserMetricsRecordAction(const std::string& action) { + RenderThread::current()->Send( + new ViewHostMsg_UserMetricsRecordAction(action)); +} + +std::string GetProductVersion() { + chrome::VersionInfo version_info; + std::string product("Chrome/"); + product += version_info.is_valid() ? version_info.Version() + : "0.0.0.0"; + return product; +} + +#if !defined(DISABLE_NACL) +bool LaunchSelLdr(const char* alleged_url, int socket_count, void* imc_handles, + void* nacl_process_handle, int* nacl_process_id) { + std::vector<nacl::FileDescriptor> sockets; + base::ProcessHandle nacl_process; + if (!RenderThread::current()->Send( + new ViewHostMsg_LaunchNaCl( + ASCIIToWide(alleged_url), + socket_count, + &sockets, + &nacl_process, + reinterpret_cast<base::ProcessId*>(nacl_process_id)))) { + return false; + } + CHECK(static_cast<int>(sockets.size()) == socket_count); + for (int i = 0; i < socket_count; i++) { + static_cast<nacl::Handle*>(imc_handles)[i] = + nacl::ToNativeHandle(sockets[i]); + } + *static_cast<nacl::Handle*>(nacl_process_handle) = nacl_process; + return true; +} +#endif + +} // namespace webkit_glue |