blob: 863d33b17d215c9c031406e0c0e9df06fee0c69c [file] [log] [blame]
// Copyright 2018 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/performance_manager/graph/system_node_impl.h"
#include <algorithm>
#include <iterator>
#include "base/containers/flat_set.h"
#include "base/process/process_handle.h"
#include "components/performance_manager/graph/frame_node_impl.h"
#include "components/performance_manager/graph/graph_impl.h"
#include "components/performance_manager/graph/graph_impl_operations.h"
#include "components/performance_manager/graph/page_node_impl.h"
#include "components/performance_manager/graph/process_node_impl.h"
namespace performance_manager {
SystemNodeImpl::SystemNodeImpl() {
memory_pressure_listener_ = std::make_unique<base::MemoryPressureListener>(
FROM_HERE, base::BindRepeating(&SystemNodeImpl::OnMemoryPressure,
base::Unretained(this)));
}
SystemNodeImpl::~SystemNodeImpl() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
}
void SystemNodeImpl::RemoveNodeAttachedData() {}
void SystemNodeImpl::OnProcessMemoryMetricsAvailable() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
for (auto* observer : GetObservers())
observer->OnProcessMemoryMetricsAvailable(this);
}
void SystemNodeImpl::OnMemoryPressure(MemoryPressureLevel new_level) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
for (auto* observer : GetObservers()) {
observer->OnBeforeMemoryPressure(new_level);
}
for (auto* observer : GetObservers()) {
observer->OnMemoryPressure(new_level);
}
}
} // namespace performance_manager