| Index: chrome/renderer/renderer_glue.cc
|
| ===================================================================
|
| --- chrome/renderer/renderer_glue.cc (revision 81952)
|
| +++ chrome/renderer/renderer_glue.cc (working copy)
|
| @@ -1,312 +0,0 @@
|
| -// 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 embedder's side of random webkit glue functions.
|
| -
|
| -#include "build/build_config.h"
|
| -
|
| -#if defined(OS_WIN)
|
| -#include <windows.h>
|
| -#endif
|
| -
|
| -#include <vector>
|
| -
|
| -#include "base/command_line.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/string_util.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "chrome/common/chrome_version_info.h"
|
| -#include "chrome/common/render_messages.h"
|
| -#include "chrome/common/url_constants.h"
|
| -#include "content/common/clipboard_messages.h"
|
| -#include "content/common/socket_stream_dispatcher.h"
|
| -#include "content/common/view_messages.h"
|
| -#include "content/plugin/npobject_util.h"
|
| -#include "content/renderer/render_thread.h"
|
| -#include "googleurl/src/url_util.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebKitClient.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
|
| -#include "third_party/skia/include/core/SkBitmap.h"
|
| -#include "ui/base/clipboard/clipboard.h"
|
| -#include "ui/base/resource/resource_bundle.h"
|
| -#include "webkit/glue/scoped_clipboard_writer_glue.h"
|
| -#include "webkit/glue/webkit_glue.h"
|
| -#include "webkit/glue/websocketstreamhandle_bridge.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
|
| -
|
| -#if defined(OS_LINUX)
|
| -#include "content/renderer/renderer_sandbox_support_linux.h"
|
| -#endif
|
| -
|
| -// This definition of WriteBitmapFromPixels uses shared memory to communicate
|
| -// across processes.
|
| -void ScopedClipboardWriterGlue::WriteBitmapFromPixels(const void* pixels,
|
| - const gfx::Size& size) {
|
| - // Do not try to write a bitmap more than once
|
| - if (shared_buf_)
|
| - return;
|
| -
|
| - uint32 buf_size = 4 * size.width() * size.height();
|
| -
|
| - // Allocate a shared memory buffer to hold the bitmap bits.
|
| -#if defined(OS_POSIX)
|
| - // On POSIX, we need to ask the browser to create the shared memory for us,
|
| - // since this is blocked by the sandbox.
|
| - base::SharedMemoryHandle shared_mem_handle;
|
| - ViewHostMsg_AllocateSharedMemoryBuffer *msg =
|
| - new ViewHostMsg_AllocateSharedMemoryBuffer(buf_size,
|
| - &shared_mem_handle);
|
| - if (RenderThread::current()->Send(msg)) {
|
| - if (base::SharedMemory::IsHandleValid(shared_mem_handle)) {
|
| - shared_buf_ = new base::SharedMemory(shared_mem_handle, false);
|
| - if (!shared_buf_ || !shared_buf_->Map(buf_size)) {
|
| - NOTREACHED() << "Map failed";
|
| - return;
|
| - }
|
| - } else {
|
| - NOTREACHED() << "Browser failed to allocate shared memory";
|
| - return;
|
| - }
|
| - } else {
|
| - NOTREACHED() << "Browser allocation request message failed";
|
| - return;
|
| - }
|
| -#else // !OS_POSIX
|
| - shared_buf_ = new base::SharedMemory;
|
| - if (!shared_buf_->CreateAndMapAnonymous(buf_size)) {
|
| - NOTREACHED();
|
| - return;
|
| - }
|
| -#endif
|
| -
|
| - // Copy the bits into shared memory
|
| - memcpy(shared_buf_->memory(), pixels, buf_size);
|
| - shared_buf_->Unmap();
|
| -
|
| - ui::Clipboard::ObjectMapParam size_param;
|
| - const char* size_data = reinterpret_cast<const char*>(&size);
|
| - for (size_t i = 0; i < sizeof(gfx::Size); ++i)
|
| - size_param.push_back(size_data[i]);
|
| -
|
| - ui::Clipboard::ObjectMapParams params;
|
| -
|
| - // The first parameter is replaced on the receiving end with a pointer to
|
| - // a shared memory object containing the bitmap. We reserve space for it here.
|
| - ui::Clipboard::ObjectMapParam place_holder_param;
|
| - params.push_back(place_holder_param);
|
| - params.push_back(size_param);
|
| - objects_[ui::Clipboard::CBF_SMBITMAP] = params;
|
| -}
|
| -
|
| -// Define a destructor that makes IPCs to flush the contents to the
|
| -// system clipboard.
|
| -ScopedClipboardWriterGlue::~ScopedClipboardWriterGlue() {
|
| - if (objects_.empty())
|
| - return;
|
| -
|
| - if (shared_buf_) {
|
| - RenderThread::current()->Send(
|
| - new ClipboardHostMsg_WriteObjectsSync(objects_,
|
| - shared_buf_->handle()));
|
| - delete shared_buf_;
|
| - return;
|
| - }
|
| -
|
| - RenderThread::current()->Send(
|
| - new ClipboardHostMsg_WriteObjectsAsync(objects_));
|
| -}
|
| -
|
| -namespace webkit_glue {
|
| -
|
| -void AppendToLog(const char* file, int line, const char* msg) {
|
| - logging::LogMessage(file, line).stream() << msg;
|
| -}
|
| -
|
| -base::StringPiece GetDataResource(int resource_id) {
|
| - return ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id);
|
| -}
|
| -
|
| -#if defined(OS_WIN)
|
| -HCURSOR LoadCursor(int cursor_id) {
|
| - return ResourceBundle::GetSharedInstance().LoadCursor(cursor_id);
|
| -}
|
| -#endif
|
| -
|
| -// Clipboard glue
|
| -
|
| -ui::Clipboard* ClipboardGetClipboard() {
|
| - return NULL;
|
| -}
|
| -
|
| -bool ClipboardIsFormatAvailable(const ui::Clipboard::FormatType& format,
|
| - ui::Clipboard::Buffer buffer) {
|
| - bool result;
|
| - RenderThread::current()->Send(
|
| - new ClipboardHostMsg_IsFormatAvailable(format, buffer, &result));
|
| - return result;
|
| -}
|
| -
|
| -void ClipboardReadAvailableTypes(ui::Clipboard::Buffer buffer,
|
| - std::vector<string16>* types,
|
| - bool* contains_filenames) {
|
| - RenderThread::current()->Send(new ClipboardHostMsg_ReadAvailableTypes(
|
| - buffer, types, contains_filenames));
|
| -}
|
| -
|
| -void ClipboardReadText(ui::Clipboard::Buffer buffer, string16* result) {
|
| - RenderThread::current()->Send(new ClipboardHostMsg_ReadText(buffer, result));
|
| -}
|
| -
|
| -void ClipboardReadAsciiText(ui::Clipboard::Buffer buffer, std::string* result) {
|
| - RenderThread::current()->Send(
|
| - new ClipboardHostMsg_ReadAsciiText(buffer, result));
|
| -}
|
| -
|
| -void ClipboardReadHTML(ui::Clipboard::Buffer buffer, string16* markup,
|
| - GURL* url) {
|
| - RenderThread::current()->Send(
|
| - new ClipboardHostMsg_ReadHTML(buffer, markup, url));
|
| -}
|
| -
|
| -void ClipboardReadImage(ui::Clipboard::Buffer buffer, std::string* data) {
|
| - RenderThread::current()->Send(new ClipboardHostMsg_ReadImage(buffer, data));
|
| -}
|
| -
|
| -bool ClipboardReadData(ui::Clipboard::Buffer buffer, const string16& type,
|
| - string16* data, string16* metadata) {
|
| - bool result = false;
|
| - RenderThread::current()->Send(new ClipboardHostMsg_ReadData(
|
| - buffer, type, &result, data, metadata));
|
| - return result;
|
| -}
|
| -
|
| -bool ClipboardReadFilenames(ui::Clipboard::Buffer buffer,
|
| - std::vector<string16>* filenames) {
|
| - bool result;
|
| - RenderThread::current()->Send(new ClipboardHostMsg_ReadFilenames(
|
| - buffer, &result, filenames));
|
| - return result;
|
| -}
|
| -
|
| -void GetPlugins(bool refresh,
|
| - std::vector<webkit::npapi::WebPluginInfo>* plugins) {
|
| - if (!RenderThread::current()->plugin_refresh_allowed())
|
| - refresh = false;
|
| - RenderThread::current()->Send(new ViewHostMsg_GetPlugins(refresh, plugins));
|
| -}
|
| -
|
| -bool IsProtocolSupportedForMedia(const GURL& url) {
|
| - // If new protocol is to be added here, we need to make sure the response is
|
| - // validated accordingly in the media engine.
|
| - if (url.SchemeIsFile() || url.SchemeIs(chrome::kHttpScheme) ||
|
| - url.SchemeIs(chrome::kHttpsScheme) ||
|
| - url.SchemeIs(chrome::kDataScheme) ||
|
| - url.SchemeIs(chrome::kExtensionScheme) ||
|
| - url.SchemeIs(chrome::kFileSystemScheme) ||
|
| - url.SchemeIs(chrome::kBlobScheme))
|
| - return true;
|
| - return false;
|
| -}
|
| -
|
| -// static factory function
|
| -ResourceLoaderBridge* ResourceLoaderBridge::Create(
|
| - const ResourceLoaderBridge::RequestInfo& request_info) {
|
| - return ChildThread::current()->CreateBridge(request_info);
|
| -}
|
| -
|
| -// static factory function
|
| -WebSocketStreamHandleBridge* WebSocketStreamHandleBridge::Create(
|
| - WebKit::WebSocketStreamHandle* handle,
|
| - WebSocketStreamHandleDelegate* delegate) {
|
| - SocketStreamDispatcher* dispatcher =
|
| - ChildThread::current()->socket_stream_dispatcher();
|
| - return dispatcher->CreateBridge(handle, delegate);
|
| -}
|
| -
|
| -void CloseCurrentConnections() {
|
| - RenderThread::current()->CloseCurrentConnections();
|
| -}
|
| -
|
| -void SetCacheMode(bool enabled) {
|
| - RenderThread::current()->SetCacheMode(enabled);
|
| -}
|
| -
|
| -void ClearCache(bool preserve_ssl_host_info) {
|
| - RenderThread::current()->ClearCache(preserve_ssl_host_info);
|
| -}
|
| -
|
| -void ClearHostResolverCache() {
|
| - RenderThread::current()->ClearHostResolverCache();
|
| -}
|
| -
|
| -void ClearPredictorCache() {
|
| - RenderThread::current()->ClearPredictorCache();
|
| -}
|
| -
|
| -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;
|
| -}
|
| -
|
| -bool IsSingleProcess() {
|
| - return CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess);
|
| -}
|
| -
|
| -void EnableSpdy(bool enable) {
|
| - RenderThread::current()->EnableSpdy(enable);
|
| -}
|
| -
|
| -void UserMetricsRecordAction(const std::string& action) {
|
| - RenderThread::current()->Send(
|
| - new ViewHostMsg_UserMetricsRecordAction(action));
|
| -}
|
| -
|
| -#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
|
| -
|
| -#if defined(OS_LINUX)
|
| -int MatchFontWithFallback(const std::string& face, bool bold,
|
| - bool italic, int charset) {
|
| - return renderer_sandbox_support::MatchFontWithFallback(
|
| - face, bold, italic, charset);
|
| -}
|
| -
|
| -bool GetFontTable(int fd, uint32_t table, uint8_t* output,
|
| - size_t* output_length) {
|
| - return renderer_sandbox_support::GetFontTable(
|
| - fd, table, output, output_length);
|
| -}
|
| -#endif
|
| -
|
| -} // namespace webkit_glue
|
|
|