OLD | NEW |
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 "core/timing/PerformanceLongTaskTiming.h" | 5 #include "core/timing/PerformanceLongTaskTiming.h" |
6 | 6 |
7 #include "core/frame/DOMWindow.h" | 7 #include "core/frame/DOMWindow.h" |
| 8 #include "core/timing/TaskAttributionTiming.h" |
8 | 9 |
9 namespace blink { | 10 namespace blink { |
10 | 11 |
11 namespace { | 12 namespace { |
12 | 13 |
13 double clampToMillisecond(double timeInMillis) { | 14 double clampToMillisecond(double timeInMillis) { |
14 // Long task times are clamped to 1 millisecond for security. | 15 // Long task times are clamped to 1 millisecond for security. |
15 return floor(timeInMillis); | 16 return floor(timeInMillis); |
16 } | 17 } |
17 | 18 |
18 } // namespace | 19 } // namespace |
19 | 20 |
| 21 // static |
| 22 PerformanceLongTaskTiming* PerformanceLongTaskTiming::create(double startTime, |
| 23 double endTime, |
| 24 String name, |
| 25 String frameSrc, |
| 26 String frameId, |
| 27 String frameName) { |
| 28 return new PerformanceLongTaskTiming(startTime, endTime, name, frameSrc, |
| 29 frameId, frameName); |
| 30 } |
| 31 |
20 PerformanceLongTaskTiming::PerformanceLongTaskTiming(double startTime, | 32 PerformanceLongTaskTiming::PerformanceLongTaskTiming(double startTime, |
21 double endTime, | 33 double endTime, |
22 String name, | 34 String name, |
23 String culpritFrameSrc, | 35 String culpritFrameSrc, |
24 String culpritFrameId, | 36 String culpritFrameId, |
25 String culpritFrameName) | 37 String culpritFrameName) |
26 : PerformanceEntry(name, | 38 : PerformanceEntry(name, |
27 "longtask", | 39 "longtask", |
28 clampToMillisecond(startTime), | 40 clampToMillisecond(startTime), |
29 clampToMillisecond(endTime)), | 41 clampToMillisecond(endTime)) { |
30 m_culpritFrameSrc(culpritFrameSrc), | 42 // Only one possible name ("frame") currently. |
31 m_culpritFrameId(culpritFrameId), | 43 TaskAttributionTiming* attributionEntry = TaskAttributionTiming::create( |
32 m_culpritFrameName(culpritFrameName) {} | 44 "frame", culpritFrameSrc, culpritFrameId, culpritFrameName); |
| 45 m_attribution.append(*attributionEntry); |
| 46 } |
33 | 47 |
34 PerformanceLongTaskTiming::~PerformanceLongTaskTiming() {} | 48 PerformanceLongTaskTiming::~PerformanceLongTaskTiming() {} |
35 | 49 |
36 String PerformanceLongTaskTiming::culpritFrameSrc() const { | 50 TaskAttributionVector PerformanceLongTaskTiming::attribution() const { |
37 return m_culpritFrameSrc; | 51 return m_attribution; |
38 } | |
39 | |
40 String PerformanceLongTaskTiming::culpritFrameId() const { | |
41 return m_culpritFrameId; | |
42 } | |
43 | |
44 String PerformanceLongTaskTiming::culpritFrameName() const { | |
45 return m_culpritFrameName; | |
46 } | 52 } |
47 | 53 |
48 DEFINE_TRACE(PerformanceLongTaskTiming) { | 54 DEFINE_TRACE(PerformanceLongTaskTiming) { |
| 55 visitor->trace(m_attribution); |
49 PerformanceEntry::trace(visitor); | 56 PerformanceEntry::trace(visitor); |
50 } | 57 } |
51 | 58 |
52 } // namespace blink | 59 } // namespace blink |
OLD | NEW |