| // 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); | |
| } | |
| } |