Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2412)

Unified Diff: chrome/browser/ppapi_plugin_process_host.cc

Issue 3915002: Out of process Pepper (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ppapi_plugin_process_host.cc
===================================================================
--- chrome/browser/ppapi_plugin_process_host.cc (revision 0)
+++ chrome/browser/ppapi_plugin_process_host.cc (revision 0)
@@ -0,0 +1,101 @@
+// Copyright (c) 2010 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 "chrome/browser/ppapi_plugin_process_host.h"
+
+#include "base/command_line.h"
+#include "base/file_path.h"
+#include "base/process_util.h"
+#include "chrome/browser/renderer_host/resource_message_filter.h"
+#include "chrome/common/chrome_switches.h"
+#include "chrome/common/render_messages.h"
+#include "ipc/ipc_channel_handle.h"
+#include "ipc/ipc_switches.h"
+#include "third_party/ppapi/proxy/ppapi_messages.h"
+
+PpapiPluginProcessHost::PpapiPluginProcessHost(ResourceMessageFilter* filter)
+ : BrowserChildProcessHost(ChildProcessInfo::PPAPI_PLUGIN_PROCESS,
+ filter->resource_dispatcher_host()),
+ filter_(filter) {
+}
+
+PpapiPluginProcessHost::~PpapiPluginProcessHost() {
+}
+
+void PpapiPluginProcessHost::Init(const FilePath& path,
+ IPC::Message* reply_msg) {
+ plugin_path_ = path;
+ reply_msg_.reset(reply_msg);
+
+ if (!CreateChannel()) {
+ ReplyToRenderer(IPC::ChannelHandle());
+ return;
+ }
+
+ const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess();
+ CommandLine::StringType plugin_launcher =
+ browser_command_line.GetSwitchValueNative(switches::kPpapiPluginLauncher);
+
+ FilePath exe_path = ChildProcessHost::GetChildPath(plugin_launcher.empty());
+ if (exe_path.empty()) {
+ ReplyToRenderer(IPC::ChannelHandle());
+ return;
+ }
+
+ CommandLine* cmd_line = new CommandLine(exe_path);
+ cmd_line->AppendSwitchASCII(switches::kProcessType,
+ switches::kPpapiPluginProcess);
+ cmd_line->AppendSwitchASCII(switches::kProcessChannelID, channel_id());
+
+ if (!plugin_launcher.empty())
+ cmd_line->PrependWrapper(plugin_launcher);
+
+ Launch(
+#if defined(OS_WIN)
+ FilePath(),
+#elif defined(OS_POSIX)
+ true, base::environment_vector(),
+#endif
+ cmd_line);
+}
+
+void PpapiPluginProcessHost::OnProcessLaunched() {
+}
+
+URLRequestContext* PpapiPluginProcessHost::GetRequestContext(
+ uint32 request_id,
+ const ViewHostMsg_Resource_Request& request_data) {
+ return NULL;
+}
+
+void PpapiPluginProcessHost::OnMessageReceived(const IPC::Message& msg) {
+ IPC_BEGIN_MESSAGE_MAP(PpapiPluginProcessHost, msg)
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PluginLoaded, OnPluginLoaded)
+ IPC_MESSAGE_UNHANDLED_ERROR();
+ IPC_END_MESSAGE_MAP()
+}
+
+void PpapiPluginProcessHost::OnChannelConnected(int32 peer_pid) {
+ PpapiMsg_LoadPlugin* msg = new PpapiMsg_LoadPlugin(plugin_path_,
+ filter_->id());
+ if (!Send(msg)) // Just send an empty handle on failure.
+ ReplyToRenderer(IPC::ChannelHandle());
+ // This function will result in OnChannelCreated getting called to finish.
+}
+
+void PpapiPluginProcessHost::OnChannelError() {
+ if (reply_msg_.get())
+ ReplyToRenderer(IPC::ChannelHandle());
+}
+
+void PpapiPluginProcessHost::OnPluginLoaded(const IPC::ChannelHandle& handle) {
+ ReplyToRenderer(handle);
+}
+
+void PpapiPluginProcessHost::ReplyToRenderer(const IPC::ChannelHandle& handle) {
+ DCHECK(reply_msg_.get());
+ ViewHostMsg_OpenChannelToPepperPlugin::WriteReplyParams(reply_msg_.get(),
+ handle);
+ filter_->Send(reply_msg_.release());
+}
Property changes on: chrome/browser/ppapi_plugin_process_host.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « chrome/browser/ppapi_plugin_process_host.h ('k') | chrome/browser/renderer_host/browser_render_process_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698