| Index: Source/core/timing/PerformanceBase.h
|
| diff --git a/Source/core/timing/PerformanceBase.h b/Source/core/timing/PerformanceBase.h
|
| index 344ee39bd06f292308b24db49d8b58f9d2d4ff84..aaf186f1620be5cc3cd4d3c3f92e86713bcec68e 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);
|
| @@ -88,15 +91,26 @@ 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 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;
|
| @@ -105,6 +119,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
|
|
|