1729 lines
78 KiB
C++
1729 lines
78 KiB
C++
/*
|
|
* Copyright (C) 2010 Google Inc. All rights reserved.
|
|
* Copyright (C) 2014-2016 Apple Inc. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are
|
|
* met:
|
|
*
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* * Redistributions in binary form must reproduce the above
|
|
* copyright notice, this list of conditions and the following disclaimer
|
|
* in the documentation and/or other materials provided with the
|
|
* distribution.
|
|
* * Neither the name of Google Inc. nor the names of its
|
|
* contributors may be used to endorse or promote products derived from
|
|
* this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "CSSSelector.h"
|
|
#include "CanvasBase.h"
|
|
#include "CanvasRenderingContext.h"
|
|
#include "Database.h"
|
|
#include "DeclarativeAnimation.h"
|
|
#include "DocumentThreadableLoader.h"
|
|
#include "Element.h"
|
|
#include "EventTarget.h"
|
|
#include "FormData.h"
|
|
#include "Frame.h"
|
|
#include "HitTestResult.h"
|
|
#include "InspectorInstrumentationPublic.h"
|
|
#include "Page.h"
|
|
#include "ResourceLoader.h"
|
|
#include "StorageArea.h"
|
|
#include "WebAnimation.h"
|
|
#include "WorkerInspectorProxy.h"
|
|
#include <JavaScriptCore/ConsoleMessage.h>
|
|
#include <initializer_list>
|
|
#include <wtf/CompletionHandler.h>
|
|
#include <wtf/Function.h>
|
|
#include <wtf/MemoryPressureHandler.h>
|
|
#include <wtf/RefPtr.h>
|
|
|
|
#if ENABLE(WEBGL)
|
|
#include "WebGLRenderingContextBase.h"
|
|
#endif
|
|
|
|
namespace Inspector {
|
|
class ConsoleMessage;
|
|
class ScriptArguments;
|
|
class ScriptCallStack;
|
|
}
|
|
|
|
namespace WebCore {
|
|
|
|
class CachedResource;
|
|
class CharacterData;
|
|
class DOMWindow;
|
|
class DOMWrapperWorld;
|
|
class Document;
|
|
class DocumentLoader;
|
|
class EventListener;
|
|
class HTTPHeaderMap;
|
|
class InspectorTimelineAgent;
|
|
class InstrumentingAgents;
|
|
class KeyframeEffect;
|
|
class NetworkLoadMetrics;
|
|
class Node;
|
|
class PseudoElement;
|
|
class RegisteredEventListener;
|
|
class RenderLayer;
|
|
class RenderObject;
|
|
class ResourceLoader;
|
|
class ResourceRequest;
|
|
class ResourceResponse;
|
|
class ScriptExecutionContext;
|
|
class SecurityOrigin;
|
|
class ShadowRoot;
|
|
class SharedBuffer;
|
|
class TimerBase;
|
|
class WebKitNamedFlow;
|
|
class WorkerOrWorkletGlobalScope;
|
|
|
|
#if ENABLE(WEBGL)
|
|
class WebGLProgram;
|
|
#endif
|
|
|
|
enum class StorageType : uint8_t;
|
|
|
|
struct ComputedEffectTiming;
|
|
struct WebSocketFrame;
|
|
|
|
class InspectorInstrumentation {
|
|
public:
|
|
static void didClearWindowObjectInWorld(Frame&, DOMWrapperWorld&);
|
|
static bool isDebuggerPaused(Frame*);
|
|
|
|
static int identifierForNode(Node&);
|
|
static void addEventListenersToNode(Node&);
|
|
static void willInsertDOMNode(Document&, Node& parent);
|
|
static void didInsertDOMNode(Document&, Node&);
|
|
static void willRemoveDOMNode(Document&, Node&);
|
|
static void didRemoveDOMNode(Document&, Node&);
|
|
static void willDestroyDOMNode(Node&);
|
|
static void nodeLayoutContextChanged(Node&, RenderObject*);
|
|
static void willModifyDOMAttr(Document&, Element&, const AtomString& oldValue, const AtomString& newValue);
|
|
static void didModifyDOMAttr(Document&, Element&, const AtomString& name, const AtomString& value);
|
|
static void didRemoveDOMAttr(Document&, Element&, const AtomString& name);
|
|
static void characterDataModified(Document&, CharacterData&);
|
|
static void willInvalidateStyleAttr(Element&);
|
|
static void didInvalidateStyleAttr(Element&);
|
|
static void documentDetached(Document&);
|
|
static void frameWindowDiscarded(Frame&, DOMWindow*);
|
|
static void mediaQueryResultChanged(Document&);
|
|
static void activeStyleSheetsUpdated(Document&);
|
|
static void didPushShadowRoot(Element& host, ShadowRoot&);
|
|
static void willPopShadowRoot(Element& host, ShadowRoot&);
|
|
static void didChangeCustomElementState(Element&);
|
|
static void pseudoElementCreated(Page*, PseudoElement&);
|
|
static void pseudoElementDestroyed(Page*, PseudoElement&);
|
|
static void didCreateNamedFlow(Document*, WebKitNamedFlow&);
|
|
static void willRemoveNamedFlow(Document*, WebKitNamedFlow&);
|
|
static void didChangeRegionOverset(Document&, WebKitNamedFlow&);
|
|
static void didRegisterNamedFlowContentElement(Document&, WebKitNamedFlow&, Node& contentElement, Node* nextContentElement = nullptr);
|
|
static void didUnregisterNamedFlowContentElement(Document&, WebKitNamedFlow&, Node& contentElement);
|
|
|
|
static void mouseDidMoveOverElement(Page&, const HitTestResult&, unsigned modifierFlags);
|
|
static bool handleMousePress(Frame&);
|
|
static bool handleTouchEvent(Frame&, Node&);
|
|
static bool forcePseudoState(const Element&, CSSSelector::PseudoClassType);
|
|
|
|
static void willSendXMLHttpRequest(ScriptExecutionContext*, const String& url);
|
|
static void willFetch(ScriptExecutionContext&, const String& url);
|
|
static void didInstallTimer(ScriptExecutionContext&, int timerId, Seconds timeout, bool singleShot);
|
|
static void didRemoveTimer(ScriptExecutionContext&, int timerId);
|
|
|
|
static int willPostMessage(Frame&);
|
|
static void didPostMessage(Frame&, int postTimerIdentifier, JSC::JSGlobalObject&);
|
|
static void didFailPostMessage(Frame&, int postTimerIdentifier);
|
|
static void willDispatchPostMessage(Frame&, int postTimerIdentifier);
|
|
static void didDispatchPostMessage(Frame&, int postTimerIdentifier);
|
|
|
|
static void willCallFunction(ScriptExecutionContext*, const String& scriptName, int scriptLine, int scriptColumn);
|
|
static void didCallFunction(ScriptExecutionContext*);
|
|
static void didAddEventListener(EventTarget&, const AtomString& eventType, EventListener&, bool capture);
|
|
static void willRemoveEventListener(EventTarget&, const AtomString& eventType, EventListener&, bool capture);
|
|
static bool isEventListenerDisabled(EventTarget&, const AtomString& eventType, EventListener&, bool capture);
|
|
static void willDispatchEvent(Document&, const Event&);
|
|
static void didDispatchEvent(Document&, const Event&);
|
|
static void willHandleEvent(ScriptExecutionContext&, Event&, const RegisteredEventListener&);
|
|
static void didHandleEvent(ScriptExecutionContext&, Event&, const RegisteredEventListener&);
|
|
static void willDispatchEventOnWindow(Frame*, const Event&, DOMWindow&);
|
|
static void didDispatchEventOnWindow(Frame*, const Event&);
|
|
static void eventDidResetAfterDispatch(const Event&);
|
|
static void willEvaluateScript(Frame&, const String& url, int lineNumber, int columnNumber);
|
|
static void didEvaluateScript(Frame&);
|
|
static void willFireTimer(ScriptExecutionContext&, int timerId, bool oneShot);
|
|
static void didFireTimer(ScriptExecutionContext&, int timerId, bool oneShot);
|
|
static void didInvalidateLayout(Frame&);
|
|
static void willLayout(Frame&);
|
|
static void didLayout(Frame&, RenderObject&);
|
|
static void didScroll(Page&);
|
|
static void willComposite(Frame&);
|
|
static void didComposite(Frame&);
|
|
static void willPaint(RenderObject&);
|
|
static void didPaint(RenderObject&, const LayoutRect&);
|
|
static void willRecalculateStyle(Document&);
|
|
static void didRecalculateStyle(Document&);
|
|
static void didScheduleStyleRecalculation(Document&);
|
|
static void applyUserAgentOverride(Frame&, String&);
|
|
static void applyEmulatedMedia(Frame&, String&);
|
|
|
|
static void willSendRequest(Frame*, unsigned long identifier, DocumentLoader*, ResourceRequest&, const ResourceResponse& redirectResponse, const CachedResource*);
|
|
static void didLoadResourceFromMemoryCache(Page&, DocumentLoader*, CachedResource*);
|
|
static void didReceiveResourceResponse(Frame&, unsigned long identifier, DocumentLoader*, const ResourceResponse&, ResourceLoader*);
|
|
static void didReceiveThreadableLoaderResponse(DocumentThreadableLoader&, unsigned long identifier);
|
|
static void didReceiveData(Frame*, unsigned long identifier, const uint8_t* data, int dataLength, int encodedDataLength);
|
|
static void didFinishLoading(Frame*, DocumentLoader*, unsigned long identifier, const NetworkLoadMetrics&, ResourceLoader*);
|
|
static void didFailLoading(Frame*, DocumentLoader*, unsigned long identifier, const ResourceError&);
|
|
|
|
static void willSendRequest(WorkerOrWorkletGlobalScope&, unsigned long identifier, ResourceRequest&);
|
|
static void didReceiveResourceResponse(WorkerOrWorkletGlobalScope&, unsigned long identifier, const ResourceResponse&);
|
|
static void didReceiveData(WorkerOrWorkletGlobalScope&, unsigned long identifier, const uint8_t* data, int dataLength);
|
|
static void didFinishLoading(WorkerOrWorkletGlobalScope&, unsigned long identifier, const NetworkLoadMetrics&);
|
|
static void didFailLoading(WorkerOrWorkletGlobalScope&, unsigned long identifier, const ResourceError&);
|
|
|
|
// Some network requests do not go through the normal network loading path.
|
|
// These network requests have to issue their own willSendRequest / didReceiveResponse / didFinishLoading / didFailLoading
|
|
// instrumentation calls. Some of these loads are for resources that lack a CachedResource::Type.
|
|
enum class LoadType { Ping, Beacon };
|
|
static void willSendRequestOfType(Frame*, unsigned long identifier, DocumentLoader*, ResourceRequest&, LoadType);
|
|
|
|
static void continueAfterXFrameOptionsDenied(Frame&, unsigned long identifier, DocumentLoader&, const ResourceResponse&);
|
|
static void continueWithPolicyDownload(Frame&, unsigned long identifier, DocumentLoader&, const ResourceResponse&);
|
|
static void continueWithPolicyIgnore(Frame&, unsigned long identifier, DocumentLoader&, const ResourceResponse&);
|
|
static void willLoadXHRSynchronously(ScriptExecutionContext*);
|
|
static void didLoadXHRSynchronously(ScriptExecutionContext*);
|
|
static void scriptImported(ScriptExecutionContext&, unsigned long identifier, const String& sourceString);
|
|
static void scriptExecutionBlockedByCSP(ScriptExecutionContext*, const String& directiveText);
|
|
static void didReceiveScriptResponse(ScriptExecutionContext*, unsigned long identifier);
|
|
static void domContentLoadedEventFired(Frame&);
|
|
static void loadEventFired(Frame*);
|
|
static void frameDetachedFromParent(Frame&);
|
|
static void didCommitLoad(Frame&, DocumentLoader*);
|
|
static void frameDocumentUpdated(Frame&);
|
|
static void loaderDetachedFromFrame(Frame&, DocumentLoader&);
|
|
static void frameStartedLoading(Frame&);
|
|
static void frameStoppedLoading(Frame&);
|
|
static void frameScheduledNavigation(Frame&, Seconds delay);
|
|
static void frameClearedScheduledNavigation(Frame&);
|
|
#if ENABLE(DARK_MODE_CSS) || HAVE(OS_DARK_MODE_SUPPORT)
|
|
static void defaultAppearanceDidChange(Page&, bool useDarkAppearance);
|
|
#endif
|
|
static void willDestroyCachedResource(CachedResource&);
|
|
|
|
static bool willIntercept(const Frame*, const ResourceRequest&);
|
|
static bool shouldInterceptRequest(const Frame&, const ResourceRequest&);
|
|
static bool shouldInterceptResponse(const Frame&, const ResourceResponse&);
|
|
static void interceptRequest(ResourceLoader&, Function<void(const ResourceRequest&)>&&);
|
|
static void interceptResponse(const Frame&, const ResourceResponse&, unsigned long identifier, CompletionHandler<void(const ResourceResponse&, RefPtr<SharedBuffer>)>&&);
|
|
|
|
static void addMessageToConsole(Page&, std::unique_ptr<Inspector::ConsoleMessage>);
|
|
static void addMessageToConsole(WorkerOrWorkletGlobalScope&, std::unique_ptr<Inspector::ConsoleMessage>);
|
|
|
|
static void consoleCount(Page&, JSC::JSGlobalObject*, const String& label);
|
|
static void consoleCount(WorkerOrWorkletGlobalScope&, JSC::JSGlobalObject*, const String& label);
|
|
static void consoleCountReset(Page&, JSC::JSGlobalObject*, const String& label);
|
|
static void consoleCountReset(WorkerOrWorkletGlobalScope&, JSC::JSGlobalObject*, const String& label);
|
|
|
|
static void takeHeapSnapshot(Frame&, const String& title);
|
|
static void startConsoleTiming(Frame&, JSC::JSGlobalObject*, const String& label);
|
|
static void startConsoleTiming(WorkerOrWorkletGlobalScope&, JSC::JSGlobalObject*, const String& label);
|
|
static void logConsoleTiming(Frame&, JSC::JSGlobalObject*, const String& label, Ref<Inspector::ScriptArguments>&&);
|
|
static void logConsoleTiming(WorkerOrWorkletGlobalScope&, JSC::JSGlobalObject*, const String& label, Ref<Inspector::ScriptArguments>&&);
|
|
static void stopConsoleTiming(Frame&, JSC::JSGlobalObject*, const String& label);
|
|
static void stopConsoleTiming(WorkerOrWorkletGlobalScope&, JSC::JSGlobalObject*, const String& label);
|
|
static void consoleTimeStamp(Frame&, Ref<Inspector::ScriptArguments>&&);
|
|
static void startProfiling(Page&, JSC::JSGlobalObject*, const String& title);
|
|
static void stopProfiling(Page&, JSC::JSGlobalObject*, const String& title);
|
|
static void consoleStartRecordingCanvas(CanvasRenderingContext&, JSC::JSGlobalObject&, JSC::JSObject* options);
|
|
static void consoleStopRecordingCanvas(CanvasRenderingContext&);
|
|
|
|
static void didRequestAnimationFrame(Document&, int callbackId);
|
|
static void didCancelAnimationFrame(Document&, int callbackId);
|
|
static void willFireAnimationFrame(Document&, int callbackId);
|
|
static void didFireAnimationFrame(Document&);
|
|
|
|
static void willFireObserverCallback(ScriptExecutionContext&, const String& callbackType);
|
|
static void didFireObserverCallback(ScriptExecutionContext&);
|
|
|
|
static void didOpenDatabase(Database&);
|
|
|
|
static void didDispatchDOMStorageEvent(Page&, const String& key, const String& oldValue, const String& newValue, StorageType, SecurityOrigin*);
|
|
|
|
static bool shouldWaitForDebuggerOnStart(ScriptExecutionContext&);
|
|
static void workerStarted(WorkerInspectorProxy&);
|
|
static void workerTerminated(WorkerInspectorProxy&);
|
|
|
|
static void didCreateWebSocket(Document*, unsigned long identifier, const URL& requestURL);
|
|
static void willSendWebSocketHandshakeRequest(Document*, unsigned long identifier, const ResourceRequest&);
|
|
static void didReceiveWebSocketHandshakeResponse(Document*, unsigned long identifier, const ResourceResponse&);
|
|
static void didCloseWebSocket(Document*, unsigned long identifier);
|
|
static void didReceiveWebSocketFrame(Document*, unsigned long identifier, const WebSocketFrame&);
|
|
static void didSendWebSocketFrame(Document*, unsigned long identifier, const WebSocketFrame&);
|
|
static void didReceiveWebSocketFrameError(Document*, unsigned long identifier, const String& errorMessage);
|
|
|
|
#if ENABLE(RESOURCE_USAGE)
|
|
static void didHandleMemoryPressure(Page&, Critical);
|
|
#endif
|
|
|
|
static void didChangeCSSCanvasClientNodes(CanvasBase&);
|
|
static void didCreateCanvasRenderingContext(CanvasRenderingContext&);
|
|
static void didChangeCanvasMemory(CanvasRenderingContext&);
|
|
static void didFinishRecordingCanvasFrame(CanvasRenderingContext&, bool forceDispatch = false);
|
|
#if ENABLE(WEBGL)
|
|
static void didEnableExtension(WebGLRenderingContextBase&, const String&);
|
|
static void didCreateWebGLProgram(WebGLRenderingContextBase&, WebGLProgram&);
|
|
static void willDestroyWebGLProgram(WebGLProgram&);
|
|
static bool isWebGLProgramDisabled(WebGLRenderingContextBase&, WebGLProgram&);
|
|
static bool isWebGLProgramHighlighted(WebGLRenderingContextBase&, WebGLProgram&);
|
|
#endif
|
|
|
|
static void willApplyKeyframeEffect(Element&, KeyframeEffect&, ComputedEffectTiming);
|
|
static void didChangeWebAnimationName(WebAnimation&);
|
|
static void didSetWebAnimationEffect(WebAnimation&);
|
|
static void didChangeWebAnimationEffectTiming(WebAnimation&);
|
|
static void didChangeWebAnimationEffectTarget(WebAnimation&);
|
|
static void didCreateWebAnimation(WebAnimation&);
|
|
static void willDestroyWebAnimation(WebAnimation&);
|
|
|
|
static void networkStateChanged(Page&);
|
|
static void updateApplicationCacheStatus(Frame*);
|
|
|
|
static void layerTreeDidChange(Page*);
|
|
static void renderLayerDestroyed(Page*, const RenderLayer&);
|
|
|
|
static void frontendCreated();
|
|
static void frontendDeleted();
|
|
static bool hasFrontends() { return InspectorInstrumentationPublic::hasFrontends(); }
|
|
|
|
static void firstFrontendCreated();
|
|
static void lastFrontendDeleted();
|
|
|
|
static bool consoleAgentEnabled(ScriptExecutionContext*);
|
|
static bool timelineAgentTracking(ScriptExecutionContext*);
|
|
|
|
static InstrumentingAgents* instrumentingAgents(Page*);
|
|
static InstrumentingAgents* instrumentingAgents(ScriptExecutionContext*);
|
|
|
|
static void registerInstrumentingAgents(InstrumentingAgents&);
|
|
static void unregisterInstrumentingAgents(InstrumentingAgents&);
|
|
|
|
private:
|
|
static void didClearWindowObjectInWorldImpl(InstrumentingAgents&, Frame&, DOMWrapperWorld&);
|
|
static bool isDebuggerPausedImpl(InstrumentingAgents&);
|
|
|
|
static int identifierForNodeImpl(InstrumentingAgents&, Node&);
|
|
static void addEventListenersToNodeImpl(InstrumentingAgents&, Node&);
|
|
static void willInsertDOMNodeImpl(InstrumentingAgents&, Node& parent);
|
|
static void didInsertDOMNodeImpl(InstrumentingAgents&, Node&);
|
|
static void willRemoveDOMNodeImpl(InstrumentingAgents&, Node&);
|
|
static void didRemoveDOMNodeImpl(InstrumentingAgents&, Node&);
|
|
static void willDestroyDOMNodeImpl(InstrumentingAgents&, Node&);
|
|
static void nodeLayoutContextChangedImpl(InstrumentingAgents&, Node&, RenderObject*);
|
|
static void willModifyDOMAttrImpl(InstrumentingAgents&, Element&, const AtomString& oldValue, const AtomString& newValue);
|
|
static void didModifyDOMAttrImpl(InstrumentingAgents&, Element&, const AtomString& name, const AtomString& value);
|
|
static void didRemoveDOMAttrImpl(InstrumentingAgents&, Element&, const AtomString& name);
|
|
static void characterDataModifiedImpl(InstrumentingAgents&, CharacterData&);
|
|
static void willInvalidateStyleAttrImpl(InstrumentingAgents&, Element&);
|
|
static void didInvalidateStyleAttrImpl(InstrumentingAgents&, Element&);
|
|
static void documentDetachedImpl(InstrumentingAgents&, Document&);
|
|
static void frameWindowDiscardedImpl(InstrumentingAgents&, DOMWindow*);
|
|
static void mediaQueryResultChangedImpl(InstrumentingAgents&);
|
|
static void activeStyleSheetsUpdatedImpl(InstrumentingAgents&, Document&);
|
|
static void didPushShadowRootImpl(InstrumentingAgents&, Element& host, ShadowRoot&);
|
|
static void willPopShadowRootImpl(InstrumentingAgents&, Element& host, ShadowRoot&);
|
|
static void didChangeCustomElementStateImpl(InstrumentingAgents&, Element&);
|
|
static void pseudoElementCreatedImpl(InstrumentingAgents&, PseudoElement&);
|
|
static void pseudoElementDestroyedImpl(InstrumentingAgents&, PseudoElement&);
|
|
static void didCreateNamedFlowImpl(InstrumentingAgents&, Document*, WebKitNamedFlow&);
|
|
static void willRemoveNamedFlowImpl(InstrumentingAgents&, Document*, WebKitNamedFlow&);
|
|
static void didChangeRegionOversetImpl(InstrumentingAgents&, Document&, WebKitNamedFlow&);
|
|
static void didRegisterNamedFlowContentElementImpl(InstrumentingAgents&, Document&, WebKitNamedFlow&, Node& contentElement, Node* nextContentElement = nullptr);
|
|
static void didUnregisterNamedFlowContentElementImpl(InstrumentingAgents&, Document&, WebKitNamedFlow&, Node& contentElement);
|
|
|
|
static void mouseDidMoveOverElementImpl(InstrumentingAgents&, const HitTestResult&, unsigned modifierFlags);
|
|
static bool handleMousePressImpl(InstrumentingAgents&);
|
|
static bool handleTouchEventImpl(InstrumentingAgents&, Node&);
|
|
static bool forcePseudoStateImpl(InstrumentingAgents&, const Element&, CSSSelector::PseudoClassType);
|
|
|
|
static void willSendXMLHttpRequestImpl(InstrumentingAgents&, const String& url);
|
|
static void willFetchImpl(InstrumentingAgents&, const String& url);
|
|
static void didInstallTimerImpl(InstrumentingAgents&, int timerId, Seconds timeout, bool singleShot, ScriptExecutionContext&);
|
|
static void didRemoveTimerImpl(InstrumentingAgents&, int timerId, ScriptExecutionContext&);
|
|
|
|
static int willPostMessageImpl(InstrumentingAgents&);
|
|
static void didPostMessageImpl(InstrumentingAgents&, int postMessageIdentifier, JSC::JSGlobalObject&);
|
|
static void didFailPostMessageImpl(InstrumentingAgents&, int postMessageIdentifier);
|
|
static void willDispatchPostMessageImpl(InstrumentingAgents&, int postMessageIdentifier);
|
|
static void didDispatchPostMessageImpl(InstrumentingAgents&, int postMessageIdentifier);
|
|
|
|
static void willCallFunctionImpl(InstrumentingAgents&, const String& scriptName, int scriptLine, int scriptColumn, ScriptExecutionContext*);
|
|
static void didCallFunctionImpl(InstrumentingAgents&, ScriptExecutionContext*);
|
|
static void didAddEventListenerImpl(InstrumentingAgents&, EventTarget&, const AtomString& eventType, EventListener&, bool capture);
|
|
static void willRemoveEventListenerImpl(InstrumentingAgents&, EventTarget&, const AtomString& eventType, EventListener&, bool capture);
|
|
static bool isEventListenerDisabledImpl(InstrumentingAgents&, EventTarget&, const AtomString& eventType, EventListener&, bool capture);
|
|
static void willDispatchEventImpl(InstrumentingAgents&, Document&, const Event&);
|
|
static void willHandleEventImpl(InstrumentingAgents&, Event&, const RegisteredEventListener&);
|
|
static void didHandleEventImpl(InstrumentingAgents&, Event&, const RegisteredEventListener&);
|
|
static void didDispatchEventImpl(InstrumentingAgents&, const Event&);
|
|
static void willDispatchEventOnWindowImpl(InstrumentingAgents&, const Event&, DOMWindow&);
|
|
static void didDispatchEventOnWindowImpl(InstrumentingAgents&, const Event&);
|
|
static void eventDidResetAfterDispatchImpl(InstrumentingAgents&, const Event&);
|
|
static void willEvaluateScriptImpl(InstrumentingAgents&, Frame&, const String& url, int lineNumber, int columnNumber);
|
|
static void didEvaluateScriptImpl(InstrumentingAgents&, Frame&);
|
|
static void willFireTimerImpl(InstrumentingAgents&, int timerId, bool oneShot, ScriptExecutionContext&);
|
|
static void didFireTimerImpl(InstrumentingAgents&, int timerId, bool oneShot);
|
|
static void didInvalidateLayoutImpl(InstrumentingAgents&, Frame&);
|
|
static void willLayoutImpl(InstrumentingAgents&, Frame&);
|
|
static void didLayoutImpl(InstrumentingAgents&, RenderObject&);
|
|
static void didScrollImpl(InstrumentingAgents&);
|
|
static void willCompositeImpl(InstrumentingAgents&, Frame&);
|
|
static void didCompositeImpl(InstrumentingAgents&);
|
|
static void willPaintImpl(InstrumentingAgents&, RenderObject&);
|
|
static void didPaintImpl(InstrumentingAgents&, RenderObject&, const LayoutRect&);
|
|
static void willRecalculateStyleImpl(InstrumentingAgents&, Document&);
|
|
static void didRecalculateStyleImpl(InstrumentingAgents&);
|
|
static void didScheduleStyleRecalculationImpl(InstrumentingAgents&, Document&);
|
|
static void applyUserAgentOverrideImpl(InstrumentingAgents&, String&);
|
|
static void applyEmulatedMediaImpl(InstrumentingAgents&, String&);
|
|
|
|
static void willSendRequestImpl(InstrumentingAgents&, unsigned long identifier, DocumentLoader*, ResourceRequest&, const ResourceResponse& redirectResponse, const CachedResource*);
|
|
static void willSendRequestOfTypeImpl(InstrumentingAgents&, unsigned long identifier, DocumentLoader*, ResourceRequest&, LoadType);
|
|
static void markResourceAsCachedImpl(InstrumentingAgents&, unsigned long identifier);
|
|
static void didLoadResourceFromMemoryCacheImpl(InstrumentingAgents&, DocumentLoader*, CachedResource*);
|
|
static void didReceiveResourceResponseImpl(InstrumentingAgents&, unsigned long identifier, DocumentLoader*, const ResourceResponse&, ResourceLoader*);
|
|
static void didReceiveThreadableLoaderResponseImpl(InstrumentingAgents&, DocumentThreadableLoader&, unsigned long identifier);
|
|
static void didReceiveDataImpl(InstrumentingAgents&, unsigned long identifier, const uint8_t* data, int dataLength, int encodedDataLength);
|
|
static void didFinishLoadingImpl(InstrumentingAgents&, unsigned long identifier, DocumentLoader*, const NetworkLoadMetrics&, ResourceLoader*);
|
|
static void didFailLoadingImpl(InstrumentingAgents&, unsigned long identifier, DocumentLoader*, const ResourceError&);
|
|
static void willLoadXHRSynchronouslyImpl(InstrumentingAgents&);
|
|
static void didLoadXHRSynchronouslyImpl(InstrumentingAgents&);
|
|
static void scriptImportedImpl(InstrumentingAgents&, unsigned long identifier, const String& sourceString);
|
|
static void scriptExecutionBlockedByCSPImpl(InstrumentingAgents&, const String& directiveText);
|
|
static void didReceiveScriptResponseImpl(InstrumentingAgents&, unsigned long identifier);
|
|
static void domContentLoadedEventFiredImpl(InstrumentingAgents&, Frame&);
|
|
static void loadEventFiredImpl(InstrumentingAgents&, Frame*);
|
|
static void frameDetachedFromParentImpl(InstrumentingAgents&, Frame&);
|
|
static void didCommitLoadImpl(InstrumentingAgents&, Frame&, DocumentLoader*);
|
|
static void frameDocumentUpdatedImpl(InstrumentingAgents&, Frame&);
|
|
static void loaderDetachedFromFrameImpl(InstrumentingAgents&, DocumentLoader&);
|
|
static void frameStartedLoadingImpl(InstrumentingAgents&, Frame&);
|
|
static void frameStoppedLoadingImpl(InstrumentingAgents&, Frame&);
|
|
static void frameScheduledNavigationImpl(InstrumentingAgents&, Frame&, Seconds delay);
|
|
static void frameClearedScheduledNavigationImpl(InstrumentingAgents&, Frame&);
|
|
#if ENABLE(DARK_MODE_CSS) || HAVE(OS_DARK_MODE_SUPPORT)
|
|
static void defaultAppearanceDidChangeImpl(InstrumentingAgents&, bool useDarkAppearance);
|
|
#endif
|
|
static void willDestroyCachedResourceImpl(CachedResource&);
|
|
|
|
static bool willInterceptImpl(InstrumentingAgents&, const ResourceRequest&);
|
|
static bool shouldInterceptRequestImpl(InstrumentingAgents&, const ResourceRequest&);
|
|
static bool shouldInterceptResponseImpl(InstrumentingAgents&, const ResourceResponse&);
|
|
static void interceptRequestImpl(InstrumentingAgents&, ResourceLoader&, Function<void(const ResourceRequest&)>&&);
|
|
static void interceptResponseImpl(InstrumentingAgents&, const ResourceResponse&, unsigned long identifier, CompletionHandler<void(const ResourceResponse&, RefPtr<SharedBuffer>)>&&);
|
|
|
|
static void addMessageToConsoleImpl(InstrumentingAgents&, std::unique_ptr<Inspector::ConsoleMessage>);
|
|
|
|
static void consoleCountImpl(InstrumentingAgents&, JSC::JSGlobalObject*, const String& label);
|
|
static void consoleCountResetImpl(InstrumentingAgents&, JSC::JSGlobalObject*, const String& label);
|
|
static void takeHeapSnapshotImpl(InstrumentingAgents&, const String& title);
|
|
static void startConsoleTimingImpl(InstrumentingAgents&, Frame&, JSC::JSGlobalObject*, const String& label);
|
|
static void startConsoleTimingImpl(InstrumentingAgents&, JSC::JSGlobalObject*, const String& label);
|
|
static void logConsoleTimingImpl(InstrumentingAgents&, JSC::JSGlobalObject*, const String& label, Ref<Inspector::ScriptArguments>&&);
|
|
static void stopConsoleTimingImpl(InstrumentingAgents&, Frame&, JSC::JSGlobalObject*, const String& label);
|
|
static void stopConsoleTimingImpl(InstrumentingAgents&, JSC::JSGlobalObject*, const String& label);
|
|
static void consoleTimeStampImpl(InstrumentingAgents&, Frame&, Ref<Inspector::ScriptArguments>&&);
|
|
static void startProfilingImpl(InstrumentingAgents&, JSC::JSGlobalObject*, const String& title);
|
|
static void stopProfilingImpl(InstrumentingAgents&, JSC::JSGlobalObject*, const String& title);
|
|
static void consoleStartRecordingCanvasImpl(InstrumentingAgents&, CanvasRenderingContext&, JSC::JSGlobalObject&, JSC::JSObject* options);
|
|
static void consoleStopRecordingCanvasImpl(InstrumentingAgents&, CanvasRenderingContext&);
|
|
|
|
static void didRequestAnimationFrameImpl(InstrumentingAgents&, int callbackId, Document&);
|
|
static void didCancelAnimationFrameImpl(InstrumentingAgents&, int callbackId, Document&);
|
|
static void willFireAnimationFrameImpl(InstrumentingAgents&, int callbackId, Document&);
|
|
static void didFireAnimationFrameImpl(InstrumentingAgents&);
|
|
|
|
static void willFireObserverCallbackImpl(InstrumentingAgents&, const String&, ScriptExecutionContext&);
|
|
static void didFireObserverCallbackImpl(InstrumentingAgents&);
|
|
|
|
static void didOpenDatabaseImpl(InstrumentingAgents&, Database&);
|
|
|
|
static void didDispatchDOMStorageEventImpl(InstrumentingAgents&, const String& key, const String& oldValue, const String& newValue, StorageType, SecurityOrigin*);
|
|
|
|
static bool shouldWaitForDebuggerOnStartImpl(InstrumentingAgents&);
|
|
static void workerStartedImpl(InstrumentingAgents&, WorkerInspectorProxy&);
|
|
static void workerTerminatedImpl(InstrumentingAgents&, WorkerInspectorProxy&);
|
|
|
|
static void didCreateWebSocketImpl(InstrumentingAgents&, unsigned long identifier, const URL& requestURL);
|
|
static void willSendWebSocketHandshakeRequestImpl(InstrumentingAgents&, unsigned long identifier, const ResourceRequest&);
|
|
static void didReceiveWebSocketHandshakeResponseImpl(InstrumentingAgents&, unsigned long identifier, const ResourceResponse&);
|
|
static void didCloseWebSocketImpl(InstrumentingAgents&, unsigned long identifier);
|
|
static void didReceiveWebSocketFrameImpl(InstrumentingAgents&, unsigned long identifier, const WebSocketFrame&);
|
|
static void didSendWebSocketFrameImpl(InstrumentingAgents&, unsigned long identifier, const WebSocketFrame&);
|
|
static void didReceiveWebSocketFrameErrorImpl(InstrumentingAgents&, unsigned long identifier, const String&);
|
|
|
|
#if ENABLE(RESOURCE_USAGE)
|
|
static void didHandleMemoryPressureImpl(InstrumentingAgents&, Critical);
|
|
#endif
|
|
|
|
static void networkStateChangedImpl(InstrumentingAgents&);
|
|
static void updateApplicationCacheStatusImpl(InstrumentingAgents&, Frame&);
|
|
|
|
static void didChangeCSSCanvasClientNodesImpl(InstrumentingAgents&, CanvasBase&);
|
|
static void didCreateCanvasRenderingContextImpl(InstrumentingAgents&, CanvasRenderingContext&);
|
|
static void didChangeCanvasMemoryImpl(InstrumentingAgents&, CanvasRenderingContext&);
|
|
static void didFinishRecordingCanvasFrameImpl(InstrumentingAgents&, CanvasRenderingContext&, bool forceDispatch = false);
|
|
#if ENABLE(WEBGL)
|
|
static void didEnableExtensionImpl(InstrumentingAgents&, WebGLRenderingContextBase&, const String&);
|
|
static void didCreateWebGLProgramImpl(InstrumentingAgents&, WebGLRenderingContextBase&, WebGLProgram&);
|
|
static void willDestroyWebGLProgramImpl(InstrumentingAgents&, WebGLProgram&);
|
|
static bool isWebGLProgramDisabledImpl(InstrumentingAgents&, WebGLProgram&);
|
|
static bool isWebGLProgramHighlightedImpl(InstrumentingAgents&, WebGLProgram&);
|
|
#endif
|
|
|
|
static void willApplyKeyframeEffectImpl(InstrumentingAgents&, Element&, KeyframeEffect&, ComputedEffectTiming);
|
|
static void didChangeWebAnimationNameImpl(InstrumentingAgents&, WebAnimation&);
|
|
static void didSetWebAnimationEffectImpl(InstrumentingAgents&, WebAnimation&);
|
|
static void didChangeWebAnimationEffectTimingImpl(InstrumentingAgents&, WebAnimation&);
|
|
static void didChangeWebAnimationEffectTargetImpl(InstrumentingAgents&, WebAnimation&);
|
|
static void didCreateWebAnimationImpl(InstrumentingAgents&, WebAnimation&);
|
|
static void willDestroyWebAnimationImpl(InstrumentingAgents&, WebAnimation&);
|
|
|
|
static void layerTreeDidChangeImpl(InstrumentingAgents&);
|
|
static void renderLayerDestroyedImpl(InstrumentingAgents&, const RenderLayer&);
|
|
|
|
static InstrumentingAgents& instrumentingAgents(Page&);
|
|
static InstrumentingAgents& instrumentingAgents(WorkerOrWorkletGlobalScope&);
|
|
|
|
static InstrumentingAgents* instrumentingAgents(const Frame&);
|
|
static InstrumentingAgents* instrumentingAgents(const Frame*);
|
|
static InstrumentingAgents* instrumentingAgents(ScriptExecutionContext&);
|
|
static InstrumentingAgents* instrumentingAgents(Document&);
|
|
static InstrumentingAgents* instrumentingAgents(Document*);
|
|
static InstrumentingAgents* instrumentingAgents(RenderObject&);
|
|
static InstrumentingAgents* instrumentingAgents(WorkerOrWorkletGlobalScope*);
|
|
};
|
|
|
|
inline void InspectorInstrumentation::didClearWindowObjectInWorld(Frame& frame, DOMWrapperWorld& world)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didClearWindowObjectInWorldImpl(*agents, frame, world);
|
|
}
|
|
|
|
inline bool InspectorInstrumentation::isDebuggerPaused(Frame* frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(false);
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
return isDebuggerPausedImpl(*agents);
|
|
return false;
|
|
}
|
|
|
|
inline int InspectorInstrumentation::identifierForNode(Node& node)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(0);
|
|
if (auto* agents = instrumentingAgents(node.document()))
|
|
return identifierForNodeImpl(*agents, node);
|
|
return 0;
|
|
}
|
|
|
|
inline void InspectorInstrumentation::addEventListenersToNode(Node& node)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(node.document()))
|
|
addEventListenersToNodeImpl(*agents, node);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willInsertDOMNode(Document& document, Node& parent)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
willInsertDOMNodeImpl(*agents, parent);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didInsertDOMNode(Document& document, Node& node)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didInsertDOMNodeImpl(*agents, node);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willRemoveDOMNode(Document& document, Node& node)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
willRemoveDOMNodeImpl(*agents, node);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didRemoveDOMNode(Document& document, Node& node)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didRemoveDOMNodeImpl(*agents, node);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willDestroyDOMNode(Node& node)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(node.document()))
|
|
willDestroyDOMNodeImpl(*agents, node);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::nodeLayoutContextChanged(Node& node, RenderObject* newRenderer)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(node.document()))
|
|
nodeLayoutContextChangedImpl(*agents, node, newRenderer);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willModifyDOMAttr(Document& document, Element& element, const AtomString& oldValue, const AtomString& newValue)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
willModifyDOMAttrImpl(*agents, element, oldValue, newValue);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didModifyDOMAttr(Document& document, Element& element, const AtomString& name, const AtomString& value)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didModifyDOMAttrImpl(*agents, element, name, value);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didRemoveDOMAttr(Document& document, Element& element, const AtomString& name)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didRemoveDOMAttrImpl(*agents, element, name);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willInvalidateStyleAttr(Element& element)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(element.document()))
|
|
willInvalidateStyleAttrImpl(*agents, element);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didInvalidateStyleAttr(Element& element)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(element.document()))
|
|
didInvalidateStyleAttrImpl(*agents, element);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::documentDetached(Document& document)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
documentDetachedImpl(*agents, document);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::frameWindowDiscarded(Frame& frame, DOMWindow* domWindow)
|
|
{
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
frameWindowDiscardedImpl(*agents, domWindow);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::mediaQueryResultChanged(Document& document)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
mediaQueryResultChangedImpl(*agents);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::activeStyleSheetsUpdated(Document& document)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
activeStyleSheetsUpdatedImpl(*agents, document);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didPushShadowRoot(Element& host, ShadowRoot& root)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(host.document()))
|
|
didPushShadowRootImpl(*agents, host, root);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willPopShadowRoot(Element& host, ShadowRoot& root)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(host.document()))
|
|
willPopShadowRootImpl(*agents, host, root);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didChangeCustomElementState(Element& element)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(element.document()))
|
|
didChangeCustomElementStateImpl(*agents, element);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::pseudoElementCreated(Page* page, PseudoElement& pseudoElement)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(page))
|
|
pseudoElementCreatedImpl(*agents, pseudoElement);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::pseudoElementDestroyed(Page* page, PseudoElement& pseudoElement)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(page))
|
|
pseudoElementDestroyedImpl(*agents, pseudoElement);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didCreateNamedFlow(Document* document, WebKitNamedFlow& namedFlow)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didCreateNamedFlowImpl(*agents, document, namedFlow);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willRemoveNamedFlow(Document* document, WebKitNamedFlow& namedFlow)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
willRemoveNamedFlowImpl(*agents, document, namedFlow);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didChangeRegionOverset(Document& document, WebKitNamedFlow& namedFlow)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didChangeRegionOversetImpl(*agents, document, namedFlow);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didRegisterNamedFlowContentElement(Document& document, WebKitNamedFlow& namedFlow, Node& contentElement, Node* nextContentElement)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didRegisterNamedFlowContentElementImpl(*agents, document, namedFlow, contentElement, nextContentElement);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didUnregisterNamedFlowContentElement(Document& document, WebKitNamedFlow& namedFlow, Node& contentElement)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didUnregisterNamedFlowContentElementImpl(*agents, document, namedFlow, contentElement);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::mouseDidMoveOverElement(Page& page, const HitTestResult& result, unsigned modifierFlags)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
mouseDidMoveOverElementImpl(instrumentingAgents(page), result, modifierFlags);
|
|
}
|
|
|
|
inline bool InspectorInstrumentation::handleTouchEvent(Frame& frame, Node& node)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(false);
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
return handleTouchEventImpl(*agents, node);
|
|
return false;
|
|
}
|
|
|
|
inline bool InspectorInstrumentation::handleMousePress(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(false);
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
return handleMousePressImpl(*agents);
|
|
return false;
|
|
}
|
|
|
|
inline bool InspectorInstrumentation::forcePseudoState(const Element& element, CSSSelector::PseudoClassType pseudoState)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(false);
|
|
if (auto* agents = instrumentingAgents(element.document()))
|
|
return forcePseudoStateImpl(*agents, element, pseudoState);
|
|
return false;
|
|
}
|
|
|
|
inline void InspectorInstrumentation::characterDataModified(Document& document, CharacterData& characterData)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
characterDataModifiedImpl(*agents, characterData);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willSendXMLHttpRequest(ScriptExecutionContext* context, const String& url)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
willSendXMLHttpRequestImpl(*agents, url);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willFetch(ScriptExecutionContext& context, const String& url)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
willFetchImpl(*agents, url);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didInstallTimer(ScriptExecutionContext& context, int timerId, Seconds timeout, bool singleShot)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
didInstallTimerImpl(*agents, timerId, timeout, singleShot, context);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didRemoveTimer(ScriptExecutionContext& context, int timerId)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
didRemoveTimerImpl(*agents, timerId, context);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didAddEventListener(EventTarget& target, const AtomString& eventType, EventListener& listener, bool capture)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(target.scriptExecutionContext()))
|
|
didAddEventListenerImpl(*agents, target, eventType, listener, capture);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willRemoveEventListener(EventTarget& target, const AtomString& eventType, EventListener& listener, bool capture)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(target.scriptExecutionContext()))
|
|
willRemoveEventListenerImpl(*agents, target, eventType, listener, capture);
|
|
}
|
|
|
|
inline bool InspectorInstrumentation::isEventListenerDisabled(EventTarget& target, const AtomString& eventType, EventListener& listener, bool capture)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(false);
|
|
if (auto* agents = instrumentingAgents(target.scriptExecutionContext()))
|
|
return isEventListenerDisabledImpl(*agents, target, eventType, listener, capture);
|
|
return false;
|
|
}
|
|
|
|
inline int InspectorInstrumentation::willPostMessage(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(0);
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
return willPostMessageImpl(*agents);
|
|
return 0;
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didPostMessage(Frame& frame, int postMessageIdentifier, JSC::JSGlobalObject& state)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didPostMessageImpl(*agents, postMessageIdentifier, state);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didFailPostMessage(Frame& frame, int postMessageIdentifier)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didFailPostMessageImpl(*agents, postMessageIdentifier);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willDispatchPostMessage(Frame& frame, int postMessageIdentifier)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
willDispatchPostMessageImpl(*agents, postMessageIdentifier);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didDispatchPostMessage(Frame& frame, int postMessageIdentifier)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didDispatchPostMessageImpl(*agents, postMessageIdentifier);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willCallFunction(ScriptExecutionContext* context, const String& scriptName, int scriptLine, int scriptColumn)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
willCallFunctionImpl(*agents, scriptName, scriptLine, scriptColumn, context);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didCallFunction(ScriptExecutionContext* context)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
didCallFunctionImpl(*agents, context);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willDispatchEvent(Document& document, const Event& event)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
willDispatchEventImpl(*agents, document, event);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didDispatchEvent(Document& document, const Event& event)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didDispatchEventImpl(*agents, event);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willHandleEvent(ScriptExecutionContext& context, Event& event, const RegisteredEventListener& listener)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
return willHandleEventImpl(*agents, event, listener);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didHandleEvent(ScriptExecutionContext& context, Event& event, const RegisteredEventListener& listener)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
return didHandleEventImpl(*agents, event, listener);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willDispatchEventOnWindow(Frame* frame, const Event& event, DOMWindow& window)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
willDispatchEventOnWindowImpl(*agents, event, window);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didDispatchEventOnWindow(Frame* frame, const Event& event)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didDispatchEventOnWindowImpl(*agents, event);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::eventDidResetAfterDispatch(const Event& event)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
|
|
if (!is<Node>(event.target()))
|
|
return;
|
|
|
|
auto* node = downcast<Node>(event.target());
|
|
if (auto* agents = instrumentingAgents(node->scriptExecutionContext()))
|
|
return eventDidResetAfterDispatchImpl(*agents, event);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willEvaluateScript(Frame& frame, const String& url, int lineNumber, int columnNumber)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
willEvaluateScriptImpl(*agents, frame, url, lineNumber, columnNumber);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didEvaluateScript(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didEvaluateScriptImpl(*agents, frame);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willFireTimer(ScriptExecutionContext& context, int timerId, bool oneShot)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
willFireTimerImpl(*agents, timerId, oneShot, context);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didFireTimer(ScriptExecutionContext& context, int timerId, bool oneShot)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
didFireTimerImpl(*agents, timerId, oneShot);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didInvalidateLayout(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didInvalidateLayoutImpl(*agents, frame);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willLayout(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
willLayoutImpl(*agents, frame);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didLayout(Frame& frame, RenderObject& root)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didLayoutImpl(*agents, root);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didScroll(Page& page)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
didScrollImpl(instrumentingAgents(page));
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willComposite(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
willCompositeImpl(*agents, frame);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didComposite(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didCompositeImpl(*agents);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willPaint(RenderObject& renderer)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(renderer))
|
|
return willPaintImpl(*agents, renderer);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didPaint(RenderObject& renderer, const LayoutRect& rect)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(renderer))
|
|
didPaintImpl(*agents, renderer, rect);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willRecalculateStyle(Document& document)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
willRecalculateStyleImpl(*agents, document);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didRecalculateStyle(Document& document)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didRecalculateStyleImpl(*agents);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didScheduleStyleRecalculation(Document& document)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didScheduleStyleRecalculationImpl(*agents, document);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::applyUserAgentOverride(Frame& frame, String& userAgent)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
applyUserAgentOverrideImpl(*agents, userAgent);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::applyEmulatedMedia(Frame& frame, String& media)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
applyEmulatedMediaImpl(*agents, media);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willSendRequest(Frame* frame, unsigned long identifier, DocumentLoader* loader, ResourceRequest& request, const ResourceResponse& redirectResponse, const CachedResource* cachedResource)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
willSendRequestImpl(*agents, identifier, loader, request, redirectResponse, cachedResource);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willSendRequest(WorkerOrWorkletGlobalScope& globalScope, unsigned long identifier, ResourceRequest& request)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
willSendRequestImpl(instrumentingAgents(globalScope), identifier, nullptr, request, ResourceResponse { }, nullptr);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willSendRequestOfType(Frame* frame, unsigned long identifier, DocumentLoader* loader, ResourceRequest& request, LoadType loadType)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
willSendRequestOfTypeImpl(*agents, identifier, loader, request, loadType);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didLoadResourceFromMemoryCache(Page& page, DocumentLoader* loader, CachedResource* resource)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
didLoadResourceFromMemoryCacheImpl(instrumentingAgents(page), loader, resource);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didReceiveResourceResponse(Frame& frame, unsigned long identifier, DocumentLoader* loader, const ResourceResponse& response, ResourceLoader* resourceLoader)
|
|
{
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didReceiveResourceResponseImpl(*agents, identifier, loader, response, resourceLoader);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didReceiveResourceResponse(WorkerOrWorkletGlobalScope& globalScope, unsigned long identifier, const ResourceResponse& response)
|
|
{
|
|
didReceiveResourceResponseImpl(instrumentingAgents(globalScope), identifier, nullptr, response, nullptr);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didReceiveThreadableLoaderResponse(DocumentThreadableLoader& documentThreadableLoader, unsigned long identifier)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(documentThreadableLoader.document()))
|
|
didReceiveThreadableLoaderResponseImpl(*agents, documentThreadableLoader, identifier);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didReceiveData(Frame* frame, unsigned long identifier, const uint8_t* data, int dataLength, int encodedDataLength)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didReceiveDataImpl(*agents, identifier, data, dataLength, encodedDataLength);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didReceiveData(WorkerOrWorkletGlobalScope& globalScope, unsigned long identifier, const uint8_t* data, int dataLength)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
didReceiveDataImpl(instrumentingAgents(globalScope), identifier, data, dataLength, dataLength);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didFinishLoading(Frame* frame, DocumentLoader* loader, unsigned long identifier, const NetworkLoadMetrics& networkLoadMetrics, ResourceLoader* resourceLoader)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didFinishLoadingImpl(*agents, identifier, loader, networkLoadMetrics, resourceLoader);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didFinishLoading(WorkerOrWorkletGlobalScope& globalScope, unsigned long identifier, const NetworkLoadMetrics& networkLoadMetrics)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
didFinishLoadingImpl(instrumentingAgents(globalScope), identifier, nullptr, networkLoadMetrics, nullptr);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didFailLoading(Frame* frame, DocumentLoader* loader, unsigned long identifier, const ResourceError& error)
|
|
{
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didFailLoadingImpl(*agents, identifier, loader, error);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didFailLoading(WorkerOrWorkletGlobalScope& globalScope, unsigned long identifier, const ResourceError& error)
|
|
{
|
|
didFailLoadingImpl(instrumentingAgents(globalScope), identifier, nullptr, error);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::continueAfterXFrameOptionsDenied(Frame& frame, unsigned long identifier, DocumentLoader& loader, const ResourceResponse& response)
|
|
{
|
|
// Treat the same as didReceiveResponse.
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didReceiveResourceResponseImpl(*agents, identifier, &loader, response, nullptr);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::continueWithPolicyDownload(Frame& frame, unsigned long identifier, DocumentLoader& loader, const ResourceResponse& response)
|
|
{
|
|
// Treat the same as didReceiveResponse.
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didReceiveResourceResponseImpl(*agents, identifier, &loader, response, nullptr);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::continueWithPolicyIgnore(Frame& frame, unsigned long identifier, DocumentLoader& loader, const ResourceResponse& response)
|
|
{
|
|
// Treat the same as didReceiveResponse.
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didReceiveResourceResponseImpl(*agents, identifier, &loader, response, nullptr);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willLoadXHRSynchronously(ScriptExecutionContext* context)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
willLoadXHRSynchronouslyImpl(*agents);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didLoadXHRSynchronously(ScriptExecutionContext* context)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
didLoadXHRSynchronouslyImpl(*agents);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::scriptImported(ScriptExecutionContext& context, unsigned long identifier, const String& sourceString)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
scriptImportedImpl(*agents, identifier, sourceString);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::scriptExecutionBlockedByCSP(ScriptExecutionContext* context, const String& directiveText)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
scriptExecutionBlockedByCSPImpl(*agents, directiveText);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didReceiveScriptResponse(ScriptExecutionContext* context, unsigned long identifier)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
didReceiveScriptResponseImpl(*agents, identifier);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::domContentLoadedEventFired(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
domContentLoadedEventFiredImpl(*agents, frame);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::loadEventFired(Frame* frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
loadEventFiredImpl(*agents, frame);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::frameDetachedFromParent(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
frameDetachedFromParentImpl(*agents, frame);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didCommitLoad(Frame& frame, DocumentLoader* loader)
|
|
{
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
didCommitLoadImpl(*agents, frame, loader);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::frameDocumentUpdated(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
frameDocumentUpdatedImpl(*agents, frame);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::loaderDetachedFromFrame(Frame& frame, DocumentLoader& loader)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
loaderDetachedFromFrameImpl(*agents, loader);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::frameStartedLoading(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
frameStartedLoadingImpl(*agents, frame);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::frameStoppedLoading(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
frameStoppedLoadingImpl(*agents, frame);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::frameScheduledNavigation(Frame& frame, Seconds delay)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
frameScheduledNavigationImpl(*agents, frame, delay);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::frameClearedScheduledNavigation(Frame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
frameClearedScheduledNavigationImpl(*agents, frame);
|
|
}
|
|
|
|
#if ENABLE(DARK_MODE_CSS) || HAVE(OS_DARK_MODE_SUPPORT)
|
|
inline void InspectorInstrumentation::defaultAppearanceDidChange(Page& page, bool useDarkAppearance)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
defaultAppearanceDidChangeImpl(instrumentingAgents(page), useDarkAppearance);
|
|
}
|
|
#endif
|
|
|
|
inline void InspectorInstrumentation::willDestroyCachedResource(CachedResource& cachedResource)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
willDestroyCachedResourceImpl(cachedResource);
|
|
}
|
|
|
|
inline bool InspectorInstrumentation::willIntercept(const Frame* frame, const ResourceRequest& request)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(false);
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
return willInterceptImpl(*agents, request);
|
|
return false;
|
|
}
|
|
|
|
inline bool InspectorInstrumentation::shouldInterceptRequest(const Frame& frame, const ResourceRequest& request)
|
|
{
|
|
ASSERT(InspectorInstrumentationPublic::hasFrontends());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
return shouldInterceptRequestImpl(*agents, request);
|
|
return false;
|
|
}
|
|
|
|
inline bool InspectorInstrumentation::shouldInterceptResponse(const Frame& frame, const ResourceResponse& response)
|
|
{
|
|
ASSERT(InspectorInstrumentationPublic::hasFrontends());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
return shouldInterceptResponseImpl(*agents, response);
|
|
return false;
|
|
}
|
|
|
|
inline void InspectorInstrumentation::interceptRequest(ResourceLoader& loader, Function<void(const ResourceRequest&)>&& handler)
|
|
{
|
|
ASSERT(InspectorInstrumentation::shouldInterceptRequest(*loader.frame(), loader.request()));
|
|
if (auto* agents = instrumentingAgents(loader.frame()))
|
|
interceptRequestImpl(*agents, loader, WTFMove(handler));
|
|
}
|
|
|
|
inline void InspectorInstrumentation::interceptResponse(const Frame& frame, const ResourceResponse& response, unsigned long identifier, CompletionHandler<void(const ResourceResponse&, RefPtr<SharedBuffer>)>&& handler)
|
|
{
|
|
ASSERT(InspectorInstrumentation::shouldInterceptResponse(frame, response));
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
interceptResponseImpl(*agents, response, identifier, WTFMove(handler));
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didOpenDatabase(Database& database)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(database.document()))
|
|
didOpenDatabaseImpl(*agents, database);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didDispatchDOMStorageEvent(Page& page, const String& key, const String& oldValue, const String& newValue, StorageType storageType, SecurityOrigin* securityOrigin)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
didDispatchDOMStorageEventImpl(instrumentingAgents(page), key, oldValue, newValue, storageType, securityOrigin);
|
|
}
|
|
|
|
inline bool InspectorInstrumentation::shouldWaitForDebuggerOnStart(ScriptExecutionContext& context)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(false);
|
|
if (auto* agents = instrumentingAgents(context))
|
|
return shouldWaitForDebuggerOnStartImpl(*agents);
|
|
return false;
|
|
}
|
|
|
|
inline void InspectorInstrumentation::workerStarted(WorkerInspectorProxy& proxy)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(proxy.scriptExecutionContext()))
|
|
workerStartedImpl(*agents, proxy);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::workerTerminated(WorkerInspectorProxy& proxy)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(proxy.scriptExecutionContext()))
|
|
workerTerminatedImpl(*agents, proxy);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didCreateWebSocket(Document* document, unsigned long identifier, const URL& requestURL)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didCreateWebSocketImpl(*agents, identifier, requestURL);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willSendWebSocketHandshakeRequest(Document* document, unsigned long identifier, const ResourceRequest& request)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
willSendWebSocketHandshakeRequestImpl(*agents, identifier, request);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didReceiveWebSocketHandshakeResponse(Document* document, unsigned long identifier, const ResourceResponse& response)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didReceiveWebSocketHandshakeResponseImpl(*agents, identifier, response);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didCloseWebSocket(Document* document, unsigned long identifier)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didCloseWebSocketImpl(*agents, identifier);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didReceiveWebSocketFrame(Document* document, unsigned long identifier, const WebSocketFrame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didReceiveWebSocketFrameImpl(*agents, identifier, frame);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didReceiveWebSocketFrameError(Document* document, unsigned long identifier, const String& errorMessage)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didReceiveWebSocketFrameErrorImpl(*agents, identifier, errorMessage);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didSendWebSocketFrame(Document* document, unsigned long identifier, const WebSocketFrame& frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didSendWebSocketFrameImpl(*agents, identifier, frame);
|
|
}
|
|
|
|
#if ENABLE(RESOURCE_USAGE)
|
|
inline void InspectorInstrumentation::didHandleMemoryPressure(Page& page, Critical critical)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
didHandleMemoryPressureImpl(instrumentingAgents(page), critical);
|
|
}
|
|
#endif
|
|
|
|
inline void InspectorInstrumentation::didChangeCSSCanvasClientNodes(CanvasBase& canvasBase)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(canvasBase.scriptExecutionContext()))
|
|
didChangeCSSCanvasClientNodesImpl(*agents, canvasBase);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didCreateCanvasRenderingContext(CanvasRenderingContext& context)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context.canvasBase().scriptExecutionContext()))
|
|
didCreateCanvasRenderingContextImpl(*agents, context);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didChangeCanvasMemory(CanvasRenderingContext& context)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context.canvasBase().scriptExecutionContext()))
|
|
didChangeCanvasMemoryImpl(*agents, context);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didFinishRecordingCanvasFrame(CanvasRenderingContext& context, bool forceDispatch)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context.canvasBase().scriptExecutionContext()))
|
|
didFinishRecordingCanvasFrameImpl(*agents, context, forceDispatch);
|
|
}
|
|
|
|
#if ENABLE(WEBGL)
|
|
inline void InspectorInstrumentation::didEnableExtension(WebGLRenderingContextBase& contextWebGLBase, const String& extension)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(contextWebGLBase.canvasBase().scriptExecutionContext()))
|
|
didEnableExtensionImpl(*agents, contextWebGLBase, extension);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didCreateWebGLProgram(WebGLRenderingContextBase& contextWebGLBase, WebGLProgram& program)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(contextWebGLBase.canvasBase().scriptExecutionContext()))
|
|
didCreateWebGLProgramImpl(*agents, contextWebGLBase, program);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willDestroyWebGLProgram(WebGLProgram& program)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(program.scriptExecutionContext()))
|
|
willDestroyWebGLProgramImpl(*agents, program);
|
|
}
|
|
|
|
inline bool InspectorInstrumentation::isWebGLProgramDisabled(WebGLRenderingContextBase& contextWebGLBase, WebGLProgram& program)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(false);
|
|
if (auto* agents = instrumentingAgents(contextWebGLBase.canvasBase().scriptExecutionContext()))
|
|
return isWebGLProgramDisabledImpl(*agents, program);
|
|
return false;
|
|
}
|
|
|
|
inline bool InspectorInstrumentation::isWebGLProgramHighlighted(WebGLRenderingContextBase& contextWebGLBase, WebGLProgram& program)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(false);
|
|
if (auto* agents = instrumentingAgents(contextWebGLBase.canvasBase().scriptExecutionContext()))
|
|
return isWebGLProgramHighlightedImpl(*agents, program);
|
|
return false;
|
|
}
|
|
#endif
|
|
|
|
inline void InspectorInstrumentation::willApplyKeyframeEffect(Element& target, KeyframeEffect& effect, ComputedEffectTiming computedTiming)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(target.document()))
|
|
willApplyKeyframeEffectImpl(*agents, target, effect, computedTiming);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didChangeWebAnimationName(WebAnimation& animation)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(animation.scriptExecutionContext()))
|
|
didChangeWebAnimationNameImpl(*agents, animation);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didSetWebAnimationEffect(WebAnimation& animation)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(animation.scriptExecutionContext()))
|
|
didSetWebAnimationEffectImpl(*agents, animation);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didChangeWebAnimationEffectTiming(WebAnimation& animation)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(animation.scriptExecutionContext()))
|
|
didChangeWebAnimationEffectTimingImpl(*agents, animation);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didChangeWebAnimationEffectTarget(WebAnimation& animation)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(animation.scriptExecutionContext()))
|
|
didChangeWebAnimationEffectTargetImpl(*agents, animation);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didCreateWebAnimation(WebAnimation& animation)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(animation.scriptExecutionContext()))
|
|
didCreateWebAnimationImpl(*agents, animation);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willDestroyWebAnimation(WebAnimation& animation)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(animation.scriptExecutionContext()))
|
|
willDestroyWebAnimationImpl(*agents, animation);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::networkStateChanged(Page& page)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
networkStateChangedImpl(instrumentingAgents(page));
|
|
}
|
|
|
|
inline void InspectorInstrumentation::updateApplicationCacheStatus(Frame* frame)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
updateApplicationCacheStatusImpl(*agents, *frame);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::addMessageToConsole(Page& page, std::unique_ptr<Inspector::ConsoleMessage> message)
|
|
{
|
|
addMessageToConsoleImpl(instrumentingAgents(page), WTFMove(message));
|
|
}
|
|
|
|
inline void InspectorInstrumentation::addMessageToConsole(WorkerOrWorkletGlobalScope& globalScope, std::unique_ptr<Inspector::ConsoleMessage> message)
|
|
{
|
|
addMessageToConsoleImpl(instrumentingAgents(globalScope), WTFMove(message));
|
|
}
|
|
|
|
inline void InspectorInstrumentation::consoleCount(Page& page, JSC::JSGlobalObject* state, const String& label)
|
|
{
|
|
consoleCountImpl(instrumentingAgents(page), state, label);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::consoleCount(WorkerOrWorkletGlobalScope& globalScope, JSC::JSGlobalObject* state, const String& label)
|
|
{
|
|
consoleCountImpl(instrumentingAgents(globalScope), state, label);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::consoleCountReset(Page& page, JSC::JSGlobalObject* state, const String& label)
|
|
{
|
|
consoleCountResetImpl(instrumentingAgents(page), state, label);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::consoleCountReset(WorkerOrWorkletGlobalScope& globalScope, JSC::JSGlobalObject* state, const String& label)
|
|
{
|
|
consoleCountResetImpl(instrumentingAgents(globalScope), state, label);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::takeHeapSnapshot(Frame& frame, const String& title)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
takeHeapSnapshotImpl(*agents, title);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::startConsoleTiming(Frame& frame, JSC::JSGlobalObject* exec, const String& label)
|
|
{
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
startConsoleTimingImpl(*agents, frame, exec, label);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::startConsoleTiming(WorkerOrWorkletGlobalScope& globalScope, JSC::JSGlobalObject* exec, const String& label)
|
|
{
|
|
startConsoleTimingImpl(instrumentingAgents(globalScope), exec, label);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::logConsoleTiming(Frame& frame, JSC::JSGlobalObject* exec, const String& label, Ref<Inspector::ScriptArguments>&& arguments)
|
|
{
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
logConsoleTimingImpl(*agents, exec, label, WTFMove(arguments));
|
|
}
|
|
|
|
inline void InspectorInstrumentation::logConsoleTiming(WorkerOrWorkletGlobalScope& globalScope, JSC::JSGlobalObject* exec, const String& label, Ref<Inspector::ScriptArguments>&& arguments)
|
|
{
|
|
logConsoleTimingImpl(instrumentingAgents(globalScope), exec, label, WTFMove(arguments));
|
|
}
|
|
|
|
inline void InspectorInstrumentation::stopConsoleTiming(Frame& frame, JSC::JSGlobalObject* exec, const String& label)
|
|
{
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
stopConsoleTimingImpl(*agents, frame, exec, label);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::stopConsoleTiming(WorkerOrWorkletGlobalScope& globalScope, JSC::JSGlobalObject* exec, const String& label)
|
|
{
|
|
stopConsoleTimingImpl(instrumentingAgents(globalScope), exec, label);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::consoleTimeStamp(Frame& frame, Ref<Inspector::ScriptArguments>&& arguments)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(frame))
|
|
consoleTimeStampImpl(*agents, frame, WTFMove(arguments));
|
|
}
|
|
|
|
inline void InspectorInstrumentation::startProfiling(Page& page, JSC::JSGlobalObject* exec, const String &title)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
startProfilingImpl(instrumentingAgents(page), exec, title);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::stopProfiling(Page& page, JSC::JSGlobalObject* exec, const String &title)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
stopProfilingImpl(instrumentingAgents(page), exec, title);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::consoleStartRecordingCanvas(CanvasRenderingContext& context, JSC::JSGlobalObject& exec, JSC::JSObject* options)
|
|
{
|
|
if (auto* agents = instrumentingAgents(context.canvasBase().scriptExecutionContext()))
|
|
consoleStartRecordingCanvasImpl(*agents, context, exec, options);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::consoleStopRecordingCanvas(CanvasRenderingContext& context)
|
|
{
|
|
if (auto* agents = instrumentingAgents(context.canvasBase().scriptExecutionContext()))
|
|
consoleStopRecordingCanvasImpl(*agents, context);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didRequestAnimationFrame(Document& document, int callbackId)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didRequestAnimationFrameImpl(*agents, callbackId, document);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didCancelAnimationFrame(Document& document, int callbackId)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didCancelAnimationFrameImpl(*agents, callbackId, document);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willFireAnimationFrame(Document& document, int callbackId)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
willFireAnimationFrameImpl(*agents, callbackId, document);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didFireAnimationFrame(Document& document)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(document))
|
|
didFireAnimationFrameImpl(*agents);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::willFireObserverCallback(ScriptExecutionContext& context, const String& callbackType)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
willFireObserverCallbackImpl(*agents, callbackType, context);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::didFireObserverCallback(ScriptExecutionContext& context)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(context))
|
|
didFireObserverCallbackImpl(*agents);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::layerTreeDidChange(Page* page)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(page))
|
|
layerTreeDidChangeImpl(*agents);
|
|
}
|
|
|
|
inline void InspectorInstrumentation::renderLayerDestroyed(Page* page, const RenderLayer& renderLayer)
|
|
{
|
|
FAST_RETURN_IF_NO_FRONTENDS(void());
|
|
if (auto* agents = instrumentingAgents(page))
|
|
renderLayerDestroyedImpl(*agents, renderLayer);
|
|
}
|
|
|
|
inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgents(ScriptExecutionContext* context)
|
|
{
|
|
return context ? instrumentingAgents(*context) : nullptr;
|
|
}
|
|
|
|
inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgents(const Frame* frame)
|
|
{
|
|
return frame ? instrumentingAgents(*frame) : nullptr;
|
|
}
|
|
|
|
inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgents(const Frame& frame)
|
|
{
|
|
return instrumentingAgents(frame.page());
|
|
}
|
|
|
|
inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgents(Document* document)
|
|
{
|
|
return document ? instrumentingAgents(*document) : nullptr;
|
|
}
|
|
|
|
inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgents(Document& document)
|
|
{
|
|
Page* page = document.page();
|
|
if (!page && document.templateDocumentHost())
|
|
page = document.templateDocumentHost()->page();
|
|
return instrumentingAgents(page);
|
|
}
|
|
|
|
inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgents(Page* page)
|
|
{
|
|
return page ? &instrumentingAgents(*page) : nullptr;
|
|
}
|
|
|
|
inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgents(WorkerOrWorkletGlobalScope* globalScope)
|
|
{
|
|
return globalScope ? &instrumentingAgents(*globalScope) : nullptr;
|
|
}
|
|
|
|
inline void InspectorInstrumentation::frontendCreated()
|
|
{
|
|
ASSERT(isMainThread());
|
|
++InspectorInstrumentationPublic::s_frontendCounter;
|
|
|
|
if (InspectorInstrumentationPublic::s_frontendCounter == 1)
|
|
InspectorInstrumentation::firstFrontendCreated();
|
|
}
|
|
|
|
inline void InspectorInstrumentation::frontendDeleted()
|
|
{
|
|
ASSERT(isMainThread());
|
|
--InspectorInstrumentationPublic::s_frontendCounter;
|
|
|
|
if (!InspectorInstrumentationPublic::s_frontendCounter)
|
|
InspectorInstrumentation::lastFrontendDeleted();
|
|
}
|
|
|
|
} // namespace WebCore
|