Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(123)

Side by Side Diff: chrome/browser/page_load_metrics/page_load_tracker.cc

Issue 2903693004: Make PageLoadMetricsWaiter more resilient (Closed)
Patch Set: rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/page_load_metrics/page_load_tracker.h" 5 #include "chrome/browser/page_load_metrics/page_load_tracker.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <ostream> 8 #include <ostream>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 UMA_HISTOGRAM_BOOLEAN(internal::kPageLoadCompletedAfterAppBackground, 110 UMA_HISTOGRAM_BOOLEAN(internal::kPageLoadCompletedAfterAppBackground,
111 completed_after_background); 111 completed_after_background);
112 } 112 }
113 113
114 void DispatchObserverTimingCallbacks( 114 void DispatchObserverTimingCallbacks(
115 PageLoadMetricsObserver* observer, 115 PageLoadMetricsObserver* observer,
116 const mojom::PageLoadTiming& last_timing, 116 const mojom::PageLoadTiming& last_timing,
117 const mojom::PageLoadTiming& new_timing, 117 const mojom::PageLoadTiming& new_timing,
118 const PageLoadExtraInfo& extra_info) { 118 const PageLoadExtraInfo& extra_info) {
119 if (!last_timing.Equals(new_timing)) 119 if (!last_timing.Equals(new_timing))
120 observer->OnTimingUpdate(new_timing, extra_info); 120 observer->OnTimingUpdate(false /* is_subframe */, new_timing, extra_info);
121 if (new_timing.document_timing->dom_content_loaded_event_start && 121 if (new_timing.document_timing->dom_content_loaded_event_start &&
122 !last_timing.document_timing->dom_content_loaded_event_start) 122 !last_timing.document_timing->dom_content_loaded_event_start)
123 observer->OnDomContentLoadedEventStart(new_timing, extra_info); 123 observer->OnDomContentLoadedEventStart(new_timing, extra_info);
124 if (new_timing.document_timing->load_event_start && 124 if (new_timing.document_timing->load_event_start &&
125 !last_timing.document_timing->load_event_start) 125 !last_timing.document_timing->load_event_start)
126 observer->OnLoadEventStart(new_timing, extra_info); 126 observer->OnLoadEventStart(new_timing, extra_info);
127 if (new_timing.document_timing->first_layout && 127 if (new_timing.document_timing->first_layout &&
128 !last_timing.document_timing->first_layout) 128 !last_timing.document_timing->first_layout)
129 observer->OnFirstLayout(new_timing, extra_info); 129 observer->OnFirstLayout(new_timing, extra_info);
130 if (new_timing.paint_timing->first_paint && 130 if (new_timing.paint_timing->first_paint &&
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 PageLoadExtraInfo extra_info(ComputePageLoadExtraInfo()); 596 PageLoadExtraInfo extra_info(ComputePageLoadExtraInfo());
597 for (const auto& observer : observers_) { 597 for (const auto& observer : observers_) {
598 DispatchObserverTimingCallbacks( 598 DispatchObserverTimingCallbacks(
599 observer.get(), *last_dispatched_merged_page_timing_, 599 observer.get(), *last_dispatched_merged_page_timing_,
600 metrics_update_dispatcher_.timing(), extra_info); 600 metrics_update_dispatcher_.timing(), extra_info);
601 } 601 }
602 last_dispatched_merged_page_timing_ = 602 last_dispatched_merged_page_timing_ =
603 metrics_update_dispatcher_.timing().Clone(); 603 metrics_update_dispatcher_.timing().Clone();
604 } 604 }
605 605
606 void PageLoadTracker::OnSubFrameTimingChanged(
607 const mojom::PageLoadTiming& timing) {
608 PageLoadExtraInfo extra_info(ComputePageLoadExtraInfo());
609 for (const auto& observer : observers_) {
610 observer->OnTimingUpdate(true /* is_subframe*/, timing, extra_info);
611 }
612 }
613
606 void PageLoadTracker::OnMainFrameMetadataChanged() { 614 void PageLoadTracker::OnMainFrameMetadataChanged() {
607 PageLoadExtraInfo extra_info(ComputePageLoadExtraInfo()); 615 PageLoadExtraInfo extra_info(ComputePageLoadExtraInfo());
608 for (const auto& observer : observers_) { 616 for (const auto& observer : observers_) {
609 observer->OnLoadingBehaviorObserved(extra_info); 617 observer->OnLoadingBehaviorObserved(extra_info);
610 } 618 }
611 } 619 }
612 620
613 void PageLoadTracker::OnSubframeMetadataChanged() { 621 void PageLoadTracker::OnSubframeMetadataChanged() {
614 PageLoadExtraInfo extra_info(ComputePageLoadExtraInfo()); 622 PageLoadExtraInfo extra_info(ComputePageLoadExtraInfo());
615 for (const auto& observer : observers_) { 623 for (const auto& observer : observers_) {
616 observer->OnLoadingBehaviorObserved(extra_info); 624 observer->OnLoadingBehaviorObserved(extra_info);
617 } 625 }
618 } 626 }
619 627
620 } // namespace page_load_metrics 628 } // namespace page_load_metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698