#ifndef CHROME_RENDERER_ACTOR_PAGE_STABILITY_METRICS_H_
#define CHROME_RENDERER_ACTOR_PAGE_STABILITY_METRICS_H_
#include "base/time/time.h"
#include "chrome/common/actor/page_stability_metrics_common.h"
#include "chrome/renderer/actor/page_stability_monitor.h"
namespace actor {
class PageStabilityMetrics {
public:
PageStabilityMetrics();
~PageStabilityMetrics();
void Start();
void WillMoveToState(PageStabilityMonitor::State state);
void OnNetworkAndMainThreadIdle();
void OnPaintStabilityReached();
void OnInteractionContentfulPaint();
void Flush();
private:
void RecordTimingMetrics();
PageStabilityOutcome stability_outcome_ = PageStabilityOutcome::kUnknown;
bool network_and_main_thread_stability_reached_ = false;
bool paint_stability_reached_ = false;
base::TimeTicks start_waiting_time_;
base::TimeTicks start_monitoring_time_;
base::TimeTicks last_interaction_contentful_paint_time_;
base::TimeDelta total_time_between_interaction_contentful_paints_;
int subsequent_contentful_paint_count_ = 0;
bool flushed_ = false;
};
}
#endif