Index: Source/core/timing/PerformanceBase.h |
diff --git a/Source/core/timing/PerformanceBase.h b/Source/core/timing/PerformanceBase.h |
index 6ea407086c2363ee6ca2dfaaaee00b6bbcb0e5ee..cd56537ea910464925457528c0340c59e0091624 100644 |
--- a/Source/core/timing/PerformanceBase.h |
+++ b/Source/core/timing/PerformanceBase.h |
@@ -35,6 +35,7 @@ |
#include "core/CoreExport.h" |
#include "core/events/EventTarget.h" |
#include "core/timing/PerformanceEntry.h" |
+#include "platform/Timer.h" |
#include "platform/heap/Handle.h" |
#include "wtf/RefCounted.h" |
#include "wtf/RefPtr.h" |
@@ -44,11 +45,13 @@ namespace blink { |
class Document; |
class ExceptionState; |
+class PerformanceObserver; |
class PerformanceTiming; |
class ResourceTimingInfo; |
class UserTiming; |
using PerformanceEntryVector = HeapVector<Member<PerformanceEntry>>; |
+using PerformanceObservers = HeapListHashSet<Member<PerformanceObserver>>; |
class CORE_EXPORT PerformanceBase : public RefCountedGarbageCollectedEventTargetWithInlineData<PerformanceBase> { |
REFCOUNTED_GARBAGE_COLLECTED_EVENT_TARGET(PerformanceBase); |
@@ -89,15 +92,27 @@ public: |
void measure(const String& measureName, const String& startMark, const String& endMark, ExceptionState&); |
void clearMeasures(const String& measureName); |
+ void unregisterPerformanceObserver(PerformanceObserver&); |
+ void registerPerformanceObserver(PerformanceObserver&); |
+ void updatePerformanceObserverFilterOptions(); |
+ void activateObserver(PerformanceObserver&); |
+ void resumeSuspendedObservers(); |
+ |
DECLARE_VIRTUAL_TRACE(); |
protected: |
+ |
explicit PerformanceBase(double timeOrigin); |
bool isResourceTimingBufferFull(); |
- void addResourceTimingBuffer(PerformanceEntry*); |
+ void addResourceTimingBuffer(PerformanceEntry&); |
bool isFrameTimingBufferFull(); |
- void addFrameTimingBuffer(PerformanceEntry*); |
+ void addFrameTimingBuffer(PerformanceEntry&); |
+ |
+ void notifyObserversOfEntry(PerformanceEntry&); |
+ bool hasObserverFor(PerformanceEntry::EntryType); |
+ |
+ void deliverObservationsTimerFired(Timer<PerformanceBase>*); |
PerformanceEntryVector m_frameTimingBuffer; |
unsigned m_frameTimingBufferSize; |
@@ -106,6 +121,12 @@ protected: |
double m_timeOrigin; |
Member<UserTiming> m_userTiming; |
+ |
+ PerformanceEntryTypeMask m_observerFilterOptions; |
+ PerformanceObservers m_observers; |
+ PerformanceObservers m_activeObservers; |
+ PerformanceObservers m_suspendedObservers; |
+ Timer<PerformanceBase> m_deliverObservationsTimer; |
}; |
} // namespace blink |