#include "components/performance_manager/graph/process_node_impl.h"
#include <utility>
#include "base/check_op.h"
#include "base/containers/contains.h"
#include "base/memory/raw_ptr.h"
#include "base/trace_event/named_trigger.h"
#include "components/performance_manager/graph/frame_node_impl.h"
#include "components/performance_manager/graph/graph_impl.h"
#include "components/performance_manager/graph/page_node_impl.h"
#include "components/performance_manager/graph/worker_node_impl.h"
#include "components/performance_manager/public/execution_context/execution_context_registry.h"
#include "components/performance_manager/v8_memory/v8_context_tracker.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
namespace performance_manager {
namespace {
content::ProcessType ValidateBrowserChildProcessType(
content::ProcessType process_type) { … }
void FireBackgroundTracingTriggerOnUI(const std::string& trigger_name) { … }
}
ProcessNodeImpl::ProcessNodeImpl(BrowserProcessNodeTag tag)
: … { … }
ProcessNodeImpl::ProcessNodeImpl(RenderProcessHostProxy proxy,
base::TaskPriority priority)
: … { … }
ProcessNodeImpl::ProcessNodeImpl(content::ProcessType process_type,
BrowserChildProcessHostProxy proxy)
: … { … }
ProcessNodeImpl::ProcessNodeImpl(content::ProcessType process_type,
AnyChildProcessHostProxy proxy,
base::TaskPriority priority)
: … { … }
ProcessNodeImpl::~ProcessNodeImpl() { … }
void ProcessNodeImpl::Bind(
mojo::PendingReceiver<mojom::ProcessCoordinationUnit> receiver) { … }
void ProcessNodeImpl::SetMainThreadTaskLoadIsLow(
bool main_thread_task_load_is_low) { … }
void ProcessNodeImpl::OnV8ContextCreated(
mojom::V8ContextDescriptionPtr description,
mojom::IframeAttributionDataPtr iframe_attribution_data) { … }
void ProcessNodeImpl::OnV8ContextDetached(
const blink::V8ContextToken& v8_context_token) { … }
void ProcessNodeImpl::OnV8ContextDestroyed(
const blink::V8ContextToken& v8_context_token) { … }
void ProcessNodeImpl::OnRemoteIframeAttached(
const blink::LocalFrameToken& parent_frame_token,
const blink::RemoteFrameToken& remote_frame_token,
mojom::IframeAttributionDataPtr iframe_attribution_data) { … }
void ProcessNodeImpl::OnRemoteIframeDetached(
const blink::LocalFrameToken& parent_frame_token,
const blink::RemoteFrameToken& remote_frame_token) { … }
void ProcessNodeImpl::FireBackgroundTracingTrigger(
const std::string& trigger_name) { … }
content::ProcessType ProcessNodeImpl::GetProcessType() const { … }
base::ProcessId ProcessNodeImpl::GetProcessId() const { … }
const base::Process& ProcessNodeImpl::GetProcess() const { … }
resource_attribution::ProcessContext ProcessNodeImpl::GetResourceContext()
const { … }
base::TimeTicks ProcessNodeImpl::GetLaunchTime() const { … }
std::optional<int32_t> ProcessNodeImpl::GetExitStatus() const { … }
const std::string& ProcessNodeImpl::GetMetricsName() const { … }
bool ProcessNodeImpl::GetMainThreadTaskLoadIsLow() const { … }
uint64_t ProcessNodeImpl::GetPrivateFootprintKb() const { … }
uint64_t ProcessNodeImpl::GetResidentSetKb() const { … }
RenderProcessHostId ProcessNodeImpl::GetRenderProcessHostId() const { … }
const RenderProcessHostProxy& ProcessNodeImpl::GetRenderProcessHostProxy()
const { … }
const BrowserChildProcessHostProxy&
ProcessNodeImpl::GetBrowserChildProcessHostProxy() const { … }
base::TaskPriority ProcessNodeImpl::GetPriority() const { … }
ProcessNode::ContentTypes ProcessNodeImpl::GetHostedContentTypes() const { … }
ProcessNode::NodeSetView<FrameNodeImpl*> ProcessNodeImpl::frame_nodes() const { … }
ProcessNode::NodeSetView<WorkerNodeImpl*> ProcessNodeImpl::worker_nodes()
const { … }
void ProcessNodeImpl::SetProcessExitStatus(int32_t exit_status) { … }
void ProcessNodeImpl::SetProcessMetricsName(const std::string& metrics_name) { … }
void ProcessNodeImpl::SetProcess(base::Process process,
base::TimeTicks launch_time) { … }
void ProcessNodeImpl::AddFrame(FrameNodeImpl* frame_node) { … }
void ProcessNodeImpl::RemoveFrame(FrameNodeImpl* frame_node) { … }
void ProcessNodeImpl::AddWorker(WorkerNodeImpl* worker_node) { … }
void ProcessNodeImpl::RemoveWorker(WorkerNodeImpl* worker_node) { … }
void ProcessNodeImpl::set_priority(base::TaskPriority priority) { … }
void ProcessNodeImpl::add_hosted_content_type(ContentType content_type) { … }
void ProcessNodeImpl::FireBackgroundTracingTriggerOnUIForTesting(
const std::string& trigger_name) { … }
base::WeakPtr<ProcessNodeImpl> ProcessNodeImpl::GetWeakPtrOnUIThread() { … }
base::WeakPtr<ProcessNodeImpl> ProcessNodeImpl::GetWeakPtr() { … }
void ProcessNodeImpl::SetProcessImpl(base::Process process,
base::ProcessId new_pid,
base::TimeTicks launch_time) { … }
ProcessNode::NodeSetView<const FrameNode*> ProcessNodeImpl::GetFrameNodes()
const { … }
ProcessNode::NodeSetView<const WorkerNode*> ProcessNodeImpl::GetWorkerNodes()
const { … }
void ProcessNodeImpl::OnAllFramesInProcessFrozen() { … }
void ProcessNodeImpl::OnJoiningGraph() { … }
void ProcessNodeImpl::OnBeforeLeavingGraph() { … }
void ProcessNodeImpl::RemoveNodeAttachedData() { … }
}