Commit d13f61b7 authored by Sergio Villar Senin's avatar Sergio Villar Senin Committed by Commit Bot

Replace doubles by base::Time in RemoteFontFaceSource

We were doing some unneccesary double <-> base::Time conversions. We can just
store base::Time and then convert it to doubles for the histograms.

Bug: 979137
Change-Id: Ifa93dd5d91ddfbfc3dd6eca50115bc9e402ce183
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1678483
Commit-Queue: Sergio Villar <svillar@igalia.com>
Reviewed-by: default avatarJeremy Roman <jbroman@chromium.org>
Reviewed-by: default avatarKunihiko Sakamoto <ksakamoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#676943}
parent 2d695154
...@@ -321,14 +321,16 @@ void RemoteFontFaceSource::Trace(blink::Visitor* visitor) { ...@@ -321,14 +321,16 @@ void RemoteFontFaceSource::Trace(blink::Visitor* visitor) {
} }
void RemoteFontFaceSource::FontLoadHistograms::LoadStarted() { void RemoteFontFaceSource::FontLoadHistograms::LoadStarted() {
if (!load_start_time_) if (load_start_time_.is_null())
load_start_time_ = CurrentTimeMS(); load_start_time_ = base::TimeTicks::Now();
} }
void RemoteFontFaceSource::FontLoadHistograms::FallbackFontPainted( void RemoteFontFaceSource::FontLoadHistograms::FallbackFontPainted(
DisplayPeriod period) { DisplayPeriod period) {
if (period == kBlockPeriod && !blank_paint_time_) if (period == kBlockPeriod && blank_paint_time_.is_null()) {
blank_paint_time_ = CurrentTimeMS(); blank_paint_time_ = base::TimeTicks::Now();
blank_paint_time_recorded_ = false;
}
} }
void RemoteFontFaceSource::FontLoadHistograms::LongLimitExceeded() { void RemoteFontFaceSource::FontLoadHistograms::LongLimitExceeded() {
...@@ -337,14 +339,16 @@ void RemoteFontFaceSource::FontLoadHistograms::LongLimitExceeded() { ...@@ -337,14 +339,16 @@ void RemoteFontFaceSource::FontLoadHistograms::LongLimitExceeded() {
} }
void RemoteFontFaceSource::FontLoadHistograms::RecordFallbackTime() { void RemoteFontFaceSource::FontLoadHistograms::RecordFallbackTime() {
if (blank_paint_time_ <= 0) if (blank_paint_time_.is_null() || blank_paint_time_recorded_)
return; return;
int duration = static_cast<int>(CurrentTimeMS() - blank_paint_time_); base::TimeDelta duration = base::TimeTicks::Now() - blank_paint_time_;
DEFINE_THREAD_SAFE_STATIC_LOCAL(CustomCountHistogram, DEFINE_THREAD_SAFE_STATIC_LOCAL(CustomCountHistogram,
blank_text_shown_time_histogram, blank_text_shown_time_histogram,
("WebFont.BlankTextShownTime", 0, 10000, 50)); ("WebFont.BlankTextShownTime", 0, 10000, 50));
blank_text_shown_time_histogram.Count(duration); blank_text_shown_time_histogram.Count(
blank_paint_time_ = -1; base::saturated_cast<base::HistogramBase::Sample>(
duration.InMilliseconds()));
blank_paint_time_recorded_ = true;
} }
void RemoteFontFaceSource::FontLoadHistograms::RecordRemoteFont( void RemoteFontFaceSource::FontLoadHistograms::RecordRemoteFont(
...@@ -356,9 +360,8 @@ void RemoteFontFaceSource::FontLoadHistograms::RecordRemoteFont( ...@@ -356,9 +360,8 @@ void RemoteFontFaceSource::FontLoadHistograms::RecordRemoteFont(
cache_hit_histogram.Count(DataSourceMetricsValue()); cache_hit_histogram.Count(DataSourceMetricsValue());
if (data_source_ == kFromDiskCache || data_source_ == kFromNetwork) { if (data_source_ == kFromDiskCache || data_source_ == kFromNetwork) {
DCHECK_NE(load_start_time_, 0); DCHECK(!load_start_time_.is_null());
int duration = static_cast<int>(CurrentTimeMS() - load_start_time_); RecordLoadTimeHistogram(font, base::TimeTicks::Now() - load_start_time_);
RecordLoadTimeHistogram(font, duration);
} }
} }
...@@ -369,7 +372,7 @@ void RemoteFontFaceSource::FontLoadHistograms::MaySetDataSource( ...@@ -369,7 +372,7 @@ void RemoteFontFaceSource::FontLoadHistograms::MaySetDataSource(
// Classify as memory cache hit if |load_start_time_| is not set, i.e. // Classify as memory cache hit if |load_start_time_| is not set, i.e.
// this RemoteFontFaceSource instance didn't trigger FontResource // this RemoteFontFaceSource instance didn't trigger FontResource
// loading. // loading.
if (load_start_time_ == 0) if (load_start_time_.is_null())
data_source_ = kFromMemoryCache; data_source_ = kFromMemoryCache;
else else
data_source_ = data_source; data_source_ = data_source;
...@@ -377,9 +380,11 @@ void RemoteFontFaceSource::FontLoadHistograms::MaySetDataSource( ...@@ -377,9 +380,11 @@ void RemoteFontFaceSource::FontLoadHistograms::MaySetDataSource(
void RemoteFontFaceSource::FontLoadHistograms::RecordLoadTimeHistogram( void RemoteFontFaceSource::FontLoadHistograms::RecordLoadTimeHistogram(
const FontResource* font, const FontResource* font,
int duration) { base::TimeDelta delta) {
CHECK_NE(kFromUnknown, data_source_); CHECK_NE(kFromUnknown, data_source_);
int duration =
base::saturated_cast<base::HistogramBase::Sample>(delta.InMilliseconds());
if (font->ErrorOccurred()) { if (font->ErrorOccurred()) {
DEFINE_THREAD_SAFE_STATIC_LOCAL( DEFINE_THREAD_SAFE_STATIC_LOCAL(
CustomCountHistogram, load_error_histogram, CustomCountHistogram, load_error_histogram,
......
...@@ -82,8 +82,7 @@ class RemoteFontFaceSource final : public CSSFontFaceSource, ...@@ -82,8 +82,7 @@ class RemoteFontFaceSource final : public CSSFontFaceSource,
}; };
FontLoadHistograms() FontLoadHistograms()
: load_start_time_(0), : blank_paint_time_recorded_(false),
blank_paint_time_(0),
is_long_limit_exceeded_(false), is_long_limit_exceeded_(false),
data_source_(kFromUnknown) {} data_source_(kFromUnknown) {}
void LoadStarted(); void LoadStarted();
...@@ -91,7 +90,7 @@ class RemoteFontFaceSource final : public CSSFontFaceSource, ...@@ -91,7 +90,7 @@ class RemoteFontFaceSource final : public CSSFontFaceSource,
void LongLimitExceeded(); void LongLimitExceeded();
void RecordFallbackTime(); void RecordFallbackTime();
void RecordRemoteFont(const FontResource*); void RecordRemoteFont(const FontResource*);
bool HadBlankText() { return blank_paint_time_; } bool HadBlankText() { return !blank_paint_time_.is_null(); }
DataSource GetDataSource() { return data_source_; } DataSource GetDataSource() { return data_source_; }
void MaySetDataSource(DataSource); void MaySetDataSource(DataSource);
...@@ -102,10 +101,14 @@ class RemoteFontFaceSource final : public CSSFontFaceSource, ...@@ -102,10 +101,14 @@ class RemoteFontFaceSource final : public CSSFontFaceSource,
} }
private: private:
void RecordLoadTimeHistogram(const FontResource*, int duration); void RecordLoadTimeHistogram(const FontResource*, base::TimeDelta duration);
CacheHitMetrics DataSourceMetricsValue(); CacheHitMetrics DataSourceMetricsValue();
double load_start_time_; base::TimeTicks load_start_time_;
double blank_paint_time_; base::TimeTicks blank_paint_time_;
// |blank_paint_time_recorded_| is used to prevent
// WebFont.BlankTextShownTime to be reported incorrectly when the web font
// fallbacks immediately. See https://crbug.com/591304
bool blank_paint_time_recorded_;
bool is_long_limit_exceeded_; bool is_long_limit_exceeded_;
DataSource data_source_; DataSource data_source_;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment