blob: 9c9f40ca2722272e7b46dd852cb159900566f328 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef InspectorTraceEvents_h
#define InspectorTraceEvents_h
#include "core/css/CSSSelector.h"
#include "platform/EventTracer.h"
#include "platform/TraceEvent.h"
#include "platform/heap/Handle.h"
#include "wtf/Forward.h"
#include "wtf/Functional.h"
namespace blink {
class DescendantInvalidationSet;
class Document;
class Element;
class Event;
class ExecutionContext;
class FrameView;
class GraphicsLayer;
class KURL;
class LayoutRect;
class LocalFrame;
class Node;
class QualifiedName;
class RenderImage;
class RenderLayer;
class RenderObject;
class ResourceRequest;
class ResourceResponse;
class StyleChangeReasonForTracing;
class TracedValue;
class WorkerThread;
class XMLHttpRequest;
class InspectorLayoutEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> beginData(FrameView*);
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> endData(RenderObject* rootForThisLayout);
};
class InspectorScheduleStyleInvalidationTrackingEvent {
public:
static const char Attribute[];
static const char Class[];
static const char Id[];
static const char Pseudo[];
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> attributeChange(Element&, const DescendantInvalidationSet&, const QualifiedName&);
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> classChange(Element&, const DescendantInvalidationSet&, const AtomicString&);
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> idChange(Element&, const DescendantInvalidationSet&, const AtomicString&);
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> pseudoChange(Element&, const DescendantInvalidationSet&, CSSSelector::PseudoType);
private:
static PassRefPtr<TracedValue> fillCommonPart(Element&, const DescendantInvalidationSet&, const char* invalidatedSelector);
};
#define TRACE_SCHEDULE_STYLE_INVALIDATION(element, invalidationSet, changeType, ...) \
TRACE_EVENT_INSTANT1( \
TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"), \
"ScheduleStyleInvalidationTracking", \
"data", \
InspectorScheduleStyleInvalidationTrackingEvent::changeType((element), (invalidationSet), __VA_ARGS__))
class InspectorStyleRecalcInvalidationTrackingEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(Node*, const StyleChangeReasonForTracing&);
};
String descendantInvalidationSetToIdString(const DescendantInvalidationSet&);
class InspectorStyleInvalidatorInvalidateEvent {
public:
static const char ElementHasPendingInvalidationList[];
static const char InvalidateCustomPseudo[];
static const char InvalidationSetMatchedAttribute[];
static const char InvalidationSetMatchedClass[];
static const char InvalidationSetMatchedId[];
static const char InvalidationSetMatchedTagName[];
static const char PreventStyleSharingForParent[];
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(Element&, const char* reason);
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> selectorPart(Element&, const char* reason, const String&);
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> invalidationList(Element&, const WillBeHeapVector<RefPtrWillBeMember<DescendantInvalidationSet> >&);
private:
static PassRefPtr<TracedValue> fillCommonPart(Element&, const char* reason);
};
#define TRACE_STYLE_INVALIDATOR_INVALIDATION(element, reason) \
TRACE_EVENT_INSTANT1( \
TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"), \
"StyleInvalidatorInvalidationTracking", \
"data", \
InspectorStyleInvalidatorInvalidateEvent::data((element), (InspectorStyleInvalidatorInvalidateEvent::reason)))
#define TRACE_STYLE_INVALIDATOR_INVALIDATION_SELECTORPART(element, reason, singleSelectorPart) \
TRACE_EVENT_INSTANT1( \
TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"), \
"StyleInvalidatorInvalidationTracking", \
"data", \
InspectorStyleInvalidatorInvalidateEvent::selectorPart((element), (InspectorStyleInvalidatorInvalidateEvent::reason), (singleSelectorPart)))
class InspectorLayoutInvalidationTrackingEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(const RenderObject*);
};
class InspectorPaintInvalidationTrackingEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(const RenderObject* renderer, const RenderObject* paintContainer);
};
class InspectorSendRequestEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(unsigned long identifier, LocalFrame*, const ResourceRequest&);
};
class InspectorReceiveResponseEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(unsigned long identifier, LocalFrame*, const ResourceResponse&);
};
class InspectorReceiveDataEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(unsigned long identifier, LocalFrame*, int encodedDataLength);
};
class InspectorResourceFinishEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(unsigned long identifier, double finishTime, bool didFail);
};
class InspectorTimerInstallEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, int timerId, int timeout, bool singleShot);
};
class InspectorTimerRemoveEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, int timerId);
};
class InspectorTimerFireEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, int timerId);
};
class InspectorAnimationFrameEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(Document*, int callbackId);
};
class InspectorWebSocketCreateEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(Document*, unsigned long identifier, const KURL&, const String& protocol);
};
class InspectorWebSocketEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(Document*, unsigned long identifier);
};
class InspectorParseHtmlEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> beginData(Document*, unsigned startLine);
};
class InspectorXhrReadyStateChangeEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, XMLHttpRequest*);
};
class InspectorXhrLoadEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, XMLHttpRequest*);
};
class InspectorLayerInvalidationTrackingEvent {
public:
static const char SquashingLayerGeometryWasUpdated[];
static const char AddedToSquashingLayer[];
static const char RemovedFromSquashingLayer[];
static const char ReflectionLayerChanged[];
static const char NewCompositedLayer[];
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(const RenderLayer*, const char* reason);
};
#define TRACE_LAYER_INVALIDATION(LAYER, REASON) \
TRACE_EVENT_INSTANT1( \
TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"), \
"LayerInvalidationTracking", \
"data", \
InspectorLayerInvalidationTrackingEvent::data((LAYER), (REASON)))
class InspectorPaintEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(RenderObject*, const LayoutRect& clipRect, const GraphicsLayer*);
};
class InspectorPaintImageEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(const RenderImage&);
};
class InspectorMarkLoadEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(LocalFrame*);
};
class InspectorScrollLayerEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(RenderObject*);
};
class InspectorEvaluateScriptEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(LocalFrame*, const String& url, int lineNumber);
};
class InspectorFunctionCallEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, int scriptId, const String& scriptName, int scriptLine);
};
class InspectorUpdateCountersEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data();
};
class InspectorCallStackEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> currentCallStack();
};
class InspectorEventDispatchEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(const Event&);
};
class InspectorTimeStampEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, const String& message);
};
class InspectorTracingSessionIdForWorkerEvent {
public:
static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(const String& sessionId, WorkerThread*);
};
} // namespace blink
#endif // !defined(InspectorTraceEvents_h)