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

Side by Side Diff: third_party/WebKit/Source/core/timing/PerformanceBase.h

Issue 2244813002: LongTaskTiming: add idl, Experiment flag, PerformanceEntry and basic implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix merge issue in flags Created 4 years, 3 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 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * Copyright (C) 2012 Intel Inc. All rights reserved. 3 * Copyright (C) 2012 Intel Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 65
66 // Reduce the resolution to 5µs to prevent timing attacks. See: 66 // Reduce the resolution to 5µs to prevent timing attacks. See:
67 // http://www.w3.org/TR/hr-time-2/#privacy-security 67 // http://www.w3.org/TR/hr-time-2/#privacy-security
68 static double clampTimeResolution(double timeSeconds); 68 static double clampTimeResolution(double timeSeconds);
69 69
70 // Translate given platform monotonic time in seconds into a high resolution 70 // Translate given platform monotonic time in seconds into a high resolution
71 // DOMHighResTimeStamp in milliseconds. The result timestamp is relative to 71 // DOMHighResTimeStamp in milliseconds. The result timestamp is relative to
72 // document's time origin and has a time resolution that is safe for 72 // document's time origin and has a time resolution that is safe for
73 // exposing to web. 73 // exposing to web.
74 DOMHighResTimeStamp monotonicTimeToDOMHighResTimeStamp(double) const; 74 DOMHighResTimeStamp monotonicTimeToDOMHighResTimeStamp(double) const;
75 double monotonicTimeToDOMHighResTimeStampInMillis(DOMHighResTimeStamp) const ;
75 DOMHighResTimeStamp now() const; 76 DOMHighResTimeStamp now() const;
76 77
77 double timeOrigin() const { return m_timeOrigin; } 78 double timeOrigin() const { return m_timeOrigin; }
78 79
79 PerformanceEntryVector getEntries() const; 80 PerformanceEntryVector getEntries() const;
80 PerformanceEntryVector getEntriesByType(const String& entryType); 81 PerformanceEntryVector getEntriesByType(const String& entryType);
81 PerformanceEntryVector getEntriesByName(const String& name, const String& en tryType); 82 PerformanceEntryVector getEntriesByName(const String& name, const String& en tryType);
82 83
83 void clearResourceTimings(); 84 void clearResourceTimings();
84 void setResourceTimingBufferSize(unsigned); 85 void setResourceTimingBufferSize(unsigned);
85 86
86 DEFINE_ATTRIBUTE_EVENT_LISTENER(resourcetimingbufferfull); 87 DEFINE_ATTRIBUTE_EVENT_LISTENER(resourcetimingbufferfull);
87 DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitresourcetimingbufferfull); 88 DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitresourcetimingbufferfull);
88 89
89 void clearFrameTimings(); 90 void clearFrameTimings();
90 void setFrameTimingBufferSize(unsigned); 91 void setFrameTimingBufferSize(unsigned);
91 92
92 DEFINE_ATTRIBUTE_EVENT_LISTENER(frametimingbufferfull); 93 DEFINE_ATTRIBUTE_EVENT_LISTENER(frametimingbufferfull);
93 94
95 void clearLongTaskTimings();
96 void setLongTaskTimingBufferSize(unsigned);
97
98 DEFINE_ATTRIBUTE_EVENT_LISTENER(longtasktimingbufferfull);
99
100 void addLongTaskTiming(double, double, const String& frameContextUrl);
101
94 void addResourceTiming(const ResourceTimingInfo&); 102 void addResourceTiming(const ResourceTimingInfo&);
95 103
96 void addRenderTiming(Document*, unsigned, double, double); 104 void addRenderTiming(Document*, unsigned, double, double);
97 105
98 void addCompositeTiming(Document*, unsigned, double); 106 void addCompositeTiming(Document*, unsigned, double);
99 107
100 void mark(const String& markName, ExceptionState&); 108 void mark(const String& markName, ExceptionState&);
101 void clearMarks(const String& markName); 109 void clearMarks(const String& markName);
102 110
103 void measure(const String& measureName, const String& startMark, const Strin g& endMark, ExceptionState&); 111 void measure(const String& measureName, const String& startMark, const Strin g& endMark, ExceptionState&);
104 void clearMeasures(const String& measureName); 112 void clearMeasures(const String& measureName);
105 113
106 void unregisterPerformanceObserver(PerformanceObserver&); 114 void unregisterPerformanceObserver(PerformanceObserver&);
107 void registerPerformanceObserver(PerformanceObserver&); 115 void registerPerformanceObserver(PerformanceObserver&);
108 void updatePerformanceObserverFilterOptions(); 116 void updatePerformanceObserverFilterOptions();
109 void activateObserver(PerformanceObserver&); 117 void activateObserver(PerformanceObserver&);
110 void resumeSuspendedObservers(); 118 void resumeSuspendedObservers();
111 119
112 DECLARE_VIRTUAL_TRACE(); 120 DECLARE_VIRTUAL_TRACE();
113 121
114 protected: 122 protected:
115 explicit PerformanceBase(double timeOrigin); 123 explicit PerformanceBase(double timeOrigin);
116 124
117 bool isResourceTimingBufferFull(); 125 bool isResourceTimingBufferFull();
118 void addResourceTimingBuffer(PerformanceEntry&); 126 void addResourceTimingBuffer(PerformanceEntry&);
119 127
120 bool isFrameTimingBufferFull(); 128 bool isFrameTimingBufferFull();
121 void addFrameTimingBuffer(PerformanceEntry&); 129 void addFrameTimingBuffer(PerformanceEntry&);
122 130
131 bool isLongTaskTimingBufferFull();
132 void addLongTaskTimingBuffer(PerformanceEntry&);
133
123 void notifyObserversOfEntry(PerformanceEntry&); 134 void notifyObserversOfEntry(PerformanceEntry&);
124 bool hasObserverFor(PerformanceEntry::EntryType); 135 bool hasObserverFor(PerformanceEntry::EntryType);
125 136
126 void deliverObservationsTimerFired(TimerBase*); 137 void deliverObservationsTimerFired(TimerBase*);
127 138
128 PerformanceEntryVector m_frameTimingBuffer; 139 PerformanceEntryVector m_frameTimingBuffer;
129 unsigned m_frameTimingBufferSize; 140 unsigned m_frameTimingBufferSize;
130 PerformanceEntryVector m_resourceTimingBuffer; 141 PerformanceEntryVector m_resourceTimingBuffer;
131 unsigned m_resourceTimingBufferSize; 142 unsigned m_resourceTimingBufferSize;
143 PerformanceEntryVector m_longTaskTimingBuffer;
144 unsigned m_longTaskTimingBufferSize;
145 Member<UserTiming> m_userTiming;
146
132 double m_timeOrigin; 147 double m_timeOrigin;
133 148
134 Member<UserTiming> m_userTiming;
135
136 PerformanceEntryTypeMask m_observerFilterOptions; 149 PerformanceEntryTypeMask m_observerFilterOptions;
137 PerformanceObservers m_observers; 150 PerformanceObservers m_observers;
138 PerformanceObservers m_activeObservers; 151 PerformanceObservers m_activeObservers;
139 PerformanceObservers m_suspendedObservers; 152 PerformanceObservers m_suspendedObservers;
140 Timer<PerformanceBase> m_deliverObservationsTimer; 153 Timer<PerformanceBase> m_deliverObservationsTimer;
141 }; 154 };
142 155
143 } // namespace blink 156 } // namespace blink
144 157
145 #endif // PerformanceBase_h 158 #endif // PerformanceBase_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/timing/Performance.idl ('k') | third_party/WebKit/Source/core/timing/PerformanceBase.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698