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

Unified Diff: content/browser/gpu/gpu_process_host.cc

Issue 8774040: Don't make classes derive from ChildProcessHost, and instead have them use it through composition... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years 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: content/browser/gpu/gpu_process_host.cc
===================================================================
--- content/browser/gpu/gpu_process_host.cc (revision 112597)
+++ content/browser/gpu/gpu_process_host.cc (working copy)
@@ -17,6 +17,7 @@
#include "content/browser/gpu/gpu_process_host_ui_shim.h"
#include "content/browser/renderer_host/render_widget_host.h"
#include "content/browser/renderer_host/render_widget_host_view.h"
+#include "content/common/child_process_host.h"
#include "content/common/gpu/gpu_messages.h"
#include "content/gpu/gpu_child_thread.h"
#include "content/gpu/gpu_process.h"
@@ -279,6 +280,27 @@
GpuProcessHost::~GpuProcessHost() {
DCHECK(CalledOnValidThread());
+
+ SendOutstandingReplies();
+ // Located in OnChildDied because OnProcessCrashed suffers from a race
Jói 2011/12/02 17:15:54 update this comment
+ // condition on Linux.
+ UMA_HISTOGRAM_ENUMERATION("GPU.GPUProcessLifetimeEvents",
+ DIED_FIRST_TIME + g_gpu_crash_count,
+ GPU_PROCESS_LIFETIME_EVENT_MAX);
+
+ int exit_code;
+ base::TerminationStatus status = GetChildTerminationStatus(&exit_code);
+ UMA_HISTOGRAM_ENUMERATION("GPU.GPUProcessTerminationStatus",
+ status,
+ base::TERMINATION_STATUS_MAX_ENUM);
+
+ if (status == base::TERMINATION_STATUS_NORMAL_TERMINATION ||
+ status == base::TERMINATION_STATUS_ABNORMAL_TERMINATION) {
+ UMA_HISTOGRAM_ENUMERATION("GPU.GPUProcessExitCode",
+ exit_code,
+ content::RESULT_CODE_LAST_CODE);
+ }
+
#if defined(OS_WIN)
if (gpu_process_)
CloseHandle(gpu_process_);
@@ -299,14 +321,15 @@
}
bool GpuProcessHost::Init() {
- if (!CreateChannel())
+ if (!child_process_host()->CreateChannel())
return false;
if (in_process_) {
CommandLine::ForCurrentProcess()->AppendSwitch(
switches::kDisableGpuWatchdog);
- in_process_gpu_thread_.reset(new GpuMainThread(channel_id()));
+ in_process_gpu_thread_.reset(new GpuMainThread(
+ child_process_host()->channel_id()));
base::Thread::Options options;
#if defined(OS_WIN)
@@ -337,7 +360,7 @@
bool GpuProcessHost::Send(IPC::Message* msg) {
DCHECK(CalledOnValidThread());
- if (opening_channel()) {
+ if (child_process_host()->opening_channel()) {
queued_messages_.push(msg);
return true;
}
@@ -484,10 +507,6 @@
GpuDataManager::GetInstance()->UpdateGpuInfo(gpu_info);
}
-bool GpuProcessHost::CanShutdown() {
- return true;
-}
-
void GpuProcessHost::OnProcessLaunched() {
// Send the GPU process handle to the UI thread before it has to
// respond to any requests to establish a GPU channel. The response
@@ -511,30 +530,6 @@
#endif
}
-void GpuProcessHost::OnChildDied() {
- SendOutstandingReplies();
- // Located in OnChildDied because OnProcessCrashed suffers from a race
- // condition on Linux.
- UMA_HISTOGRAM_ENUMERATION("GPU.GPUProcessLifetimeEvents",
- DIED_FIRST_TIME + g_gpu_crash_count,
- GPU_PROCESS_LIFETIME_EVENT_MAX);
-
- int exit_code;
- base::TerminationStatus status = GetChildTerminationStatus(&exit_code);
- UMA_HISTOGRAM_ENUMERATION("GPU.GPUProcessTerminationStatus",
- status,
- base::TERMINATION_STATUS_MAX_ENUM);
-
- if (status == base::TERMINATION_STATUS_NORMAL_TERMINATION ||
- status == base::TERMINATION_STATUS_ABNORMAL_TERMINATION) {
- UMA_HISTOGRAM_ENUMERATION("GPU.GPUProcessExitCode",
- exit_code,
- content::RESULT_CODE_LAST_CODE);
- }
-
- ChildProcessHost::OnChildDied();
-}
-
void GpuProcessHost::OnProcessCrashed(int exit_code) {
SendOutstandingReplies();
if (++g_gpu_crash_count >= kGpuMaxCrashCount) {
@@ -573,7 +568,8 @@
CommandLine* cmd_line = new CommandLine(exe_path);
cmd_line->AppendSwitchASCII(switches::kProcessType, switches::kGpuProcess);
- cmd_line->AppendSwitchASCII(switches::kProcessChannelID, channel_id());
+ cmd_line->AppendSwitchASCII(switches::kProcessChannelID,
+ child_process_host()->channel_id());
// Propagate relevant command line switches.
static const char* const kSwitchNames[] = {

Powered by Google App Engine
This is Rietveld 408576698