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

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

Issue 2056153002: Convert PageLoadMetrics to Mojo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 5 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 "components/page_load_metrics/renderer/metrics_render_frame_observer.h" 5 #include "components/page_load_metrics/renderer/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 "components/page_load_metrics/renderer/page_timing_metrics_sender.h" 12 #include "components/page_load_metrics/renderer/page_timing_metrics_sender.h"
13 #include "content/public/renderer/render_frame.h" 13 #include "content/public/renderer/render_frame.h"
14 #include "services/shell/public/cpp/interface_provider.h"
14 #include "third_party/WebKit/public/platform/WebURLResponse.h" 15 #include "third_party/WebKit/public/platform/WebURLResponse.h"
15 #include "third_party/WebKit/public/web/WebDataSource.h" 16 #include "third_party/WebKit/public/web/WebDataSource.h"
16 #include "third_party/WebKit/public/web/WebDocument.h" 17 #include "third_party/WebKit/public/web/WebDocument.h"
17 #include "third_party/WebKit/public/web/WebLocalFrame.h" 18 #include "third_party/WebKit/public/web/WebLocalFrame.h"
18 #include "third_party/WebKit/public/web/WebPerformance.h" 19 #include "third_party/WebKit/public/web/WebPerformance.h"
19 #include "url/gurl.h" 20 #include "url/gurl.h"
20 21
21 namespace page_load_metrics { 22 namespace page_load_metrics {
22 23
23 namespace { 24 namespace {
24 25
25 base::TimeDelta ClampDelta(double event, double start) { 26 base::TimeDelta ClampDelta(double event, double start) {
26 if (event - start < 0) 27 if (event - start < 0)
27 event = start; 28 event = start;
28 return base::Time::FromDoubleT(event) - base::Time::FromDoubleT(start); 29 return base::Time::FromDoubleT(event) - base::Time::FromDoubleT(start);
29 } 30 }
30 31
31 } // namespace 32 } // namespace
32 33
33 MetricsRenderFrameObserver::MetricsRenderFrameObserver( 34 MetricsRenderFrameObserver::MetricsRenderFrameObserver(
34 content::RenderFrame* render_frame) 35 content::RenderFrame* render_frame)
35 : content::RenderFrameObserver(render_frame) {} 36 : content::RenderFrameObserver(render_frame) {
37 render_frame->GetRemoteInterfaces()->GetInterface(
38 mojo::GetProxy(&page_load_metrics_));
39 }
40
41 MetricsRenderFrameObserver::MetricsRenderFrameObserver(
42 content::RenderFrame* render_frame,
43 page_load_metrics::mojom::PageLoadMetricsPtr page_load_metrics)
44 : content::RenderFrameObserver(render_frame),
45 page_load_metrics_(std::move(page_load_metrics)) {}
36 46
37 MetricsRenderFrameObserver::~MetricsRenderFrameObserver() {} 47 MetricsRenderFrameObserver::~MetricsRenderFrameObserver() {}
38 48
39 void MetricsRenderFrameObserver::DidChangePerformanceTiming() { 49 void MetricsRenderFrameObserver::DidChangePerformanceTiming() {
40 SendMetrics(); 50 SendMetrics();
41 } 51 }
42 52
43 void MetricsRenderFrameObserver::DidObserveLoadingBehavior( 53 void MetricsRenderFrameObserver::DidObserveLoadingBehavior(
44 blink::WebLoadingBehaviorFlag behavior) { 54 blink::WebLoadingBehaviorFlag behavior) {
45 if (page_timing_metrics_sender_) 55 if (page_timing_metrics_sender_)
(...skipping 14 matching lines...) Expand all
60 // Make sure to release the sender for a previous navigation, if we have one. 70 // Make sure to release the sender for a previous navigation, if we have one.
61 page_timing_metrics_sender_.reset(); 71 page_timing_metrics_sender_.reset();
62 72
63 // We only create a PageTimingMetricsSender if the page meets the criteria for 73 // We only create a PageTimingMetricsSender if the page meets the criteria for
64 // sending and recording metrics. Once page_timing_metrics_sender_ is 74 // sending and recording metrics. Once page_timing_metrics_sender_ is
65 // non-null, we will send metrics for the current page at some later time, as 75 // non-null, we will send metrics for the current page at some later time, as
66 // those metrics become available. 76 // those metrics become available.
67 if (ShouldSendMetrics()) { 77 if (ShouldSendMetrics()) {
68 PageLoadTiming timing(GetTiming()); 78 PageLoadTiming timing(GetTiming());
69 DCHECK(!timing.navigation_start.is_null()); 79 DCHECK(!timing.navigation_start.is_null());
70 page_timing_metrics_sender_.reset( 80 page_timing_metrics_sender_.reset(new PageTimingMetricsSender(
71 new PageTimingMetricsSender(this, routing_id(), CreateTimer(), timing)); 81 page_load_metrics_.get(), CreateTimer(), timing));
72 } 82 }
73 } 83 }
74 84
75 void MetricsRenderFrameObserver::SendMetrics() { 85 void MetricsRenderFrameObserver::SendMetrics() {
76 if (!page_timing_metrics_sender_) 86 if (!page_timing_metrics_sender_)
77 return; 87 return;
78 if (HasNoRenderFrame()) 88 if (HasNoRenderFrame())
79 return; 89 return;
80 PageLoadTiming timing(GetTiming()); 90 PageLoadTiming timing(GetTiming());
81 page_timing_metrics_sender_->Send(timing); 91 page_timing_metrics_sender_->Send(timing);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 bool no_frame = !render_frame() || !render_frame()->GetWebFrame(); 172 bool no_frame = !render_frame() || !render_frame()->GetWebFrame();
163 DCHECK(!no_frame); 173 DCHECK(!no_frame);
164 return no_frame; 174 return no_frame;
165 } 175 }
166 176
167 void MetricsRenderFrameObserver::OnDestruct() { 177 void MetricsRenderFrameObserver::OnDestruct() {
168 delete this; 178 delete this;
169 } 179 }
170 180
171 } // namespace page_load_metrics 181 } // namespace page_load_metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698