#include "components/performance_manager/public/decorators/site_data_recorder.h"
#include "base/memory/raw_ptr.h"
#include "base/notreached.h"
#include "base/time/time.h"
#include "components/performance_manager/graph/node_inline_data.h"
#include "components/performance_manager/graph/page_node_impl.h"
#include "components/performance_manager/persistence/site_data/site_data_cache.h"
#include "components/performance_manager/persistence/site_data/site_data_cache_factory.h"
#include "components/performance_manager/persistence/site_data/site_data_writer.h"
#include "components/performance_manager/public/persistence/site_data/site_data_reader.h"
namespace performance_manager {
namespace {
constexpr base::TimeDelta kTitleOrFaviconChangePostLoadGracePeriod = …;
constexpr base::TimeDelta kFeatureUsagePostBackgroundGracePeriod = …;
SiteDataRecorder* g_site_data_recorder = …;
TabVisibility GetPageNodeVisibility(const PageNode* page_node) { … }
class DefaultHeuristics final : public SiteDataRecorderHeuristics { … };
SiteDataNodeData& GetSiteDataNodeDataFromPageNode(const PageNode* page_node) { … }
}
SiteDataRecorder::SiteDataRecorder()
: … { … }
SiteDataRecorder::~SiteDataRecorder() = default;
void SiteDataRecorder::OnPassedToGraph(Graph* graph) { … }
void SiteDataRecorder::OnTakenFromGraph(Graph* graph) { … }
void SiteDataRecorder::OnPageNodeAdded(const PageNode* page_node) { … }
void SiteDataRecorder::OnBeforePageNodeRemoved(const PageNode* page_node) { … }
void SiteDataRecorder::OnMainFrameUrlChanged(const PageNode* page_node) { … }
void SiteDataRecorder::OnLoadingStateChanged(
const PageNode* page_node,
PageNode::LoadingState previous_state) { … }
void SiteDataRecorder::OnIsVisibleChanged(const PageNode* page_node) { … }
void SiteDataRecorder::OnIsAudibleChanged(const PageNode* page_node) { … }
void SiteDataRecorder::OnTitleUpdated(const PageNode* page_node) { … }
void SiteDataRecorder::OnFaviconUpdated(const PageNode* page_node) { … }
void SiteDataRecorder::SetHeuristicsImplementationForTesting(
std::unique_ptr<SiteDataRecorderHeuristics> heuristics) { … }
void SiteDataRecorder::RegisterObservers(Graph* graph) { … }
void SiteDataRecorder::UnregisterObservers(Graph* graph) { … }
void SiteDataRecorder::SetPageNodeDataCache(const PageNode* page_node) { … }
bool SiteDataRecorderHeuristics::DefaultIsLoadedIdle(
PageNode::LoadingState loading_state) { … }
bool SiteDataRecorderHeuristics::DefaultIsInBackground(
const PageNode* page_node) { … }
bool SiteDataRecorderHeuristics::DefaultIsOutsideLoadingGracePeriod(
const PageNode* page_node,
FeatureType feature_type,
base::TimeDelta time_since_load) { … }
bool SiteDataRecorderHeuristics::DefaultIsOutsideBackgroundingGracePeriod(
const PageNode* page_node,
FeatureType feature_type,
base::TimeDelta time_since_backgrounding) { … }
const SiteDataRecorder::Data& SiteDataRecorder::Data::FromPageNode(
const PageNode* page_node) { … }
SiteDataRecorder::Data& SiteDataRecorder::Data::GetForTesting(
const PageNode* page_node) { … }
SiteDataReader* SiteDataRecorder::Data::GetReaderForPageNode(
const PageNode* page_node) { … }
}