chromium/components/performance_manager/graph/page_node_impl.h

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_PERFORMANCE_MANAGER_GRAPH_PAGE_NODE_IMPL_H_
#define COMPONENTS_PERFORMANCE_MANAGER_GRAPH_PAGE_NODE_IMPL_H_

#include <memory>
#include <optional>
#include <string>

#include "base/containers/enum_set.h"
#include "base/containers/flat_set.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/time/time.h"
#include "base/types/pass_key.h"
#include "base/types/token_type.h"
#include "build/build_config.h"
#include "components/performance_manager/decorators/page_aggregator_data.h"
#include "components/performance_manager/decorators/page_load_tracker_decorator_data.h"
#include "components/performance_manager/freezing/frozen_data.h"
#include "components/performance_manager/graph/node_attached_data_storage.h"
#include "components/performance_manager/graph/node_base.h"
#include "components/performance_manager/public/graph/page_node.h"
#include "url/gurl.h"

#if !BUILDFLAG(IS_ANDROID)
#include "components/performance_manager/decorators/site_data_node_data.h"
#endif

namespace performance_manager {

class FrameNodeImpl;
class FrozenFrameAggregator;

// The starting state of various boolean properties of the PageNode.
enum class PagePropertyFlag {};
PagePropertyFlags;

class PageNodeImpl
    : public PublicNodeImpl<PageNodeImpl, PageNode>,
      public TypedNodeBase<PageNodeImpl, PageNode, PageNodeObserver>,
      public SupportsNodeInlineData<PageLoadTrackerDecoratorData,
                                    PageAggregatorData,
#if !BUILDFLAG(IS_ANDROID)
                                    SiteDataNodeData,
#endif
                                    FrozenData,
                                    // Keep this last to avoid merge conflicts.
                                    NodeAttachedDataStorage> {};

}  // namespace performance_manager

#endif  // COMPONENTS_PERFORMANCE_MANAGER_GRAPH_PAGE_NODE_IMPL_H_