blob: 126625a6e03a2fa3b6c4963ed334ee2ac249bd72 [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/performance_manager/public/graph/graph.h"
#include "base/check_op.h"
#include "base/dcheck_is_on.h"
#include "base/sequence_checker.h"
namespace performance_manager {
Graph::Graph() = default;
Graph::~Graph() = default;
GraphOwned::GraphOwned() {
// It's valid to create a GraphOwned object on the main thread and pass it to
// the PM sequence with PerformanceManager::PassToGraph().
DETACH_FROM_SEQUENCE(sequence_checker_);
}
GraphOwned::~GraphOwned() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Must be removed from the graph before destruction.
CHECK_EQ(graph_, nullptr);
}
void GraphOwned::PassToGraphImpl(Graph* graph) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
CHECK_EQ(graph_, nullptr);
graph_ = graph;
OnPassedToGraph(graph);
}
Graph* GraphOwned::GetOwningGraph() const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
return graph_.get();
}
void GraphOwned::TakeFromGraphImpl(Graph* graph) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
CHECK_EQ(graph_, graph);
OnTakenFromGraph(graph);
graph_ = nullptr;
}
GraphOwnedDefaultImpl::GraphOwnedDefaultImpl() = default;
GraphOwnedDefaultImpl::~GraphOwnedDefaultImpl() = default;
} // namespace performance_manager