| Index: third_party/WebKit/Source/core/paint/FirstMeaningfulPaintDetector.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/FirstMeaningfulPaintDetector.cpp b/third_party/WebKit/Source/core/paint/FirstMeaningfulPaintDetector.cpp
|
| index 8bf96318733a7ccf53790c9d623db2685af6c678..790a859f382639fd18c695626ebfd071d687a09f 100644
|
| --- a/third_party/WebKit/Source/core/paint/FirstMeaningfulPaintDetector.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/FirstMeaningfulPaintDetector.cpp
|
| @@ -93,6 +93,7 @@ void FirstMeaningfulPaintDetector::NotifyPaint() {
|
| return;
|
|
|
| provisional_first_meaningful_paint_ = MonotonicallyIncreasingTime();
|
| + had_user_input_before_provisional_first_meaningful_paint_ = had_user_input_;
|
| next_paint_is_meaningful_ = false;
|
|
|
| if (network2_quiet_reached_)
|
| @@ -112,6 +113,14 @@ void FirstMeaningfulPaintDetector::NotifyPaint() {
|
| provisional_first_meaningful_paint_);
|
| }
|
|
|
| +// This is called only on FirstMeaningfulPaintDetector for main frame.
|
| +void FirstMeaningfulPaintDetector::NotifyInputEvent() {
|
| + // Ignore user inputs before first paint.
|
| + if (paint_timing_->FirstPaint() == 0.0)
|
| + return;
|
| + had_user_input_ = kHadUserInput;
|
| +}
|
| +
|
| int FirstMeaningfulPaintDetector::ActiveConnections() {
|
| DCHECK(GetDocument());
|
| ResourceFetcher* fetcher = GetDocument()->Fetcher();
|
| @@ -176,7 +185,9 @@ void FirstMeaningfulPaintDetector::Network2QuietTimerFired(TimerBase*) {
|
| std::max(provisional_first_meaningful_paint_,
|
| paint_timing_->FirstContentfulPaint());
|
| // Report FirstMeaningfulPaint when the page reached network 2-quiet.
|
| - paint_timing_->SetFirstMeaningfulPaint(first_meaningful_paint2_quiet_);
|
| + paint_timing_->SetFirstMeaningfulPaint(
|
| + first_meaningful_paint2_quiet_,
|
| + had_user_input_before_provisional_first_meaningful_paint_);
|
| }
|
| ReportHistograms();
|
| }
|
|
|