1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef InspectorTraceEvents_h
6#define InspectorTraceEvents_h
7
8#include "platform/EventTracer.h"
9#include "platform/TraceEvent.h"
10#include "wtf/Forward.h"
11
12namespace blink {
13
14class Document;
15class Event;
16class ExecutionContext;
17class FrameView;
18class GraphicsContext;
19class GraphicsLayer;
20class KURL;
21class LayoutRect;
22class LocalFrame;
23class RenderImage;
24class RenderLayer;
25class RenderObject;
26class ResourceRequest;
27class ResourceResponse;
28class ScriptSourceCode;
29class ScriptCallStack;
30class WorkerThread;
31class XMLHttpRequest;
32
33class InspectorLayoutEvent {
34public:
35    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> beginData(FrameView*);
36    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> endData(RenderObject* rootForThisLayout);
37};
38
39class InspectorLayoutInvalidationTrackingEvent {
40public:
41    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(const RenderObject*);
42};
43
44class InspectorPaintInvalidationTrackingEvent {
45public:
46    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(const RenderObject* renderer, const RenderObject* paintContainer);
47};
48
49class InspectorSendRequestEvent {
50public:
51    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(unsigned long identifier, LocalFrame*, const ResourceRequest&);
52};
53
54class InspectorReceiveResponseEvent {
55public:
56    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(unsigned long identifier, LocalFrame*, const ResourceResponse&);
57};
58
59class InspectorReceiveDataEvent {
60public:
61    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(unsigned long identifier, LocalFrame*, int encodedDataLength);
62};
63
64class InspectorResourceFinishEvent {
65public:
66    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(unsigned long identifier, double finishTime, bool didFail);
67};
68
69class InspectorTimerInstallEvent {
70public:
71    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, int timerId, int timeout, bool singleShot);
72};
73
74class InspectorTimerRemoveEvent {
75public:
76    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, int timerId);
77};
78
79class InspectorTimerFireEvent {
80public:
81    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, int timerId);
82};
83
84class InspectorAnimationFrameEvent {
85public:
86    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(Document*, int callbackId);
87};
88
89class InspectorWebSocketCreateEvent {
90public:
91    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(Document*, unsigned long identifier, const KURL&, const String& protocol);
92};
93
94class InspectorWebSocketEvent {
95public:
96    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(Document*, unsigned long identifier);
97};
98
99class InspectorParseHtmlEvent {
100public:
101    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> beginData(Document*, unsigned startLine);
102};
103
104class InspectorXhrReadyStateChangeEvent {
105public:
106    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, XMLHttpRequest*);
107};
108
109class InspectorXhrLoadEvent {
110public:
111    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, XMLHttpRequest*);
112};
113
114class InspectorLayerInvalidationTrackingEvent {
115public:
116    static const char SquashingLayerGeometryWasUpdated[];
117    static const char AddedToSquashingLayer[];
118    static const char RemovedFromSquashingLayer[];
119    static const char ReflectionLayerChanged[];
120    static const char NewCompositedLayer[];
121    static const char AncestorRequiresNewLayer[];
122
123    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(const RenderLayer*, const char* reason);
124};
125#define TRACE_LAYER_INVALIDATION(LAYER, REASON) \
126    TRACE_EVENT_INSTANT1( \
127        TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"), \
128        "LayerInvalidationTracking", \
129        "data", \
130        InspectorLayerInvalidationTrackingEvent::data((LAYER), (REASON)))
131
132class InspectorPaintEvent {
133public:
134    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(RenderObject*, const LayoutRect& clipRect, const GraphicsLayer*);
135};
136
137class InspectorPaintImageEvent {
138public:
139    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(const RenderImage&);
140};
141
142class InspectorMarkLoadEvent {
143public:
144    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(LocalFrame*);
145};
146
147class InspectorScrollLayerEvent {
148public:
149    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(RenderObject*);
150};
151
152class InspectorEvaluateScriptEvent {
153public:
154    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(LocalFrame*, const String& url, int lineNumber);
155};
156
157class InspectorFunctionCallEvent {
158public:
159    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, int scriptId, const String& scriptName, int scriptLine);
160};
161
162class InspectorUpdateCountersEvent {
163public:
164    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data();
165};
166
167class InspectorCallStackEvent {
168public:
169    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> currentCallStack();
170};
171
172class InspectorEventDispatchEvent {
173public:
174    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(const Event&);
175};
176
177class InspectorTimeStampEvent {
178public:
179    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(ExecutionContext*, const String& message);
180};
181
182class InspectorTracingSessionIdForWorkerEvent {
183public:
184    static PassRefPtr<TraceEvent::ConvertableToTraceFormat> data(const String& sessionId, WorkerThread*);
185};
186
187} // namespace blink
188
189
190#endif // !defined(InspectorTraceEvents_h)
191