1 | /* |
2 | * Copyright (C) 2010 Google Inc. All rights reserved. |
3 | * Copyright (C) 2014-2016 Apple Inc. All rights reserved. |
4 | * |
5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions are |
7 | * met: |
8 | * |
9 | * * Redistributions of source code must retain the above copyright |
10 | * notice, this list of conditions and the following disclaimer. |
11 | * * Redistributions in binary form must reproduce the above |
12 | * copyright notice, this list of conditions and the following disclaimer |
13 | * in the documentation and/or other materials provided with the |
14 | * distribution. |
15 | * * Neither the name of Google Inc. nor the names of its |
16 | * contributors may be used to endorse or promote products derived from |
17 | * this software without specific prior written permission. |
18 | * |
19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
20 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
21 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
22 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
23 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
24 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
25 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
26 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
27 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
28 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
29 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
30 | */ |
31 | |
32 | #pragma once |
33 | |
34 | #include "CSSSelector.h" |
35 | #include "CallTracerTypes.h" |
36 | #include "CanvasBase.h" |
37 | #include "CanvasRenderingContext.h" |
38 | #include "Database.h" |
39 | #include "DocumentThreadableLoader.h" |
40 | #include "Element.h" |
41 | #include "EventTarget.h" |
42 | #include "FormData.h" |
43 | #include "Frame.h" |
44 | #include "HitTestResult.h" |
45 | #include "InspectorController.h" |
46 | #include "InspectorInstrumentationCookie.h" |
47 | #include "OffscreenCanvas.h" |
48 | #include "Page.h" |
49 | #include "StorageArea.h" |
50 | #include "WorkerGlobalScope.h" |
51 | #include "WorkerInspectorController.h" |
52 | #include <JavaScriptCore/JSCInlines.h> |
53 | #include <wtf/MemoryPressureHandler.h> |
54 | #include <wtf/RefPtr.h> |
55 | |
56 | #if ENABLE(WEBGL) |
57 | #include "WebGLRenderingContextBase.h" |
58 | #endif |
59 | |
60 | namespace Inspector { |
61 | class ConsoleMessage; |
62 | class ScriptArguments; |
63 | class ScriptCallStack; |
64 | } |
65 | |
66 | namespace WebCore { |
67 | |
68 | class CachedResource; |
69 | class CharacterData; |
70 | class DOMWindow; |
71 | class DOMWrapperWorld; |
72 | class Document; |
73 | class DocumentLoader; |
74 | class EventListener; |
75 | class ; |
76 | class InspectorTimelineAgent; |
77 | class InstrumentingAgents; |
78 | class NetworkLoadMetrics; |
79 | class Node; |
80 | class PseudoElement; |
81 | class RegisteredEventListener; |
82 | class RenderLayer; |
83 | class RenderObject; |
84 | class ResourceLoader; |
85 | class ResourceRequest; |
86 | class ResourceResponse; |
87 | class ScriptExecutionContext; |
88 | class SecurityOrigin; |
89 | class ShadowRoot; |
90 | class TimerBase; |
91 | #if ENABLE(WEBGL) |
92 | class WebGLProgram; |
93 | #endif |
94 | class WebKitNamedFlow; |
95 | class WorkerInspectorProxy; |
96 | |
97 | enum class StorageType; |
98 | |
99 | struct WebSocketFrame; |
100 | |
101 | #define FAST_RETURN_IF_NO_FRONTENDS(value) if (LIKELY(!InspectorInstrumentation::hasFrontends())) return value; |
102 | |
103 | class InspectorInstrumentation { |
104 | public: |
105 | static void didClearWindowObjectInWorld(Frame&, DOMWrapperWorld&); |
106 | static bool isDebuggerPaused(Frame*); |
107 | |
108 | static int identifierForNode(Node&); |
109 | static void addEventListenersToNode(Node&); |
110 | static void willInsertDOMNode(Document&, Node& parent); |
111 | static void didInsertDOMNode(Document&, Node&); |
112 | static void willRemoveDOMNode(Document&, Node&); |
113 | static void didRemoveDOMNode(Document&, Node&); |
114 | static void willModifyDOMAttr(Document&, Element&, const AtomicString& oldValue, const AtomicString& newValue); |
115 | static void didModifyDOMAttr(Document&, Element&, const AtomicString& name, const AtomicString& value); |
116 | static void didRemoveDOMAttr(Document&, Element&, const AtomicString& name); |
117 | static void characterDataModified(Document&, CharacterData&); |
118 | static void willInvalidateStyleAttr(Element&); |
119 | static void didInvalidateStyleAttr(Element&); |
120 | static void documentDetached(Document&); |
121 | static void frameWindowDiscarded(Frame&, DOMWindow*); |
122 | static void mediaQueryResultChanged(Document&); |
123 | static void activeStyleSheetsUpdated(Document&); |
124 | static void didPushShadowRoot(Element& host, ShadowRoot&); |
125 | static void willPopShadowRoot(Element& host, ShadowRoot&); |
126 | static void didChangeCustomElementState(Element&); |
127 | static void pseudoElementCreated(Page*, PseudoElement&); |
128 | static void pseudoElementDestroyed(Page*, PseudoElement&); |
129 | static void didCreateNamedFlow(Document*, WebKitNamedFlow&); |
130 | static void willRemoveNamedFlow(Document*, WebKitNamedFlow&); |
131 | static void didChangeRegionOverset(Document&, WebKitNamedFlow&); |
132 | static void didRegisterNamedFlowContentElement(Document&, WebKitNamedFlow&, Node& contentElement, Node* nextContentElement = nullptr); |
133 | static void didUnregisterNamedFlowContentElement(Document&, WebKitNamedFlow&, Node& contentElement); |
134 | |
135 | static void mouseDidMoveOverElement(Page&, const HitTestResult&, unsigned modifierFlags); |
136 | static bool handleMousePress(Frame&); |
137 | static bool handleTouchEvent(Frame&, Node&); |
138 | static bool forcePseudoState(const Element&, CSSSelector::PseudoClassType); |
139 | |
140 | static void willSendXMLHttpRequest(ScriptExecutionContext*, const String& url); |
141 | static void willFetch(ScriptExecutionContext&, const String& url); |
142 | static void didInstallTimer(ScriptExecutionContext&, int timerId, Seconds timeout, bool singleShot); |
143 | static void didRemoveTimer(ScriptExecutionContext&, int timerId); |
144 | |
145 | static void didPostMessage(Frame&, TimerBase&, JSC::ExecState&); |
146 | static void didFailPostMessage(Frame&, TimerBase&); |
147 | static void willDispatchPostMessage(Frame&, TimerBase&); |
148 | static void didDispatchPostMessage(Frame&, TimerBase&); |
149 | |
150 | static InspectorInstrumentationCookie willCallFunction(ScriptExecutionContext*, const String& scriptName, int scriptLine, int scriptColumn); |
151 | static void didCallFunction(const InspectorInstrumentationCookie&, ScriptExecutionContext*); |
152 | static void didAddEventListener(EventTarget&, const AtomicString& eventType, EventListener&, bool capture); |
153 | static void willRemoveEventListener(EventTarget&, const AtomicString& eventType, EventListener&, bool capture); |
154 | static bool isEventListenerDisabled(EventTarget&, const AtomicString& eventType, EventListener&, bool capture); |
155 | static InspectorInstrumentationCookie willDispatchEvent(Document&, const Event&, bool hasEventListeners); |
156 | static void didDispatchEvent(const InspectorInstrumentationCookie&, bool defaultPrevented); |
157 | static void willHandleEvent(ScriptExecutionContext&, Event&, const RegisteredEventListener&); |
158 | static void didHandleEvent(ScriptExecutionContext&); |
159 | static InspectorInstrumentationCookie willDispatchEventOnWindow(Frame*, const Event&, DOMWindow&); |
160 | static void didDispatchEventOnWindow(const InspectorInstrumentationCookie&, bool defaultPrevented); |
161 | static void eventDidResetAfterDispatch(const Event&); |
162 | static InspectorInstrumentationCookie willEvaluateScript(Frame&, const String& url, int lineNumber, int columnNumber); |
163 | static void didEvaluateScript(const InspectorInstrumentationCookie&, Frame&); |
164 | static InspectorInstrumentationCookie willFireTimer(ScriptExecutionContext&, int timerId, bool oneShot); |
165 | static void didFireTimer(const InspectorInstrumentationCookie&); |
166 | static void didInvalidateLayout(Frame&); |
167 | static InspectorInstrumentationCookie willLayout(Frame&); |
168 | static void didLayout(const InspectorInstrumentationCookie&, RenderObject&); |
169 | static void didScroll(Page&); |
170 | static void willComposite(Frame&); |
171 | static void didComposite(Frame&); |
172 | static void willPaint(RenderObject&); |
173 | static void didPaint(RenderObject&, const LayoutRect&); |
174 | static InspectorInstrumentationCookie willRecalculateStyle(Document&); |
175 | static void didRecalculateStyle(const InspectorInstrumentationCookie&); |
176 | static void didScheduleStyleRecalculation(Document&); |
177 | static void applyUserAgentOverride(Frame&, String&); |
178 | static void applyEmulatedMedia(Frame&, String&); |
179 | |
180 | static void willSendRequest(Frame*, unsigned long identifier, DocumentLoader*, ResourceRequest&, const ResourceResponse& redirectResponse); |
181 | static void didLoadResourceFromMemoryCache(Page&, DocumentLoader*, CachedResource*); |
182 | static void didReceiveResourceResponse(Frame&, unsigned long identifier, DocumentLoader*, const ResourceResponse&, ResourceLoader*); |
183 | static void didReceiveThreadableLoaderResponse(DocumentThreadableLoader&, unsigned long identifier); |
184 | static void didReceiveData(Frame*, unsigned long identifier, const char* data, int dataLength, int encodedDataLength); |
185 | static void didFinishLoading(Frame*, DocumentLoader*, unsigned long identifier, const NetworkLoadMetrics&, ResourceLoader*); |
186 | static void didFailLoading(Frame*, DocumentLoader*, unsigned long identifier, const ResourceError&); |
187 | |
188 | static void willSendRequest(WorkerGlobalScope&, unsigned long identifier, ResourceRequest&); |
189 | static void didReceiveResourceResponse(WorkerGlobalScope&, unsigned long identifier, const ResourceResponse&); |
190 | static void didReceiveData(WorkerGlobalScope&, unsigned long identifier, const char* data, int dataLength); |
191 | static void didFinishLoading(WorkerGlobalScope&, unsigned long identifier, const NetworkLoadMetrics&); |
192 | static void didFailLoading(WorkerGlobalScope&, unsigned long identifier, const ResourceError&); |
193 | |
194 | // Some network requests do not go through the normal network loading path. |
195 | // These network requests have to issue their own willSendRequest / didReceiveResponse / didFinishLoading / didFailLoading |
196 | // instrumentation calls. Some of these loads are for resources that lack a CachedResource::Type. |
197 | enum class LoadType { Ping, Beacon }; |
198 | static void willSendRequestOfType(Frame*, unsigned long identifier, DocumentLoader*, ResourceRequest&, LoadType); |
199 | |
200 | static void continueAfterXFrameOptionsDenied(Frame&, unsigned long identifier, DocumentLoader&, const ResourceResponse&); |
201 | static void continueWithPolicyDownload(Frame&, unsigned long identifier, DocumentLoader&, const ResourceResponse&); |
202 | static void continueWithPolicyIgnore(Frame&, unsigned long identifier, DocumentLoader&, const ResourceResponse&); |
203 | static void willLoadXHRSynchronously(ScriptExecutionContext*); |
204 | static void didLoadXHRSynchronously(ScriptExecutionContext*); |
205 | static void scriptImported(ScriptExecutionContext&, unsigned long identifier, const String& sourceString); |
206 | static void scriptExecutionBlockedByCSP(ScriptExecutionContext*, const String& directiveText); |
207 | static void didReceiveScriptResponse(ScriptExecutionContext*, unsigned long identifier); |
208 | static void domContentLoadedEventFired(Frame&); |
209 | static void loadEventFired(Frame*); |
210 | static void frameDetachedFromParent(Frame&); |
211 | static void didCommitLoad(Frame&, DocumentLoader*); |
212 | static void frameDocumentUpdated(Frame&); |
213 | static void loaderDetachedFromFrame(Frame&, DocumentLoader&); |
214 | static void frameStartedLoading(Frame&); |
215 | static void frameStoppedLoading(Frame&); |
216 | static void frameScheduledNavigation(Frame&, Seconds delay); |
217 | static void frameClearedScheduledNavigation(Frame&); |
218 | static void defaultAppearanceDidChange(Page&, bool useDarkAppearance); |
219 | static void willDestroyCachedResource(CachedResource&); |
220 | |
221 | static void addMessageToConsole(Page&, std::unique_ptr<Inspector::ConsoleMessage>); |
222 | static void addMessageToConsole(WorkerGlobalScope&, std::unique_ptr<Inspector::ConsoleMessage>); |
223 | |
224 | static void consoleCount(Page&, JSC::ExecState*, Ref<Inspector::ScriptArguments>&&); |
225 | static void consoleCount(WorkerGlobalScope&, JSC::ExecState*, Ref<Inspector::ScriptArguments>&&); |
226 | static void takeHeapSnapshot(Frame&, const String& title); |
227 | static void startConsoleTiming(Frame&, const String& title); |
228 | static void startConsoleTiming(WorkerGlobalScope&, const String& title); |
229 | static void stopConsoleTiming(Frame&, const String& title, Ref<Inspector::ScriptCallStack>&&); |
230 | static void stopConsoleTiming(WorkerGlobalScope&, const String& title, Ref<Inspector::ScriptCallStack>&&); |
231 | static void consoleTimeStamp(Frame&, Ref<Inspector::ScriptArguments>&&); |
232 | static void startProfiling(Page&, JSC::ExecState*, const String& title); |
233 | static void stopProfiling(Page&, JSC::ExecState*, const String& title); |
234 | static void consoleStartRecordingCanvas(CanvasRenderingContext&, JSC::ExecState&, JSC::JSObject* options); |
235 | |
236 | static void didRequestAnimationFrame(Document&, int callbackId); |
237 | static void didCancelAnimationFrame(Document&, int callbackId); |
238 | static InspectorInstrumentationCookie willFireAnimationFrame(Document&, int callbackId); |
239 | static void didFireAnimationFrame(const InspectorInstrumentationCookie&); |
240 | |
241 | static InspectorInstrumentationCookie willFireObserverCallback(ScriptExecutionContext&, const String& callbackType); |
242 | static void didFireObserverCallback(const InspectorInstrumentationCookie&); |
243 | |
244 | static void didOpenDatabase(Database&); |
245 | |
246 | static void didDispatchDOMStorageEvent(Page&, const String& key, const String& oldValue, const String& newValue, StorageType, SecurityOrigin*); |
247 | |
248 | static bool shouldWaitForDebuggerOnStart(ScriptExecutionContext&); |
249 | static void workerStarted(ScriptExecutionContext&, WorkerInspectorProxy*, const URL&); |
250 | static void workerTerminated(ScriptExecutionContext&, WorkerInspectorProxy*); |
251 | |
252 | static void didCreateWebSocket(Document*, unsigned long identifier, const URL& requestURL); |
253 | static void willSendWebSocketHandshakeRequest(Document*, unsigned long identifier, const ResourceRequest&); |
254 | static void didReceiveWebSocketHandshakeResponse(Document*, unsigned long identifier, const ResourceResponse&); |
255 | static void didCloseWebSocket(Document*, unsigned long identifier); |
256 | static void didReceiveWebSocketFrame(Document*, unsigned long identifier, const WebSocketFrame&); |
257 | static void didSendWebSocketFrame(Document*, unsigned long identifier, const WebSocketFrame&); |
258 | static void didReceiveWebSocketFrameError(Document*, unsigned long identifier, const String& errorMessage); |
259 | |
260 | #if ENABLE(RESOURCE_USAGE) |
261 | static void didHandleMemoryPressure(Page&, Critical); |
262 | #endif |
263 | |
264 | static void didChangeCSSCanvasClientNodes(CanvasBase&); |
265 | static void didCreateCanvasRenderingContext(CanvasRenderingContext&); |
266 | static void didChangeCanvasMemory(CanvasRenderingContext&); |
267 | static void recordCanvasAction(CanvasRenderingContext&, const String&, Vector<RecordCanvasActionVariant>&& = { }); |
268 | static void didFinishRecordingCanvasFrame(CanvasRenderingContext&, bool forceDispatch = false); |
269 | #if ENABLE(WEBGL) |
270 | static void didEnableExtension(WebGLRenderingContextBase&, const String&); |
271 | static void didCreateProgram(WebGLRenderingContextBase&, WebGLProgram&); |
272 | static void willDeleteProgram(WebGLRenderingContextBase&, WebGLProgram&); |
273 | static bool isShaderProgramDisabled(WebGLRenderingContextBase&, WebGLProgram&); |
274 | static bool isShaderProgramHighlighted(WebGLRenderingContextBase&, WebGLProgram&); |
275 | #endif |
276 | |
277 | static void networkStateChanged(Page&); |
278 | static void updateApplicationCacheStatus(Frame*); |
279 | |
280 | static void layerTreeDidChange(Page*); |
281 | static void renderLayerDestroyed(Page*, const RenderLayer&); |
282 | |
283 | static void frontendCreated(); |
284 | static void frontendDeleted(); |
285 | static bool hasFrontends() { return s_frontendCounter; } |
286 | |
287 | static void firstFrontendCreated(); |
288 | static void lastFrontendDeleted(); |
289 | |
290 | static bool consoleAgentEnabled(ScriptExecutionContext*); |
291 | static bool timelineAgentEnabled(ScriptExecutionContext*); |
292 | |
293 | static InstrumentingAgents* instrumentingAgentsForPage(Page*); |
294 | |
295 | static void registerInstrumentingAgents(InstrumentingAgents&); |
296 | static void unregisterInstrumentingAgents(InstrumentingAgents&); |
297 | |
298 | private: |
299 | static void didClearWindowObjectInWorldImpl(InstrumentingAgents&, Frame&, DOMWrapperWorld&); |
300 | static bool isDebuggerPausedImpl(InstrumentingAgents&); |
301 | |
302 | static int identifierForNodeImpl(InstrumentingAgents&, Node&); |
303 | static void addEventListenersToNodeImpl(InstrumentingAgents&, Node&); |
304 | static void willInsertDOMNodeImpl(InstrumentingAgents&, Node& parent); |
305 | static void didInsertDOMNodeImpl(InstrumentingAgents&, Node&); |
306 | static void willRemoveDOMNodeImpl(InstrumentingAgents&, Node&); |
307 | static void didRemoveDOMNodeImpl(InstrumentingAgents&, Node&); |
308 | static void willModifyDOMAttrImpl(InstrumentingAgents&, Element&, const AtomicString& oldValue, const AtomicString& newValue); |
309 | static void didModifyDOMAttrImpl(InstrumentingAgents&, Element&, const AtomicString& name, const AtomicString& value); |
310 | static void didRemoveDOMAttrImpl(InstrumentingAgents&, Element&, const AtomicString& name); |
311 | static void characterDataModifiedImpl(InstrumentingAgents&, CharacterData&); |
312 | static void willInvalidateStyleAttrImpl(InstrumentingAgents&, Element&); |
313 | static void didInvalidateStyleAttrImpl(InstrumentingAgents&, Element&); |
314 | static void documentDetachedImpl(InstrumentingAgents&, Document&); |
315 | static void frameWindowDiscardedImpl(InstrumentingAgents&, DOMWindow*); |
316 | static void mediaQueryResultChangedImpl(InstrumentingAgents&); |
317 | static void activeStyleSheetsUpdatedImpl(InstrumentingAgents&, Document&); |
318 | static void didPushShadowRootImpl(InstrumentingAgents&, Element& host, ShadowRoot&); |
319 | static void willPopShadowRootImpl(InstrumentingAgents&, Element& host, ShadowRoot&); |
320 | static void didChangeCustomElementStateImpl(InstrumentingAgents&, Element&); |
321 | static void pseudoElementCreatedImpl(InstrumentingAgents&, PseudoElement&); |
322 | static void pseudoElementDestroyedImpl(InstrumentingAgents&, PseudoElement&); |
323 | static void didCreateNamedFlowImpl(InstrumentingAgents&, Document*, WebKitNamedFlow&); |
324 | static void willRemoveNamedFlowImpl(InstrumentingAgents&, Document*, WebKitNamedFlow&); |
325 | static void didChangeRegionOversetImpl(InstrumentingAgents&, Document&, WebKitNamedFlow&); |
326 | static void didRegisterNamedFlowContentElementImpl(InstrumentingAgents&, Document&, WebKitNamedFlow&, Node& contentElement, Node* nextContentElement = nullptr); |
327 | static void didUnregisterNamedFlowContentElementImpl(InstrumentingAgents&, Document&, WebKitNamedFlow&, Node& contentElement); |
328 | |
329 | static void mouseDidMoveOverElementImpl(InstrumentingAgents&, const HitTestResult&, unsigned modifierFlags); |
330 | static bool handleMousePressImpl(InstrumentingAgents&); |
331 | static bool handleTouchEventImpl(InstrumentingAgents&, Node&); |
332 | static bool forcePseudoStateImpl(InstrumentingAgents&, const Element&, CSSSelector::PseudoClassType); |
333 | |
334 | static void willSendXMLHttpRequestImpl(InstrumentingAgents&, const String& url); |
335 | static void willFetchImpl(InstrumentingAgents&, const String& url); |
336 | static void didInstallTimerImpl(InstrumentingAgents&, int timerId, Seconds timeout, bool singleShot, ScriptExecutionContext&); |
337 | static void didRemoveTimerImpl(InstrumentingAgents&, int timerId, ScriptExecutionContext&); |
338 | |
339 | static void didPostMessageImpl(InstrumentingAgents&, const TimerBase&, JSC::ExecState&); |
340 | static void didFailPostMessageImpl(InstrumentingAgents&, const TimerBase&); |
341 | static void willDispatchPostMessageImpl(InstrumentingAgents&, const TimerBase&); |
342 | static void didDispatchPostMessageImpl(InstrumentingAgents&, const TimerBase&); |
343 | |
344 | static InspectorInstrumentationCookie willCallFunctionImpl(InstrumentingAgents&, const String& scriptName, int scriptLine, int scriptColumn, ScriptExecutionContext*); |
345 | static void didCallFunctionImpl(const InspectorInstrumentationCookie&, ScriptExecutionContext*); |
346 | static void didAddEventListenerImpl(InstrumentingAgents&, EventTarget&, const AtomicString& eventType, EventListener&, bool capture); |
347 | static void willRemoveEventListenerImpl(InstrumentingAgents&, EventTarget&, const AtomicString& eventType, EventListener&, bool capture); |
348 | static bool isEventListenerDisabledImpl(InstrumentingAgents&, EventTarget&, const AtomicString& eventType, EventListener&, bool capture); |
349 | static InspectorInstrumentationCookie willDispatchEventImpl(InstrumentingAgents&, Document&, const Event&, bool hasEventListeners); |
350 | static void willHandleEventImpl(InstrumentingAgents&, Event&, const RegisteredEventListener&); |
351 | static void didHandleEventImpl(InstrumentingAgents&); |
352 | static void didDispatchEventImpl(const InspectorInstrumentationCookie&, bool defaultPrevented); |
353 | static InspectorInstrumentationCookie willDispatchEventOnWindowImpl(InstrumentingAgents&, const Event&, DOMWindow&); |
354 | static void didDispatchEventOnWindowImpl(const InspectorInstrumentationCookie&, bool defaultPrevented); |
355 | static void eventDidResetAfterDispatchImpl(InstrumentingAgents&, const Event&); |
356 | static InspectorInstrumentationCookie willEvaluateScriptImpl(InstrumentingAgents&, Frame&, const String& url, int lineNumber, int columnNumber); |
357 | static void didEvaluateScriptImpl(const InspectorInstrumentationCookie&, Frame&); |
358 | static InspectorInstrumentationCookie willFireTimerImpl(InstrumentingAgents&, int timerId, bool oneShot, ScriptExecutionContext&); |
359 | static void didFireTimerImpl(const InspectorInstrumentationCookie&); |
360 | static void didInvalidateLayoutImpl(InstrumentingAgents&, Frame&); |
361 | static InspectorInstrumentationCookie willLayoutImpl(InstrumentingAgents&, Frame&); |
362 | static void didLayoutImpl(const InspectorInstrumentationCookie&, RenderObject&); |
363 | static void didScrollImpl(InstrumentingAgents&); |
364 | static void willCompositeImpl(InstrumentingAgents&, Frame&); |
365 | static void didCompositeImpl(InstrumentingAgents&); |
366 | static void willPaintImpl(InstrumentingAgents&, RenderObject&); |
367 | static void didPaintImpl(InstrumentingAgents&, RenderObject&, const LayoutRect&); |
368 | static InspectorInstrumentationCookie willRecalculateStyleImpl(InstrumentingAgents&, Document&); |
369 | static void didRecalculateStyleImpl(const InspectorInstrumentationCookie&); |
370 | static void didScheduleStyleRecalculationImpl(InstrumentingAgents&, Document&); |
371 | static void applyUserAgentOverrideImpl(InstrumentingAgents&, String&); |
372 | static void applyEmulatedMediaImpl(InstrumentingAgents&, String&); |
373 | |
374 | static void willSendRequestImpl(InstrumentingAgents&, unsigned long identifier, DocumentLoader*, ResourceRequest&, const ResourceResponse& redirectResponse); |
375 | static void willSendRequestOfTypeImpl(InstrumentingAgents&, unsigned long identifier, DocumentLoader*, ResourceRequest&, LoadType); |
376 | static void markResourceAsCachedImpl(InstrumentingAgents&, unsigned long identifier); |
377 | static void didLoadResourceFromMemoryCacheImpl(InstrumentingAgents&, DocumentLoader*, CachedResource*); |
378 | static void didReceiveResourceResponseImpl(InstrumentingAgents&, unsigned long identifier, DocumentLoader*, const ResourceResponse&, ResourceLoader*); |
379 | static void didReceiveThreadableLoaderResponseImpl(InstrumentingAgents&, DocumentThreadableLoader&, unsigned long identifier); |
380 | static void didReceiveDataImpl(InstrumentingAgents&, unsigned long identifier, const char* data, int dataLength, int encodedDataLength); |
381 | static void didFinishLoadingImpl(InstrumentingAgents&, unsigned long identifier, DocumentLoader*, const NetworkLoadMetrics&, ResourceLoader*); |
382 | static void didFailLoadingImpl(InstrumentingAgents&, unsigned long identifier, DocumentLoader*, const ResourceError&); |
383 | static void willLoadXHRSynchronouslyImpl(InstrumentingAgents&); |
384 | static void didLoadXHRSynchronouslyImpl(InstrumentingAgents&); |
385 | static void scriptImportedImpl(InstrumentingAgents&, unsigned long identifier, const String& sourceString); |
386 | static void scriptExecutionBlockedByCSPImpl(InstrumentingAgents&, const String& directiveText); |
387 | static void didReceiveScriptResponseImpl(InstrumentingAgents&, unsigned long identifier); |
388 | static void domContentLoadedEventFiredImpl(InstrumentingAgents&, Frame&); |
389 | static void loadEventFiredImpl(InstrumentingAgents&, Frame*); |
390 | static void frameDetachedFromParentImpl(InstrumentingAgents&, Frame&); |
391 | static void didCommitLoadImpl(InstrumentingAgents&, Frame&, DocumentLoader*); |
392 | static void frameDocumentUpdatedImpl(InstrumentingAgents&, Frame&); |
393 | static void loaderDetachedFromFrameImpl(InstrumentingAgents&, DocumentLoader&); |
394 | static void frameStartedLoadingImpl(InstrumentingAgents&, Frame&); |
395 | static void frameStoppedLoadingImpl(InstrumentingAgents&, Frame&); |
396 | static void frameScheduledNavigationImpl(InstrumentingAgents&, Frame&, Seconds delay); |
397 | static void frameClearedScheduledNavigationImpl(InstrumentingAgents&, Frame&); |
398 | static void defaultAppearanceDidChangeImpl(InstrumentingAgents&, bool useDarkAppearance); |
399 | static void willDestroyCachedResourceImpl(CachedResource&); |
400 | |
401 | static void addMessageToConsoleImpl(InstrumentingAgents&, std::unique_ptr<Inspector::ConsoleMessage>); |
402 | |
403 | static void consoleCountImpl(InstrumentingAgents&, JSC::ExecState*, Ref<Inspector::ScriptArguments>&&); |
404 | static void takeHeapSnapshotImpl(InstrumentingAgents&, const String& title); |
405 | static void startConsoleTimingImpl(InstrumentingAgents&, Frame&, const String& title); |
406 | static void startConsoleTimingImpl(InstrumentingAgents&, const String& title); |
407 | static void stopConsoleTimingImpl(InstrumentingAgents&, Frame&, const String& title, Ref<Inspector::ScriptCallStack>&&); |
408 | static void stopConsoleTimingImpl(InstrumentingAgents&, const String& title, Ref<Inspector::ScriptCallStack>&&); |
409 | static void consoleTimeStampImpl(InstrumentingAgents&, Frame&, Ref<Inspector::ScriptArguments>&&); |
410 | static void startProfilingImpl(InstrumentingAgents&, JSC::ExecState*, const String& title); |
411 | static void stopProfilingImpl(InstrumentingAgents&, JSC::ExecState*, const String& title); |
412 | static void consoleStartRecordingCanvasImpl(InstrumentingAgents&, CanvasRenderingContext&, JSC::ExecState&, JSC::JSObject* options); |
413 | |
414 | static void didRequestAnimationFrameImpl(InstrumentingAgents&, int callbackId, Document&); |
415 | static void didCancelAnimationFrameImpl(InstrumentingAgents&, int callbackId, Document&); |
416 | static InspectorInstrumentationCookie willFireAnimationFrameImpl(InstrumentingAgents&, int callbackId, Document&); |
417 | static void didFireAnimationFrameImpl(const InspectorInstrumentationCookie&); |
418 | |
419 | static InspectorInstrumentationCookie willFireObserverCallbackImpl(InstrumentingAgents&, const String&, ScriptExecutionContext&); |
420 | static void didFireObserverCallbackImpl(const InspectorInstrumentationCookie&); |
421 | |
422 | static void didOpenDatabaseImpl(InstrumentingAgents&, Database&); |
423 | |
424 | static void didDispatchDOMStorageEventImpl(InstrumentingAgents&, const String& key, const String& oldValue, const String& newValue, StorageType, SecurityOrigin*); |
425 | |
426 | static bool shouldWaitForDebuggerOnStartImpl(InstrumentingAgents&); |
427 | static void workerStartedImpl(InstrumentingAgents&, WorkerInspectorProxy*, const URL&); |
428 | static void workerTerminatedImpl(InstrumentingAgents&, WorkerInspectorProxy*); |
429 | |
430 | static void didCreateWebSocketImpl(InstrumentingAgents&, unsigned long identifier, const URL& requestURL); |
431 | static void willSendWebSocketHandshakeRequestImpl(InstrumentingAgents&, unsigned long identifier, const ResourceRequest&); |
432 | static void didReceiveWebSocketHandshakeResponseImpl(InstrumentingAgents&, unsigned long identifier, const ResourceResponse&); |
433 | static void didCloseWebSocketImpl(InstrumentingAgents&, unsigned long identifier); |
434 | static void didReceiveWebSocketFrameImpl(InstrumentingAgents&, unsigned long identifier, const WebSocketFrame&); |
435 | static void didSendWebSocketFrameImpl(InstrumentingAgents&, unsigned long identifier, const WebSocketFrame&); |
436 | static void didReceiveWebSocketFrameErrorImpl(InstrumentingAgents&, unsigned long identifier, const String&); |
437 | |
438 | #if ENABLE(RESOURCE_USAGE) |
439 | static void didHandleMemoryPressureImpl(InstrumentingAgents&, Critical); |
440 | #endif |
441 | |
442 | static void networkStateChangedImpl(InstrumentingAgents&); |
443 | static void updateApplicationCacheStatusImpl(InstrumentingAgents&, Frame&); |
444 | |
445 | static void didChangeCSSCanvasClientNodesImpl(InstrumentingAgents&, CanvasBase&); |
446 | static void didCreateCanvasRenderingContextImpl(InstrumentingAgents&, CanvasRenderingContext&); |
447 | static void didChangeCanvasMemoryImpl(InstrumentingAgents&, CanvasRenderingContext&); |
448 | static void recordCanvasActionImpl(InstrumentingAgents&, CanvasRenderingContext&, const String&, Vector<RecordCanvasActionVariant>&& = { }); |
449 | static void didFinishRecordingCanvasFrameImpl(InstrumentingAgents&, CanvasRenderingContext&, bool forceDispatch = false); |
450 | #if ENABLE(WEBGL) |
451 | static void didEnableExtensionImpl(InstrumentingAgents&, WebGLRenderingContextBase&, const String&); |
452 | static void didCreateProgramImpl(InstrumentingAgents&, WebGLRenderingContextBase&, WebGLProgram&); |
453 | static void willDeleteProgramImpl(InstrumentingAgents&, WebGLProgram&); |
454 | static bool isShaderProgramDisabledImpl(InstrumentingAgents&, WebGLProgram&); |
455 | static bool isShaderProgramHighlightedImpl(InstrumentingAgents&, WebGLProgram&); |
456 | #endif |
457 | |
458 | static void layerTreeDidChangeImpl(InstrumentingAgents&); |
459 | static void renderLayerDestroyedImpl(InstrumentingAgents&, const RenderLayer&); |
460 | |
461 | static InstrumentingAgents& instrumentingAgentsForPage(Page&); |
462 | static InstrumentingAgents& instrumentingAgentsForWorkerGlobalScope(WorkerGlobalScope&); |
463 | |
464 | static InstrumentingAgents* instrumentingAgentsForFrame(Frame&); |
465 | static InstrumentingAgents* instrumentingAgentsForFrame(Frame*); |
466 | static InstrumentingAgents* instrumentingAgentsForContext(ScriptExecutionContext*); |
467 | static InstrumentingAgents* instrumentingAgentsForContext(ScriptExecutionContext&); |
468 | static InstrumentingAgents* instrumentingAgentsForDocument(Document&); |
469 | static InstrumentingAgents* instrumentingAgentsForDocument(Document*); |
470 | static InstrumentingAgents* instrumentingAgentsForRenderer(RenderObject&); |
471 | static InstrumentingAgents* instrumentingAgentsForWorkerGlobalScope(WorkerGlobalScope*); |
472 | |
473 | static InspectorTimelineAgent* retrieveTimelineAgent(const InspectorInstrumentationCookie&); |
474 | |
475 | WEBCORE_EXPORT static int s_frontendCounter; |
476 | }; |
477 | |
478 | inline void InspectorInstrumentation::didClearWindowObjectInWorld(Frame& frame, DOMWrapperWorld& world) |
479 | { |
480 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
481 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
482 | didClearWindowObjectInWorldImpl(*instrumentingAgents, frame, world); |
483 | } |
484 | |
485 | inline bool InspectorInstrumentation::isDebuggerPaused(Frame* frame) |
486 | { |
487 | FAST_RETURN_IF_NO_FRONTENDS(false); |
488 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
489 | return isDebuggerPausedImpl(*instrumentingAgents); |
490 | return false; |
491 | } |
492 | |
493 | inline int InspectorInstrumentation::identifierForNode(Node& node) |
494 | { |
495 | FAST_RETURN_IF_NO_FRONTENDS(0); |
496 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(node.document())) |
497 | return identifierForNodeImpl(*instrumentingAgents, node); |
498 | return 0; |
499 | } |
500 | |
501 | inline void InspectorInstrumentation::addEventListenersToNode(Node& node) |
502 | { |
503 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
504 | if (auto* instrumentingAgents = instrumentingAgentsForDocument(node.document())) |
505 | addEventListenersToNodeImpl(*instrumentingAgents, node); |
506 | } |
507 | |
508 | inline void InspectorInstrumentation::willInsertDOMNode(Document& document, Node& parent) |
509 | { |
510 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
511 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
512 | willInsertDOMNodeImpl(*instrumentingAgents, parent); |
513 | } |
514 | |
515 | inline void InspectorInstrumentation::didInsertDOMNode(Document& document, Node& node) |
516 | { |
517 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
518 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
519 | didInsertDOMNodeImpl(*instrumentingAgents, node); |
520 | } |
521 | |
522 | inline void InspectorInstrumentation::willRemoveDOMNode(Document& document, Node& node) |
523 | { |
524 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
525 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
526 | willRemoveDOMNodeImpl(*instrumentingAgents, node); |
527 | } |
528 | |
529 | inline void InspectorInstrumentation::didRemoveDOMNode(Document& document, Node& node) |
530 | { |
531 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
532 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
533 | didRemoveDOMNodeImpl(*instrumentingAgents, node); |
534 | } |
535 | |
536 | inline void InspectorInstrumentation::willModifyDOMAttr(Document& document, Element& element, const AtomicString& oldValue, const AtomicString& newValue) |
537 | { |
538 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
539 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
540 | willModifyDOMAttrImpl(*instrumentingAgents, element, oldValue, newValue); |
541 | } |
542 | |
543 | inline void InspectorInstrumentation::didModifyDOMAttr(Document& document, Element& element, const AtomicString& name, const AtomicString& value) |
544 | { |
545 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
546 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
547 | didModifyDOMAttrImpl(*instrumentingAgents, element, name, value); |
548 | } |
549 | |
550 | inline void InspectorInstrumentation::didRemoveDOMAttr(Document& document, Element& element, const AtomicString& name) |
551 | { |
552 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
553 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
554 | didRemoveDOMAttrImpl(*instrumentingAgents, element, name); |
555 | } |
556 | |
557 | inline void InspectorInstrumentation::willInvalidateStyleAttr(Element& element) |
558 | { |
559 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
560 | if (auto* instrumentingAgents = instrumentingAgentsForDocument(element.document())) |
561 | willInvalidateStyleAttrImpl(*instrumentingAgents, element); |
562 | } |
563 | |
564 | inline void InspectorInstrumentation::didInvalidateStyleAttr(Element& element) |
565 | { |
566 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
567 | if (auto* instrumentingAgents = instrumentingAgentsForDocument(element.document())) |
568 | didInvalidateStyleAttrImpl(*instrumentingAgents, element); |
569 | } |
570 | |
571 | inline void InspectorInstrumentation::documentDetached(Document& document) |
572 | { |
573 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
574 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
575 | documentDetachedImpl(*instrumentingAgents, document); |
576 | } |
577 | |
578 | inline void InspectorInstrumentation::frameWindowDiscarded(Frame& frame, DOMWindow* domWindow) |
579 | { |
580 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
581 | frameWindowDiscardedImpl(*instrumentingAgents, domWindow); |
582 | } |
583 | |
584 | inline void InspectorInstrumentation::mediaQueryResultChanged(Document& document) |
585 | { |
586 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
587 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
588 | mediaQueryResultChangedImpl(*instrumentingAgents); |
589 | } |
590 | |
591 | inline void InspectorInstrumentation::activeStyleSheetsUpdated(Document& document) |
592 | { |
593 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
594 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
595 | activeStyleSheetsUpdatedImpl(*instrumentingAgents, document); |
596 | } |
597 | |
598 | inline void InspectorInstrumentation::didPushShadowRoot(Element& host, ShadowRoot& root) |
599 | { |
600 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
601 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(host.document())) |
602 | didPushShadowRootImpl(*instrumentingAgents, host, root); |
603 | } |
604 | |
605 | inline void InspectorInstrumentation::willPopShadowRoot(Element& host, ShadowRoot& root) |
606 | { |
607 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
608 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(host.document())) |
609 | willPopShadowRootImpl(*instrumentingAgents, host, root); |
610 | } |
611 | |
612 | inline void InspectorInstrumentation::didChangeCustomElementState(Element& element) |
613 | { |
614 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
615 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(element.document())) |
616 | didChangeCustomElementStateImpl(*instrumentingAgents, element); |
617 | } |
618 | |
619 | inline void InspectorInstrumentation::pseudoElementCreated(Page* page, PseudoElement& pseudoElement) |
620 | { |
621 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
622 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForPage(page)) |
623 | pseudoElementCreatedImpl(*instrumentingAgents, pseudoElement); |
624 | } |
625 | |
626 | inline void InspectorInstrumentation::pseudoElementDestroyed(Page* page, PseudoElement& pseudoElement) |
627 | { |
628 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
629 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForPage(page)) |
630 | pseudoElementDestroyedImpl(*instrumentingAgents, pseudoElement); |
631 | } |
632 | |
633 | inline void InspectorInstrumentation::didCreateNamedFlow(Document* document, WebKitNamedFlow& namedFlow) |
634 | { |
635 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
636 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
637 | didCreateNamedFlowImpl(*instrumentingAgents, document, namedFlow); |
638 | } |
639 | |
640 | inline void InspectorInstrumentation::willRemoveNamedFlow(Document* document, WebKitNamedFlow& namedFlow) |
641 | { |
642 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
643 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
644 | willRemoveNamedFlowImpl(*instrumentingAgents, document, namedFlow); |
645 | } |
646 | |
647 | inline void InspectorInstrumentation::didChangeRegionOverset(Document& document, WebKitNamedFlow& namedFlow) |
648 | { |
649 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
650 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
651 | didChangeRegionOversetImpl(*instrumentingAgents, document, namedFlow); |
652 | } |
653 | |
654 | inline void InspectorInstrumentation::didRegisterNamedFlowContentElement(Document& document, WebKitNamedFlow& namedFlow, Node& contentElement, Node* nextContentElement) |
655 | { |
656 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
657 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
658 | didRegisterNamedFlowContentElementImpl(*instrumentingAgents, document, namedFlow, contentElement, nextContentElement); |
659 | } |
660 | |
661 | inline void InspectorInstrumentation::didUnregisterNamedFlowContentElement(Document& document, WebKitNamedFlow& namedFlow, Node& contentElement) |
662 | { |
663 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
664 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
665 | didUnregisterNamedFlowContentElementImpl(*instrumentingAgents, document, namedFlow, contentElement); |
666 | } |
667 | |
668 | inline void InspectorInstrumentation::mouseDidMoveOverElement(Page& page, const HitTestResult& result, unsigned modifierFlags) |
669 | { |
670 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
671 | mouseDidMoveOverElementImpl(instrumentingAgentsForPage(page), result, modifierFlags); |
672 | } |
673 | |
674 | inline bool InspectorInstrumentation::handleTouchEvent(Frame& frame, Node& node) |
675 | { |
676 | FAST_RETURN_IF_NO_FRONTENDS(false); |
677 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
678 | return handleTouchEventImpl(*instrumentingAgents, node); |
679 | return false; |
680 | } |
681 | |
682 | inline bool InspectorInstrumentation::handleMousePress(Frame& frame) |
683 | { |
684 | FAST_RETURN_IF_NO_FRONTENDS(false); |
685 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
686 | return handleMousePressImpl(*instrumentingAgents); |
687 | return false; |
688 | } |
689 | |
690 | inline bool InspectorInstrumentation::forcePseudoState(const Element& element, CSSSelector::PseudoClassType pseudoState) |
691 | { |
692 | FAST_RETURN_IF_NO_FRONTENDS(false); |
693 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(element.document())) |
694 | return forcePseudoStateImpl(*instrumentingAgents, element, pseudoState); |
695 | return false; |
696 | } |
697 | |
698 | inline void InspectorInstrumentation::characterDataModified(Document& document, CharacterData& characterData) |
699 | { |
700 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
701 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
702 | characterDataModifiedImpl(*instrumentingAgents, characterData); |
703 | } |
704 | |
705 | inline void InspectorInstrumentation::willSendXMLHttpRequest(ScriptExecutionContext* context, const String& url) |
706 | { |
707 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
708 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
709 | willSendXMLHttpRequestImpl(*instrumentingAgents, url); |
710 | } |
711 | |
712 | inline void InspectorInstrumentation::willFetch(ScriptExecutionContext& context, const String& url) |
713 | { |
714 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
715 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
716 | willFetchImpl(*instrumentingAgents, url); |
717 | } |
718 | |
719 | inline void InspectorInstrumentation::didInstallTimer(ScriptExecutionContext& context, int timerId, Seconds timeout, bool singleShot) |
720 | { |
721 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
722 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
723 | didInstallTimerImpl(*instrumentingAgents, timerId, timeout, singleShot, context); |
724 | } |
725 | |
726 | inline void InspectorInstrumentation::didRemoveTimer(ScriptExecutionContext& context, int timerId) |
727 | { |
728 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
729 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
730 | didRemoveTimerImpl(*instrumentingAgents, timerId, context); |
731 | } |
732 | |
733 | inline void InspectorInstrumentation::didAddEventListener(EventTarget& target, const AtomicString& eventType, EventListener& listener, bool capture) |
734 | { |
735 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
736 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(target.scriptExecutionContext())) |
737 | didAddEventListenerImpl(*instrumentingAgents, target, eventType, listener, capture); |
738 | } |
739 | |
740 | inline void InspectorInstrumentation::willRemoveEventListener(EventTarget& target, const AtomicString& eventType, EventListener& listener, bool capture) |
741 | { |
742 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
743 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(target.scriptExecutionContext())) |
744 | willRemoveEventListenerImpl(*instrumentingAgents, target, eventType, listener, capture); |
745 | } |
746 | |
747 | inline bool InspectorInstrumentation::isEventListenerDisabled(EventTarget& target, const AtomicString& eventType, EventListener& listener, bool capture) |
748 | { |
749 | FAST_RETURN_IF_NO_FRONTENDS(false); |
750 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(target.scriptExecutionContext())) |
751 | return isEventListenerDisabledImpl(*instrumentingAgents, target, eventType, listener, capture); |
752 | return false; |
753 | } |
754 | |
755 | inline void InspectorInstrumentation::didPostMessage(Frame& frame, TimerBase& timer, JSC::ExecState& state) |
756 | { |
757 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
758 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
759 | didPostMessageImpl(*instrumentingAgents, timer, state); |
760 | } |
761 | |
762 | inline void InspectorInstrumentation::didFailPostMessage(Frame& frame, TimerBase& timer) |
763 | { |
764 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
765 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
766 | didFailPostMessageImpl(*instrumentingAgents, timer); |
767 | } |
768 | |
769 | inline void InspectorInstrumentation::willDispatchPostMessage(Frame& frame, TimerBase& timer) |
770 | { |
771 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
772 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
773 | willDispatchPostMessageImpl(*instrumentingAgents, timer); |
774 | } |
775 | |
776 | inline void InspectorInstrumentation::didDispatchPostMessage(Frame& frame, TimerBase& timer) |
777 | { |
778 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
779 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
780 | didDispatchPostMessageImpl(*instrumentingAgents, timer); |
781 | } |
782 | |
783 | inline InspectorInstrumentationCookie InspectorInstrumentation::willCallFunction(ScriptExecutionContext* context, const String& scriptName, int scriptLine, int scriptColumn) |
784 | { |
785 | FAST_RETURN_IF_NO_FRONTENDS(InspectorInstrumentationCookie()); |
786 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
787 | return willCallFunctionImpl(*instrumentingAgents, scriptName, scriptLine, scriptColumn, context); |
788 | return InspectorInstrumentationCookie(); |
789 | } |
790 | |
791 | inline void InspectorInstrumentation::didCallFunction(const InspectorInstrumentationCookie& cookie, ScriptExecutionContext* context) |
792 | { |
793 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
794 | if (cookie.isValid()) |
795 | didCallFunctionImpl(cookie, context); |
796 | } |
797 | |
798 | inline InspectorInstrumentationCookie InspectorInstrumentation::willDispatchEvent(Document& document, const Event& event, bool hasEventListeners) |
799 | { |
800 | FAST_RETURN_IF_NO_FRONTENDS(InspectorInstrumentationCookie()); |
801 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
802 | return willDispatchEventImpl(*instrumentingAgents, document, event, hasEventListeners); |
803 | return InspectorInstrumentationCookie(); |
804 | } |
805 | |
806 | inline void InspectorInstrumentation::didDispatchEvent(const InspectorInstrumentationCookie& cookie, bool defaultPrevented) |
807 | { |
808 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
809 | if (cookie.isValid()) |
810 | didDispatchEventImpl(cookie, defaultPrevented); |
811 | } |
812 | |
813 | inline void InspectorInstrumentation::willHandleEvent(ScriptExecutionContext& context, Event& event, const RegisteredEventListener& listener) |
814 | { |
815 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
816 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
817 | return willHandleEventImpl(*instrumentingAgents, event, listener); |
818 | } |
819 | |
820 | inline void InspectorInstrumentation::didHandleEvent(ScriptExecutionContext& context) |
821 | { |
822 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
823 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
824 | return didHandleEventImpl(*instrumentingAgents); |
825 | } |
826 | |
827 | inline InspectorInstrumentationCookie InspectorInstrumentation::willDispatchEventOnWindow(Frame* frame, const Event& event, DOMWindow& window) |
828 | { |
829 | FAST_RETURN_IF_NO_FRONTENDS(InspectorInstrumentationCookie()); |
830 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
831 | return willDispatchEventOnWindowImpl(*instrumentingAgents, event, window); |
832 | return InspectorInstrumentationCookie(); |
833 | } |
834 | |
835 | inline void InspectorInstrumentation::didDispatchEventOnWindow(const InspectorInstrumentationCookie& cookie, bool defaultPrevented) |
836 | { |
837 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
838 | if (cookie.isValid()) |
839 | didDispatchEventOnWindowImpl(cookie, defaultPrevented); |
840 | } |
841 | |
842 | inline void InspectorInstrumentation::eventDidResetAfterDispatch(const Event& event) |
843 | { |
844 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
845 | |
846 | if (!is<Node>(event.target())) |
847 | return; |
848 | |
849 | auto* node = downcast<Node>(event.target()); |
850 | if (auto* instrumentingAgents = instrumentingAgentsForContext(node->scriptExecutionContext())) |
851 | return eventDidResetAfterDispatchImpl(*instrumentingAgents, event); |
852 | } |
853 | |
854 | inline InspectorInstrumentationCookie InspectorInstrumentation::willEvaluateScript(Frame& frame, const String& url, int lineNumber, int columnNumber) |
855 | { |
856 | FAST_RETURN_IF_NO_FRONTENDS(InspectorInstrumentationCookie()); |
857 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
858 | return willEvaluateScriptImpl(*instrumentingAgents, frame, url, lineNumber, columnNumber); |
859 | return InspectorInstrumentationCookie(); |
860 | } |
861 | |
862 | inline void InspectorInstrumentation::didEvaluateScript(const InspectorInstrumentationCookie& cookie, Frame& frame) |
863 | { |
864 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
865 | if (cookie.isValid()) |
866 | didEvaluateScriptImpl(cookie, frame); |
867 | } |
868 | |
869 | inline InspectorInstrumentationCookie InspectorInstrumentation::willFireTimer(ScriptExecutionContext& context, int timerId, bool oneShot) |
870 | { |
871 | FAST_RETURN_IF_NO_FRONTENDS(InspectorInstrumentationCookie()); |
872 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
873 | return willFireTimerImpl(*instrumentingAgents, timerId, oneShot, context); |
874 | return InspectorInstrumentationCookie(); |
875 | } |
876 | |
877 | inline void InspectorInstrumentation::didFireTimer(const InspectorInstrumentationCookie& cookie) |
878 | { |
879 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
880 | if (cookie.isValid()) |
881 | didFireTimerImpl(cookie); |
882 | } |
883 | |
884 | inline void InspectorInstrumentation::didInvalidateLayout(Frame& frame) |
885 | { |
886 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
887 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
888 | didInvalidateLayoutImpl(*instrumentingAgents, frame); |
889 | } |
890 | |
891 | inline InspectorInstrumentationCookie InspectorInstrumentation::willLayout(Frame& frame) |
892 | { |
893 | FAST_RETURN_IF_NO_FRONTENDS(InspectorInstrumentationCookie()); |
894 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
895 | return willLayoutImpl(*instrumentingAgents, frame); |
896 | return InspectorInstrumentationCookie(); |
897 | } |
898 | |
899 | inline void InspectorInstrumentation::didLayout(const InspectorInstrumentationCookie& cookie, RenderObject& root) |
900 | { |
901 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
902 | if (cookie.isValid()) |
903 | didLayoutImpl(cookie, root); |
904 | } |
905 | |
906 | inline void InspectorInstrumentation::didScroll(Page& page) |
907 | { |
908 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
909 | didScrollImpl(instrumentingAgentsForPage(page)); |
910 | } |
911 | |
912 | inline void InspectorInstrumentation::willComposite(Frame& frame) |
913 | { |
914 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
915 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
916 | willCompositeImpl(*instrumentingAgents, frame); |
917 | } |
918 | |
919 | inline void InspectorInstrumentation::didComposite(Frame& frame) |
920 | { |
921 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
922 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
923 | didCompositeImpl(*instrumentingAgents); |
924 | } |
925 | |
926 | inline void InspectorInstrumentation::willPaint(RenderObject& renderer) |
927 | { |
928 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
929 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForRenderer(renderer)) |
930 | return willPaintImpl(*instrumentingAgents, renderer); |
931 | } |
932 | |
933 | inline void InspectorInstrumentation::didPaint(RenderObject& renderer, const LayoutRect& rect) |
934 | { |
935 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
936 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForRenderer(renderer)) |
937 | didPaintImpl(*instrumentingAgents, renderer, rect); |
938 | } |
939 | |
940 | inline InspectorInstrumentationCookie InspectorInstrumentation::willRecalculateStyle(Document& document) |
941 | { |
942 | FAST_RETURN_IF_NO_FRONTENDS(InspectorInstrumentationCookie()); |
943 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
944 | return willRecalculateStyleImpl(*instrumentingAgents, document); |
945 | return InspectorInstrumentationCookie(); |
946 | } |
947 | |
948 | inline void InspectorInstrumentation::didRecalculateStyle(const InspectorInstrumentationCookie& cookie) |
949 | { |
950 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
951 | if (cookie.isValid()) |
952 | didRecalculateStyleImpl(cookie); |
953 | } |
954 | |
955 | inline void InspectorInstrumentation::didScheduleStyleRecalculation(Document& document) |
956 | { |
957 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
958 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
959 | didScheduleStyleRecalculationImpl(*instrumentingAgents, document); |
960 | } |
961 | |
962 | inline void InspectorInstrumentation::applyUserAgentOverride(Frame& frame, String& userAgent) |
963 | { |
964 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
965 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
966 | applyUserAgentOverrideImpl(*instrumentingAgents, userAgent); |
967 | } |
968 | |
969 | inline void InspectorInstrumentation::applyEmulatedMedia(Frame& frame, String& media) |
970 | { |
971 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
972 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
973 | applyEmulatedMediaImpl(*instrumentingAgents, media); |
974 | } |
975 | |
976 | inline void InspectorInstrumentation::willSendRequest(Frame* frame, unsigned long identifier, DocumentLoader* loader, ResourceRequest& request, const ResourceResponse& redirectResponse) |
977 | { |
978 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
979 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
980 | willSendRequestImpl(*instrumentingAgents, identifier, loader, request, redirectResponse); |
981 | } |
982 | |
983 | inline void InspectorInstrumentation::willSendRequest(WorkerGlobalScope& workerGlobalScope, unsigned long identifier, ResourceRequest& request) |
984 | { |
985 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
986 | willSendRequestImpl(instrumentingAgentsForWorkerGlobalScope(workerGlobalScope), identifier, nullptr, request, ResourceResponse { }); |
987 | } |
988 | |
989 | inline void InspectorInstrumentation::willSendRequestOfType(Frame* frame, unsigned long identifier, DocumentLoader* loader, ResourceRequest& request, LoadType loadType) |
990 | { |
991 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
992 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
993 | willSendRequestOfTypeImpl(*instrumentingAgents, identifier, loader, request, loadType); |
994 | } |
995 | |
996 | inline void InspectorInstrumentation::didLoadResourceFromMemoryCache(Page& page, DocumentLoader* loader, CachedResource* resource) |
997 | { |
998 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
999 | didLoadResourceFromMemoryCacheImpl(instrumentingAgentsForPage(page), loader, resource); |
1000 | } |
1001 | |
1002 | inline void InspectorInstrumentation::didReceiveResourceResponse(Frame& frame, unsigned long identifier, DocumentLoader* loader, const ResourceResponse& response, ResourceLoader* resourceLoader) |
1003 | { |
1004 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1005 | didReceiveResourceResponseImpl(*instrumentingAgents, identifier, loader, response, resourceLoader); |
1006 | } |
1007 | |
1008 | inline void InspectorInstrumentation::didReceiveResourceResponse(WorkerGlobalScope& workerGlobalScope, unsigned long identifier, const ResourceResponse& response) |
1009 | { |
1010 | didReceiveResourceResponseImpl(instrumentingAgentsForWorkerGlobalScope(workerGlobalScope), identifier, nullptr, response, nullptr); |
1011 | } |
1012 | |
1013 | inline void InspectorInstrumentation::didReceiveThreadableLoaderResponse(DocumentThreadableLoader& documentThreadableLoader, unsigned long identifier) |
1014 | { |
1015 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1016 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(documentThreadableLoader.document())) |
1017 | didReceiveThreadableLoaderResponseImpl(*instrumentingAgents, documentThreadableLoader, identifier); |
1018 | } |
1019 | |
1020 | inline void InspectorInstrumentation::didReceiveData(Frame* frame, unsigned long identifier, const char* data, int dataLength, int encodedDataLength) |
1021 | { |
1022 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1023 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1024 | didReceiveDataImpl(*instrumentingAgents, identifier, data, dataLength, encodedDataLength); |
1025 | } |
1026 | |
1027 | inline void InspectorInstrumentation::didReceiveData(WorkerGlobalScope& workerGlobalScope, unsigned long identifier, const char* data, int dataLength) |
1028 | { |
1029 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1030 | didReceiveDataImpl(instrumentingAgentsForWorkerGlobalScope(workerGlobalScope), identifier, data, dataLength, dataLength); |
1031 | } |
1032 | |
1033 | inline void InspectorInstrumentation::didFinishLoading(Frame* frame, DocumentLoader* loader, unsigned long identifier, const NetworkLoadMetrics& networkLoadMetrics, ResourceLoader* resourceLoader) |
1034 | { |
1035 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1036 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1037 | didFinishLoadingImpl(*instrumentingAgents, identifier, loader, networkLoadMetrics, resourceLoader); |
1038 | } |
1039 | |
1040 | inline void InspectorInstrumentation::didFinishLoading(WorkerGlobalScope& workerGlobalScope, unsigned long identifier, const NetworkLoadMetrics& networkLoadMetrics) |
1041 | { |
1042 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1043 | didFinishLoadingImpl(instrumentingAgentsForWorkerGlobalScope(workerGlobalScope), identifier, nullptr, networkLoadMetrics, nullptr); |
1044 | } |
1045 | |
1046 | inline void InspectorInstrumentation::didFailLoading(Frame* frame, DocumentLoader* loader, unsigned long identifier, const ResourceError& error) |
1047 | { |
1048 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1049 | didFailLoadingImpl(*instrumentingAgents, identifier, loader, error); |
1050 | } |
1051 | |
1052 | inline void InspectorInstrumentation::didFailLoading(WorkerGlobalScope& workerGlobalScope, unsigned long identifier, const ResourceError& error) |
1053 | { |
1054 | didFailLoadingImpl(instrumentingAgentsForWorkerGlobalScope(workerGlobalScope), identifier, nullptr, error); |
1055 | } |
1056 | |
1057 | inline void InspectorInstrumentation::continueAfterXFrameOptionsDenied(Frame& frame, unsigned long identifier, DocumentLoader& loader, const ResourceResponse& response) |
1058 | { |
1059 | // Treat the same as didReceiveResponse. |
1060 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1061 | didReceiveResourceResponseImpl(*instrumentingAgents, identifier, &loader, response, nullptr); |
1062 | } |
1063 | |
1064 | inline void InspectorInstrumentation::continueWithPolicyDownload(Frame& frame, unsigned long identifier, DocumentLoader& loader, const ResourceResponse& response) |
1065 | { |
1066 | // Treat the same as didReceiveResponse. |
1067 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1068 | didReceiveResourceResponseImpl(*instrumentingAgents, identifier, &loader, response, nullptr); |
1069 | } |
1070 | |
1071 | inline void InspectorInstrumentation::continueWithPolicyIgnore(Frame& frame, unsigned long identifier, DocumentLoader& loader, const ResourceResponse& response) |
1072 | { |
1073 | // Treat the same as didReceiveResponse. |
1074 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1075 | didReceiveResourceResponseImpl(*instrumentingAgents, identifier, &loader, response, nullptr); |
1076 | } |
1077 | |
1078 | inline void InspectorInstrumentation::willLoadXHRSynchronously(ScriptExecutionContext* context) |
1079 | { |
1080 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1081 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
1082 | willLoadXHRSynchronouslyImpl(*instrumentingAgents); |
1083 | } |
1084 | |
1085 | inline void InspectorInstrumentation::didLoadXHRSynchronously(ScriptExecutionContext* context) |
1086 | { |
1087 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1088 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
1089 | didLoadXHRSynchronouslyImpl(*instrumentingAgents); |
1090 | } |
1091 | |
1092 | inline void InspectorInstrumentation::scriptImported(ScriptExecutionContext& context, unsigned long identifier, const String& sourceString) |
1093 | { |
1094 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1095 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
1096 | scriptImportedImpl(*instrumentingAgents, identifier, sourceString); |
1097 | } |
1098 | |
1099 | inline void InspectorInstrumentation::scriptExecutionBlockedByCSP(ScriptExecutionContext* context, const String& directiveText) |
1100 | { |
1101 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1102 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
1103 | scriptExecutionBlockedByCSPImpl(*instrumentingAgents, directiveText); |
1104 | } |
1105 | |
1106 | inline void InspectorInstrumentation::didReceiveScriptResponse(ScriptExecutionContext* context, unsigned long identifier) |
1107 | { |
1108 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1109 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
1110 | didReceiveScriptResponseImpl(*instrumentingAgents, identifier); |
1111 | } |
1112 | |
1113 | inline void InspectorInstrumentation::domContentLoadedEventFired(Frame& frame) |
1114 | { |
1115 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1116 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1117 | domContentLoadedEventFiredImpl(*instrumentingAgents, frame); |
1118 | } |
1119 | |
1120 | inline void InspectorInstrumentation::loadEventFired(Frame* frame) |
1121 | { |
1122 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1123 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1124 | loadEventFiredImpl(*instrumentingAgents, frame); |
1125 | } |
1126 | |
1127 | inline void InspectorInstrumentation::frameDetachedFromParent(Frame& frame) |
1128 | { |
1129 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1130 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1131 | frameDetachedFromParentImpl(*instrumentingAgents, frame); |
1132 | } |
1133 | |
1134 | inline void InspectorInstrumentation::didCommitLoad(Frame& frame, DocumentLoader* loader) |
1135 | { |
1136 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1137 | didCommitLoadImpl(*instrumentingAgents, frame, loader); |
1138 | } |
1139 | |
1140 | inline void InspectorInstrumentation::frameDocumentUpdated(Frame& frame) |
1141 | { |
1142 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1143 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1144 | frameDocumentUpdatedImpl(*instrumentingAgents, frame); |
1145 | } |
1146 | |
1147 | inline void InspectorInstrumentation::loaderDetachedFromFrame(Frame& frame, DocumentLoader& loader) |
1148 | { |
1149 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1150 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1151 | loaderDetachedFromFrameImpl(*instrumentingAgents, loader); |
1152 | } |
1153 | |
1154 | inline void InspectorInstrumentation::frameStartedLoading(Frame& frame) |
1155 | { |
1156 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1157 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1158 | frameStartedLoadingImpl(*instrumentingAgents, frame); |
1159 | } |
1160 | |
1161 | inline void InspectorInstrumentation::frameStoppedLoading(Frame& frame) |
1162 | { |
1163 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1164 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1165 | frameStoppedLoadingImpl(*instrumentingAgents, frame); |
1166 | } |
1167 | |
1168 | inline void InspectorInstrumentation::frameScheduledNavigation(Frame& frame, Seconds delay) |
1169 | { |
1170 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1171 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1172 | frameScheduledNavigationImpl(*instrumentingAgents, frame, delay); |
1173 | } |
1174 | |
1175 | inline void InspectorInstrumentation::frameClearedScheduledNavigation(Frame& frame) |
1176 | { |
1177 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1178 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1179 | frameClearedScheduledNavigationImpl(*instrumentingAgents, frame); |
1180 | } |
1181 | |
1182 | inline void InspectorInstrumentation::defaultAppearanceDidChange(Page& page, bool useDarkAppearance) |
1183 | { |
1184 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1185 | defaultAppearanceDidChangeImpl(instrumentingAgentsForPage(page), useDarkAppearance); |
1186 | } |
1187 | |
1188 | inline void InspectorInstrumentation::willDestroyCachedResource(CachedResource& cachedResource) |
1189 | { |
1190 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1191 | willDestroyCachedResourceImpl(cachedResource); |
1192 | } |
1193 | |
1194 | inline void InspectorInstrumentation::didOpenDatabase(Database& database) |
1195 | { |
1196 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1197 | if (auto* instrumentingAgents = instrumentingAgentsForContext(database.scriptExecutionContext())) |
1198 | didOpenDatabaseImpl(*instrumentingAgents, database); |
1199 | } |
1200 | |
1201 | inline void InspectorInstrumentation::didDispatchDOMStorageEvent(Page& page, const String& key, const String& oldValue, const String& newValue, StorageType storageType, SecurityOrigin* securityOrigin) |
1202 | { |
1203 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1204 | didDispatchDOMStorageEventImpl(instrumentingAgentsForPage(page), key, oldValue, newValue, storageType, securityOrigin); |
1205 | } |
1206 | |
1207 | inline bool InspectorInstrumentation::shouldWaitForDebuggerOnStart(ScriptExecutionContext& context) |
1208 | { |
1209 | FAST_RETURN_IF_NO_FRONTENDS(false); |
1210 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
1211 | return shouldWaitForDebuggerOnStartImpl(*instrumentingAgents); |
1212 | return false; |
1213 | } |
1214 | |
1215 | inline void InspectorInstrumentation::workerStarted(ScriptExecutionContext& context, WorkerInspectorProxy* proxy, const URL& url) |
1216 | { |
1217 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1218 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
1219 | workerStartedImpl(*instrumentingAgents, proxy, url); |
1220 | } |
1221 | |
1222 | inline void InspectorInstrumentation::workerTerminated(ScriptExecutionContext& context, WorkerInspectorProxy* proxy) |
1223 | { |
1224 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1225 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
1226 | workerTerminatedImpl(*instrumentingAgents, proxy); |
1227 | } |
1228 | |
1229 | inline void InspectorInstrumentation::didCreateWebSocket(Document* document, unsigned long identifier, const URL& requestURL) |
1230 | { |
1231 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1232 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
1233 | didCreateWebSocketImpl(*instrumentingAgents, identifier, requestURL); |
1234 | } |
1235 | |
1236 | inline void InspectorInstrumentation::willSendWebSocketHandshakeRequest(Document* document, unsigned long identifier, const ResourceRequest& request) |
1237 | { |
1238 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1239 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
1240 | willSendWebSocketHandshakeRequestImpl(*instrumentingAgents, identifier, request); |
1241 | } |
1242 | |
1243 | inline void InspectorInstrumentation::didReceiveWebSocketHandshakeResponse(Document* document, unsigned long identifier, const ResourceResponse& response) |
1244 | { |
1245 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1246 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
1247 | didReceiveWebSocketHandshakeResponseImpl(*instrumentingAgents, identifier, response); |
1248 | } |
1249 | |
1250 | inline void InspectorInstrumentation::didCloseWebSocket(Document* document, unsigned long identifier) |
1251 | { |
1252 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1253 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
1254 | didCloseWebSocketImpl(*instrumentingAgents, identifier); |
1255 | } |
1256 | |
1257 | inline void InspectorInstrumentation::didReceiveWebSocketFrame(Document* document, unsigned long identifier, const WebSocketFrame& frame) |
1258 | { |
1259 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1260 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
1261 | didReceiveWebSocketFrameImpl(*instrumentingAgents, identifier, frame); |
1262 | } |
1263 | |
1264 | inline void InspectorInstrumentation::didReceiveWebSocketFrameError(Document* document, unsigned long identifier, const String& errorMessage) |
1265 | { |
1266 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1267 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
1268 | didReceiveWebSocketFrameErrorImpl(*instrumentingAgents, identifier, errorMessage); |
1269 | } |
1270 | |
1271 | inline void InspectorInstrumentation::didSendWebSocketFrame(Document* document, unsigned long identifier, const WebSocketFrame& frame) |
1272 | { |
1273 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1274 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
1275 | didSendWebSocketFrameImpl(*instrumentingAgents, identifier, frame); |
1276 | } |
1277 | |
1278 | #if ENABLE(RESOURCE_USAGE) |
1279 | inline void InspectorInstrumentation::didHandleMemoryPressure(Page& page, Critical critical) |
1280 | { |
1281 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1282 | didHandleMemoryPressureImpl(instrumentingAgentsForPage(page), critical); |
1283 | } |
1284 | #endif |
1285 | |
1286 | inline void InspectorInstrumentation::didChangeCSSCanvasClientNodes(CanvasBase& canvasBase) |
1287 | { |
1288 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1289 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(canvasBase.scriptExecutionContext())) |
1290 | didChangeCSSCanvasClientNodesImpl(*instrumentingAgents, canvasBase); |
1291 | } |
1292 | |
1293 | inline void InspectorInstrumentation::didCreateCanvasRenderingContext(CanvasRenderingContext& context) |
1294 | { |
1295 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1296 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context.canvasBase().scriptExecutionContext())) |
1297 | didCreateCanvasRenderingContextImpl(*instrumentingAgents, context); |
1298 | } |
1299 | |
1300 | inline void InspectorInstrumentation::didChangeCanvasMemory(CanvasRenderingContext& context) |
1301 | { |
1302 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1303 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context.canvasBase().scriptExecutionContext())) |
1304 | didChangeCanvasMemoryImpl(*instrumentingAgents, context); |
1305 | } |
1306 | |
1307 | inline void InspectorInstrumentation::recordCanvasAction(CanvasRenderingContext& context, const String& name, Vector<RecordCanvasActionVariant>&& parameters) |
1308 | { |
1309 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1310 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context.canvasBase().scriptExecutionContext())) |
1311 | recordCanvasActionImpl(*instrumentingAgents, context, name, WTFMove(parameters)); |
1312 | } |
1313 | |
1314 | inline void InspectorInstrumentation::didFinishRecordingCanvasFrame(CanvasRenderingContext& context, bool forceDispatch) |
1315 | { |
1316 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1317 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context.canvasBase().scriptExecutionContext())) |
1318 | didFinishRecordingCanvasFrameImpl(*instrumentingAgents, context, forceDispatch); |
1319 | } |
1320 | |
1321 | #if ENABLE(WEBGL) |
1322 | inline void InspectorInstrumentation::didEnableExtension(WebGLRenderingContextBase& contextWebGLBase, const String& extension) |
1323 | { |
1324 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1325 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(contextWebGLBase.canvasBase().scriptExecutionContext())) |
1326 | didEnableExtensionImpl(*instrumentingAgents, contextWebGLBase, extension); |
1327 | } |
1328 | |
1329 | inline void InspectorInstrumentation::didCreateProgram(WebGLRenderingContextBase& contextWebGLBase, WebGLProgram& program) |
1330 | { |
1331 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1332 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(contextWebGLBase.canvasBase().scriptExecutionContext())) |
1333 | didCreateProgramImpl(*instrumentingAgents, contextWebGLBase, program); |
1334 | } |
1335 | |
1336 | inline void InspectorInstrumentation::willDeleteProgram(WebGLRenderingContextBase& contextWebGLBase, WebGLProgram& program) |
1337 | { |
1338 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1339 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(contextWebGLBase.canvasBase().scriptExecutionContext())) |
1340 | willDeleteProgramImpl(*instrumentingAgents, program); |
1341 | } |
1342 | |
1343 | inline bool InspectorInstrumentation::isShaderProgramDisabled(WebGLRenderingContextBase& contextWebGLBase, WebGLProgram& program) |
1344 | { |
1345 | FAST_RETURN_IF_NO_FRONTENDS(false); |
1346 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(contextWebGLBase.canvasBase().scriptExecutionContext())) |
1347 | return isShaderProgramDisabledImpl(*instrumentingAgents, program); |
1348 | return false; |
1349 | } |
1350 | |
1351 | inline bool InspectorInstrumentation::isShaderProgramHighlighted(WebGLRenderingContextBase& contextWebGLBase, WebGLProgram& program) |
1352 | { |
1353 | FAST_RETURN_IF_NO_FRONTENDS(false); |
1354 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(contextWebGLBase.canvasBase().scriptExecutionContext())) |
1355 | return isShaderProgramHighlightedImpl(*instrumentingAgents, program); |
1356 | return false; |
1357 | } |
1358 | #endif |
1359 | |
1360 | inline void InspectorInstrumentation::networkStateChanged(Page& page) |
1361 | { |
1362 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1363 | networkStateChangedImpl(instrumentingAgentsForPage(page)); |
1364 | } |
1365 | |
1366 | inline void InspectorInstrumentation::updateApplicationCacheStatus(Frame* frame) |
1367 | { |
1368 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1369 | if (auto* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1370 | updateApplicationCacheStatusImpl(*instrumentingAgents, *frame); |
1371 | } |
1372 | |
1373 | inline void InspectorInstrumentation::addMessageToConsole(Page& page, std::unique_ptr<Inspector::ConsoleMessage> message) |
1374 | { |
1375 | addMessageToConsoleImpl(instrumentingAgentsForPage(page), WTFMove(message)); |
1376 | } |
1377 | |
1378 | inline void InspectorInstrumentation::addMessageToConsole(WorkerGlobalScope& workerGlobalScope, std::unique_ptr<Inspector::ConsoleMessage> message) |
1379 | { |
1380 | addMessageToConsoleImpl(instrumentingAgentsForWorkerGlobalScope(workerGlobalScope), WTFMove(message)); |
1381 | } |
1382 | |
1383 | inline void InspectorInstrumentation::consoleCount(Page& page, JSC::ExecState* state, Ref<Inspector::ScriptArguments>&& arguments) |
1384 | { |
1385 | consoleCountImpl(instrumentingAgentsForPage(page), state, WTFMove(arguments)); |
1386 | } |
1387 | |
1388 | inline void InspectorInstrumentation::consoleCount(WorkerGlobalScope& workerGlobalScope, JSC::ExecState* state, Ref<Inspector::ScriptArguments>&& arguments) |
1389 | { |
1390 | consoleCountImpl(instrumentingAgentsForWorkerGlobalScope(workerGlobalScope), state, WTFMove(arguments)); |
1391 | } |
1392 | |
1393 | inline void InspectorInstrumentation::takeHeapSnapshot(Frame& frame, const String& title) |
1394 | { |
1395 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1396 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1397 | takeHeapSnapshotImpl(*instrumentingAgents, title); |
1398 | } |
1399 | |
1400 | inline void InspectorInstrumentation::startConsoleTiming(Frame& frame, const String& title) |
1401 | { |
1402 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1403 | startConsoleTimingImpl(*instrumentingAgents, frame, title); |
1404 | } |
1405 | |
1406 | inline void InspectorInstrumentation::startConsoleTiming(WorkerGlobalScope& workerGlobalScope, const String& title) |
1407 | { |
1408 | startConsoleTimingImpl(instrumentingAgentsForWorkerGlobalScope(workerGlobalScope), title); |
1409 | } |
1410 | |
1411 | inline void InspectorInstrumentation::stopConsoleTiming(Frame& frame, const String& title, Ref<Inspector::ScriptCallStack>&& stack) |
1412 | { |
1413 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1414 | stopConsoleTimingImpl(*instrumentingAgents, frame, title, WTFMove(stack)); |
1415 | } |
1416 | |
1417 | inline void InspectorInstrumentation::stopConsoleTiming(WorkerGlobalScope& workerGlobalScope, const String& title, Ref<Inspector::ScriptCallStack>&& stack) |
1418 | { |
1419 | stopConsoleTimingImpl(instrumentingAgentsForWorkerGlobalScope(workerGlobalScope), title, WTFMove(stack)); |
1420 | } |
1421 | |
1422 | inline void InspectorInstrumentation::consoleTimeStamp(Frame& frame, Ref<Inspector::ScriptArguments>&& arguments) |
1423 | { |
1424 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1425 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) |
1426 | consoleTimeStampImpl(*instrumentingAgents, frame, WTFMove(arguments)); |
1427 | } |
1428 | |
1429 | inline void InspectorInstrumentation::startProfiling(Page& page, JSC::ExecState* exec, const String &title) |
1430 | { |
1431 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1432 | startProfilingImpl(instrumentingAgentsForPage(page), exec, title); |
1433 | } |
1434 | |
1435 | inline void InspectorInstrumentation::stopProfiling(Page& page, JSC::ExecState* exec, const String &title) |
1436 | { |
1437 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1438 | stopProfilingImpl(instrumentingAgentsForPage(page), exec, title); |
1439 | } |
1440 | |
1441 | inline void InspectorInstrumentation::consoleStartRecordingCanvas(CanvasRenderingContext& context, JSC::ExecState& exec, JSC::JSObject* options) |
1442 | { |
1443 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1444 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context.canvasBase().scriptExecutionContext())) |
1445 | consoleStartRecordingCanvasImpl(*instrumentingAgents, context, exec, options); |
1446 | } |
1447 | |
1448 | inline void InspectorInstrumentation::didRequestAnimationFrame(Document& document, int callbackId) |
1449 | { |
1450 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1451 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
1452 | didRequestAnimationFrameImpl(*instrumentingAgents, callbackId, document); |
1453 | } |
1454 | |
1455 | inline void InspectorInstrumentation::didCancelAnimationFrame(Document& document, int callbackId) |
1456 | { |
1457 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1458 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
1459 | didCancelAnimationFrameImpl(*instrumentingAgents, callbackId, document); |
1460 | } |
1461 | |
1462 | inline InspectorInstrumentationCookie InspectorInstrumentation::willFireAnimationFrame(Document& document, int callbackId) |
1463 | { |
1464 | FAST_RETURN_IF_NO_FRONTENDS(InspectorInstrumentationCookie()); |
1465 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document)) |
1466 | return willFireAnimationFrameImpl(*instrumentingAgents, callbackId, document); |
1467 | return InspectorInstrumentationCookie(); |
1468 | } |
1469 | |
1470 | inline void InspectorInstrumentation::didFireAnimationFrame(const InspectorInstrumentationCookie& cookie) |
1471 | { |
1472 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1473 | if (cookie.isValid()) |
1474 | didFireAnimationFrameImpl(cookie); |
1475 | } |
1476 | |
1477 | inline InspectorInstrumentationCookie InspectorInstrumentation::willFireObserverCallback(ScriptExecutionContext& context, const String& callbackType) |
1478 | { |
1479 | FAST_RETURN_IF_NO_FRONTENDS(InspectorInstrumentationCookie()); |
1480 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context)) |
1481 | return willFireObserverCallbackImpl(*instrumentingAgents, callbackType, context); |
1482 | return InspectorInstrumentationCookie(); |
1483 | } |
1484 | |
1485 | inline void InspectorInstrumentation::didFireObserverCallback(const InspectorInstrumentationCookie& cookie) |
1486 | { |
1487 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1488 | if (cookie.isValid()) |
1489 | didFireObserverCallbackImpl(cookie); |
1490 | } |
1491 | |
1492 | inline void InspectorInstrumentation::layerTreeDidChange(Page* page) |
1493 | { |
1494 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1495 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForPage(page)) |
1496 | layerTreeDidChangeImpl(*instrumentingAgents); |
1497 | } |
1498 | |
1499 | inline void InspectorInstrumentation::renderLayerDestroyed(Page* page, const RenderLayer& renderLayer) |
1500 | { |
1501 | FAST_RETURN_IF_NO_FRONTENDS(void()); |
1502 | if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForPage(page)) |
1503 | renderLayerDestroyedImpl(*instrumentingAgents, renderLayer); |
1504 | } |
1505 | |
1506 | inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgentsForContext(ScriptExecutionContext* context) |
1507 | { |
1508 | return context ? instrumentingAgentsForContext(*context) : nullptr; |
1509 | } |
1510 | |
1511 | inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgentsForContext(ScriptExecutionContext& context) |
1512 | { |
1513 | if (is<Document>(context)) |
1514 | return instrumentingAgentsForPage(downcast<Document>(context).page()); |
1515 | if (is<WorkerGlobalScope>(context)) |
1516 | return &instrumentingAgentsForWorkerGlobalScope(downcast<WorkerGlobalScope>(context)); |
1517 | return nullptr; |
1518 | } |
1519 | |
1520 | inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgentsForFrame(Frame* frame) |
1521 | { |
1522 | return frame ? instrumentingAgentsForFrame(*frame) : nullptr; |
1523 | } |
1524 | |
1525 | inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgentsForFrame(Frame& frame) |
1526 | { |
1527 | return instrumentingAgentsForPage(frame.page()); |
1528 | } |
1529 | |
1530 | inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgentsForDocument(Document* document) |
1531 | { |
1532 | return document ? instrumentingAgentsForDocument(*document) : nullptr; |
1533 | } |
1534 | |
1535 | inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgentsForDocument(Document& document) |
1536 | { |
1537 | Page* page = document.page(); |
1538 | if (!page && document.templateDocumentHost()) |
1539 | page = document.templateDocumentHost()->page(); |
1540 | return instrumentingAgentsForPage(page); |
1541 | } |
1542 | |
1543 | inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgentsForPage(Page* page) |
1544 | { |
1545 | return page ? &instrumentingAgentsForPage(*page) : nullptr; |
1546 | } |
1547 | |
1548 | inline InstrumentingAgents& InspectorInstrumentation::instrumentingAgentsForPage(Page& page) |
1549 | { |
1550 | ASSERT(isMainThread()); |
1551 | return page.inspectorController().m_instrumentingAgents.get(); |
1552 | } |
1553 | |
1554 | inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgentsForWorkerGlobalScope(WorkerGlobalScope* workerGlobalScope) |
1555 | { |
1556 | return workerGlobalScope ? &instrumentingAgentsForWorkerGlobalScope(*workerGlobalScope) : nullptr; |
1557 | } |
1558 | |
1559 | inline InstrumentingAgents& InspectorInstrumentation::instrumentingAgentsForWorkerGlobalScope(WorkerGlobalScope& workerGlobalScope) |
1560 | { |
1561 | return workerGlobalScope.inspectorController().m_instrumentingAgents; |
1562 | } |
1563 | |
1564 | inline void InspectorInstrumentation::frontendCreated() |
1565 | { |
1566 | ASSERT(isMainThread()); |
1567 | s_frontendCounter++; |
1568 | |
1569 | if (s_frontendCounter == 1) |
1570 | InspectorInstrumentation::firstFrontendCreated(); |
1571 | } |
1572 | |
1573 | inline void InspectorInstrumentation::frontendDeleted() |
1574 | { |
1575 | ASSERT(isMainThread()); |
1576 | s_frontendCounter--; |
1577 | |
1578 | if (!s_frontendCounter) |
1579 | InspectorInstrumentation::lastFrontendDeleted(); |
1580 | } |
1581 | |
1582 | } // namespace WebCore |
1583 | |