OLD | NEW |
---|---|
(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 | |
OLD | NEW |