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

Unified Diff: Source/core/timing/PerformanceBase.h

Issue 1198863006: First version of PerformanceObserver (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Sync with latest spec draft (DOMString -> PerformanceEntryType and new PerformanceObserver -> windo… Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/timing/PerformanceBase.h
diff --git a/Source/core/timing/PerformanceBase.h b/Source/core/timing/PerformanceBase.h
index 344ee39bd06f292308b24db49d8b58f9d2d4ff84..2562162798eb6822a6b517fc1f7d76e7f5a5c829 100644
--- a/Source/core/timing/PerformanceBase.h
+++ b/Source/core/timing/PerformanceBase.h
@@ -32,6 +32,7 @@
#ifndef PerformanceBase_h
#define PerformanceBase_h
+#include "bindings/core/v8/V8PerformanceObserverCallback.h"
#include "core/CoreExport.h"
#include "core/events/EventTarget.h"
#include "core/timing/PerformanceEntry.h"
@@ -44,11 +45,16 @@ namespace blink {
class Document;
class ExceptionState;
+class PerformanceObserver;
+class PerformanceObserverRegistration;
class PerformanceTiming;
class ResourceTimingInfo;
class UserTiming;
using PerformanceEntryVector = HeapVector<Member<PerformanceEntry>>;
+using PerformanceObserverRegistrationVector = HeapVector<Member<PerformanceObserverRegistration>>;
+using FilterTypeIndex = size_t;
+using PerformanceObserverRegistrations = HeapHashMap<FilterTypeIndex, PerformanceObserverRegistrationVector>;
class CORE_EXPORT PerformanceBase : public RefCountedGarbageCollectedEventTargetWithInlineData<PerformanceBase> {
REFCOUNTED_GARBAGE_COLLECTED_EVENT_TARGET(PerformanceBase);
@@ -88,9 +94,21 @@ public:
void measure(const String& measureName, const String& startMark, const String& endMark, ExceptionState&);
void clearMeasures(const String& measureName);
+ PerformanceObserver* createPerformanceObserver(PerformanceObserverCallback*);
+ void unregisterPerformanceObserver(PerformanceObserverRegistration*);
+ void registerPerformanceObserver(PerformanceObserverRegistration*);
+
DECLARE_VIRTUAL_TRACE();
protected:
+ enum FilterType {
+ Composite = 1,
esprehn 2015/07/18 22:24:16 UnknownFilter, or maybe InvalidFilter CompositeFil
MikeB 2015/07/20 23:06:50 Done.
+ Mark,
+ Measure,
+ Render,
+ Resource,
+ };
+
explicit PerformanceBase(double timeOrigin);
bool isResourceTimingBufferFull();
void addResourceTimingBuffer(PerformanceEntry*);
@@ -98,6 +116,9 @@ protected:
bool isFrameTimingBufferFull();
void addFrameTimingBuffer(PerformanceEntry*);
+ void notifyObserversOfEntry(FilterType, PerformanceEntry*);
+ bool hasObserverFor(FilterType);
+
PerformanceEntryVector m_frameTimingBuffer;
unsigned m_frameTimingBufferSize;
PerformanceEntryVector m_resourceTimingBuffer;
@@ -105,6 +126,8 @@ protected:
double m_timeOrigin;
Member<UserTiming> m_userTiming;
+
+ PerformanceObserverRegistrations m_observerRegistry;
};
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698