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

Side by Side Diff: chrome/common/page_load_metrics/page_load_metrics_param_traits.cc

Issue 2874663005: [Page Load Metrics] Add mojom file to page load metrics. (Closed)
Patch Set: Fixed tests and addressed comments 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
(Empty)
1 // Copyright (c) 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/common/page_load_metrics/page_load_metrics_param_traits.h"
6
7 #include "chrome/common/page_load_metrics/page_load_metrics_messages.h"
8 #include "ipc/ipc_message_utils.h"
9
10 namespace IPC {
Bryan McQuade 2017/05/12 19:49:26 on looking at this more, i am wondering if we are
11
12 void ParamTraits<page_load_metrics::mojom::PageLoadTiming>::GetSize(
Bryan McQuade 2017/05/12 19:49:26 the current impl, which i put together quickly, as
13 base::PickleSizer* s,
14 const page_load_metrics::mojom::PageLoadTiming& timing) {
15 GetParamSize(s, timing.navigation_start);
16 GetParamSize(s, timing.response_start);
17 GetParamSize(s, *timing.document_timing);
18 GetParamSize(s, *timing.paint_timing);
19 GetParamSize(s, *timing.parse_timing);
20 GetParamSize(s, *timing.style_sheet_timing);
21 }
22
23 void ParamTraits<page_load_metrics::mojom::PageLoadTiming>::Write(
24 base::Pickle* m,
25 const page_load_metrics::mojom::PageLoadTiming& timing) {
26 if (!timing.document_timing || !timing.paint_timing || !timing.parse_timing ||
27 !timing.style_sheet_timing) {
28 // PageLoadTimings must have instances for all child struct members.
29 LOG(DFATAL) << "Received invalid PageLoadTiming.";
30 return;
31 }
32 WriteParam(m, timing.navigation_start);
33 WriteParam(m, timing.response_start);
34 WriteParam(m, *timing.document_timing);
35 WriteParam(m, *timing.paint_timing);
36 WriteParam(m, *timing.parse_timing);
37 WriteParam(m, *timing.style_sheet_timing);
38 }
39
40 bool ParamTraits<page_load_metrics::mojom::PageLoadTiming>::Read(
41 const base::Pickle* m,
42 base::PickleIterator* iter,
43 page_load_metrics::mojom::PageLoadTiming* timing) {
44 // Provide default instances of all child struct members, which we'll read
45 // into.
46 timing->document_timing = page_load_metrics::mojom::DocumentTiming::New();
47 timing->paint_timing = page_load_metrics::mojom::PaintTiming::New();
48 timing->parse_timing = page_load_metrics::mojom::ParseTiming::New();
49 timing->style_sheet_timing =
50 page_load_metrics::mojom::StyleSheetTiming::New();
51 return ReadParam(m, iter, &timing->navigation_start) &&
52 ReadParam(m, iter, &timing->response_start) &&
53 ReadParam(m, iter, timing->document_timing.get()) &&
54 ReadParam(m, iter, timing->paint_timing.get()) &&
55 ReadParam(m, iter, timing->parse_timing.get()) &&
56 ReadParam(m, iter, timing->style_sheet_timing.get());
57 }
58
59 void ParamTraits<page_load_metrics::mojom::PageLoadTiming>::Log(
60 const page_load_metrics::mojom::PageLoadTiming& timing,
61 std::string* l) {
62 l->append("PageLoadTiming(");
63 LogParam(timing.navigation_start, l);
64 l->append(",");
65 LogParam(timing.response_start, l);
66 l->append(",");
67
68 l->append("DocumentTiming(");
69 LogParam(timing.document_timing->dom_content_loaded_event_start, l);
70 l->append(",");
71 LogParam(timing.document_timing->load_event_start, l);
72 l->append(",");
73 LogParam(timing.document_timing->first_layout, l);
74 l->append(")");
75
76 l->append(",");
77
78 l->append("PaintTiming(");
79 LogParam(timing.paint_timing->first_paint, l);
80 l->append(",");
81 LogParam(timing.paint_timing->first_text_paint, l);
82 l->append(",");
83 LogParam(timing.paint_timing->first_image_paint, l);
84 l->append(",");
85 LogParam(timing.paint_timing->first_contentful_paint, l);
86 l->append(",");
87 LogParam(timing.paint_timing->first_meaningful_paint, l);
88 l->append(")");
89
90 l->append(",");
91
92 l->append("ParseTiming(");
93 LogParam(timing.parse_timing->parse_start, l);
94 l->append(",");
95 LogParam(timing.parse_timing->parse_stop, l);
96 l->append(",");
97 LogParam(timing.parse_timing->parse_blocked_on_script_load_duration, l);
98 l->append(",");
99 LogParam(timing.parse_timing
100 ->parse_blocked_on_script_load_from_document_write_duration,
101 l);
102 l->append(",");
103 LogParam(timing.parse_timing->parse_blocked_on_script_execution_duration, l);
104 l->append(",");
105 LogParam(timing.parse_timing
106 ->parse_blocked_on_script_execution_from_document_write_duration,
107 l);
108 l->append(")");
109
110 l->append(",");
111
112 l->append("StyleSheetTiming(");
113 LogParam(
114 timing.style_sheet_timing->author_style_sheet_parse_duration_before_fcp,
115 l);
116 l->append(",");
117 LogParam(timing.style_sheet_timing->update_style_duration_before_fcp, l);
118 l->append(")");
119
120 l->append(")");
121 }
122
123 } // namespace IPC
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698