blob: 3832fa82365943d011d9bb2b9cbc24052d40ef69 [file] [log] [blame]
// Copyright 2019 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/ui/views/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);
}