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

Side by Side Diff: chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc

Issue 2823523003: [Page Load Metrics] PageLoadMetrics Mojofication. (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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/renderer/page_load_metrics/metrics_render_frame_observer.h" 5 #include "chrome/renderer/page_load_metrics/metrics_render_frame_observer.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
11 #include "base/timer/timer.h" 11 #include "base/timer/timer.h"
12 #include "chrome/renderer/page_load_metrics/page_timing_metrics_sender.h" 12 #include "chrome/renderer/page_load_metrics/page_timing_metrics_sender.h"
13 #include "chrome/renderer/page_load_metrics/page_timing_sender.h"
13 #include "chrome/renderer/page_load_metrics/renderer_page_track_decider.h" 14 #include "chrome/renderer/page_load_metrics/renderer_page_track_decider.h"
14 #include "chrome/renderer/searchbox/search_bouncer.h" 15 #include "chrome/renderer/searchbox/search_bouncer.h"
15 #include "content/public/renderer/render_frame.h" 16 #include "content/public/renderer/render_frame.h"
16 #include "third_party/WebKit/public/web/WebDataSource.h" 17 #include "third_party/WebKit/public/web/WebDataSource.h"
17 #include "third_party/WebKit/public/web/WebDocument.h" 18 #include "third_party/WebKit/public/web/WebDocument.h"
18 #include "third_party/WebKit/public/web/WebLocalFrame.h" 19 #include "third_party/WebKit/public/web/WebLocalFrame.h"
19 #include "third_party/WebKit/public/web/WebPerformance.h" 20 #include "third_party/WebKit/public/web/WebPerformance.h"
20 #include "url/gurl.h" 21 #include "url/gurl.h"
21 22
22 namespace page_load_metrics { 23 namespace page_load_metrics {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 65
65 // Make sure to release the sender for a previous navigation, if we have one. 66 // Make sure to release the sender for a previous navigation, if we have one.
66 page_timing_metrics_sender_.reset(); 67 page_timing_metrics_sender_.reset();
67 68
68 // We only create a PageTimingMetricsSender if the page meets the criteria for 69 // We only create a PageTimingMetricsSender if the page meets the criteria for
69 // sending and recording metrics. Once page_timing_metrics_sender_ is 70 // sending and recording metrics. Once page_timing_metrics_sender_ is
70 // non-null, we will send metrics for the current page at some later time, as 71 // non-null, we will send metrics for the current page at some later time, as
71 // those metrics become available. 72 // those metrics become available.
72 if (ShouldSendMetrics()) { 73 if (ShouldSendMetrics()) {
73 page_timing_metrics_sender_ = base::MakeUnique<PageTimingMetricsSender>( 74 page_timing_metrics_sender_ = base::MakeUnique<PageTimingMetricsSender>(
74 this, routing_id(), CreateTimer(), GetTiming()); 75 CreatePageTimingSender(), CreateTimer(), GetTiming());
75 } 76 }
76 } 77 }
77 78
78 void MetricsRenderFrameObserver::SendMetrics() { 79 void MetricsRenderFrameObserver::SendMetrics() {
79 if (!page_timing_metrics_sender_) 80 if (!page_timing_metrics_sender_)
80 return; 81 return;
81 if (HasNoRenderFrame()) 82 if (HasNoRenderFrame())
82 return; 83 return;
83 page_timing_metrics_sender_->Send(GetTiming()); 84 page_timing_metrics_sender_->Send(GetTiming());
84 } 85 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 timing->style_sheet_timing->update_style_duration_before_fcp = 161 timing->style_sheet_timing->update_style_duration_before_fcp =
161 base::TimeDelta::FromSecondsD(perf.UpdateStyleDurationBeforeFCP()); 162 base::TimeDelta::FromSecondsD(perf.UpdateStyleDurationBeforeFCP());
162 } 163 }
163 return timing; 164 return timing;
164 } 165 }
165 166
166 std::unique_ptr<base::Timer> MetricsRenderFrameObserver::CreateTimer() const { 167 std::unique_ptr<base::Timer> MetricsRenderFrameObserver::CreateTimer() const {
167 return base::WrapUnique(new base::OneShotTimer); 168 return base::WrapUnique(new base::OneShotTimer);
168 } 169 }
169 170
171 std::unique_ptr<PageTimingSender>
172 MetricsRenderFrameObserver::CreatePageTimingSender() {
173 return PageTimingSender::CreatePageTimingSender(render_frame(), routing_id());
Bryan McQuade 2017/05/19 14:06:18 given that the static PageTimingSender::CreatePage
lpy 2017/05/19 23:52:38 Done.
174 }
175
170 bool MetricsRenderFrameObserver::HasNoRenderFrame() const { 176 bool MetricsRenderFrameObserver::HasNoRenderFrame() const {
171 bool no_frame = !render_frame() || !render_frame()->GetWebFrame(); 177 bool no_frame = !render_frame() || !render_frame()->GetWebFrame();
172 DCHECK(!no_frame); 178 DCHECK(!no_frame);
173 return no_frame; 179 return no_frame;
174 } 180 }
175 181
176 void MetricsRenderFrameObserver::OnDestruct() { 182 void MetricsRenderFrameObserver::OnDestruct() {
177 delete this; 183 delete this;
178 } 184 }
179 185
180 } // namespace page_load_metrics 186 } // namespace page_load_metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698