#include "components/performance_manager/public/user_tuning/tab_revisit_tracker.h"
#include <algorithm>
#include "base/check.h"
#include "base/metrics/histogram_functions.h"
#include "base/numerics/safe_conversions.h"
#include "services/metrics/public/cpp/metrics_utils.h"
#include "services/metrics/public/cpp/ukm_builders.h"
#include "services/metrics/public/cpp/ukm_recorder.h"
namespace performance_manager {
namespace {
constexpr base::TimeDelta kMinTime = …;
constexpr base::TimeDelta kMaxTime = …;
constexpr double kTimeBucketSpacing = …;
int64_t GetLinearCappedBucket(int64_t sample, int64_t max) { … }
int64_t StateToSample(TabRevisitTracker::State state) { … }
void DoRecordUkm(TabRevisitTracker::StateBundle previous_state,
TabRevisitTracker::StateBundle new_state,
ukm::SourceId source_id) { … }
}
class TabRevisitTracker::UkmSourceIdReadyRecorder { … };
TabRevisitTracker::TabRevisitTracker() = default;
TabRevisitTracker::~TabRevisitTracker() = default;
TabRevisitTracker::StateBundle TabRevisitTracker::GetStateForTabHandle(
const TabPageDecorator::TabHandle* tab_handle) { … }
void TabRevisitTracker::RecordRevisitHistograms(
const TabPageDecorator::TabHandle* tab_handle) { … }
void TabRevisitTracker::RecordCloseHistograms(
const TabPageDecorator::TabHandle* tab_handle) { … }
void TabRevisitTracker::RecordStateChangeUkmAndUpdateStateBundle(
const TabPageDecorator::TabHandle* tab_handle,
StateBundle new_state_bundle) { … }
TabRevisitTracker::StateBundle TabRevisitTracker::CreateUpdatedStateBundle(
const TabPageDecorator::TabHandle* tab_handle,
State new_state) const { … }
int64_t TabRevisitTracker::ExponentiallyBucketedSeconds(base::TimeDelta time) { … }
void TabRevisitTracker::OnPassedToGraph(Graph* graph) { … }
void TabRevisitTracker::OnTakenFromGraph(Graph* graph) { … }
void TabRevisitTracker::OnTabAdded(TabPageDecorator::TabHandle* tab_handle) { … }
void TabRevisitTracker::OnTabAboutToBeDiscarded(
const PageNode* old_page_node,
TabPageDecorator::TabHandle* tab_handle) { … }
void TabRevisitTracker::OnBeforeTabRemoved(
TabPageDecorator::TabHandle* tab_handle) { … }
void TabRevisitTracker::OnIsActiveTabChanged(const PageNode* page_node) { … }
void TabRevisitTracker::OnUkmSourceIdChanged(const PageNode* page_node) { … }
}