blob: ca778055cc7bbe379bc98ee159f29a5a62dfb9f2 [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/ui_devtools/devtools_process_observer.h"
#include "base/process/process.h"
#include "components/ui_devtools/tracing_agent.h"
#include "content/public/browser/child_process_data.h"
#include "content/public/browser/child_process_termination_info.h"
#include "content/public/common/process_type.h"
DevtoolsProcessObserver::DevtoolsProcessObserver(
ui_devtools::TracingAgent* agent)
: tracing_agent_(agent) {
DCHECK(tracing_agent_);
BrowserChildProcessObserver::Add(this);
}
DevtoolsProcessObserver::~DevtoolsProcessObserver() {
BrowserChildProcessObserver::Remove(this);
}
void DevtoolsProcessObserver::BrowserChildProcessLaunchedAndConnected(
const content::ChildProcessData& data) {
if (data.process_type == content::PROCESS_TYPE_GPU) {
tracing_agent_->set_gpu_pid(data.GetProcess().Pid());
}
}
void DevtoolsProcessObserver::BrowserChildProcessHostDisconnected(
const content::ChildProcessData& data) {
if (data.process_type == content::PROCESS_TYPE_GPU) {
tracing_agent_->set_gpu_pid(base::kNullProcessId);
}
}
void DevtoolsProcessObserver::BrowserChildProcessCrashed(
const content::ChildProcessData& data,
const content::ChildProcessTerminationInfo& info) {
if (data.process_type == content::PROCESS_TYPE_GPU) {
tracing_agent_->set_gpu_pid(base::kNullProcessId);
}
}
void DevtoolsProcessObserver::BrowserChildProcessKilled(
const content::ChildProcessData& data,
const content::ChildProcessTerminationInfo& info) {
if (data.process_type == content::PROCESS_TYPE_GPU) {
tracing_agent_->set_gpu_pid(base::kNullProcessId);
}
}