blob: d092abbd6ef3e448a44f1528599f62b42d306ab3 [file] [log] [blame]
/*
* Copyright (C) 2013 Google 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.
*/
/*
* make_instrumenting_probes.py uses this file as a source to generate
* CoreProbesInl.h, CoreProbesImpl.cpp and CoreProbeSink.h.
*
* The code below is not a correct IDL but a mix of IDL and C++.
*
* The syntax for an instrumentation method is as follows:
*
* returnValue methodName([paramAttr1] param1, [paramAttr2] param2, ...)
*
* Where:
* paramAttr - optional attribute controlling the parameters handling (one attribute per parameter max).
* Keep - pass first parameter (used to access the CoreProbeSink instance) to agents.
*
* returnValue: "void" for instant probes.
* Omitted for the scoped probes.
*
* methodName: C++ name for the public instrumentation method and agents methods.
*
* paramList: C++ parameter list with optional names. Names will be deduced from types if omitted but you have to
* specify explicit names for multiple parameters of the same type.
*/
interface CoreProbes {
class ConsoleMessage;
class HTMLDocumentParser;
class ScheduledNavigation;
class ThreadableLoaderClient;
class WebSocketHandshakeRequest;
class WebSocketHandshakeResponse;
class WorkerInspectorProxy;
class XMLHttpRequest;
void didClearDocumentOfWindowObject([Keep] LocalFrame*);
void willInsertDOMNode([Keep] Node* parent);
void didInsertDOMNode([Keep] Node*);
void willRemoveDOMNode([Keep] Node*);
void willModifyDOMAttr([Keep] Element*, const AtomicString& oldValue, const AtomicString& newValue);
void didModifyDOMAttr([Keep] Element*, const QualifiedName& name, const AtomicString& value);
void didRemoveDOMAttr([Keep] Element*, const QualifiedName& name);
void willChangeStyleElement([Keep] Element*);
void characterDataModified([Keep] CharacterData*);
void didInvalidateStyleAttr([Keep] Node*);
void didPerformElementShadowDistribution([Keep] Element*);
void didPerformSlotDistribution([Keep] HTMLSlotElement*);
void documentDetached([Keep] Document*);
void activeStyleSheetsUpdated([Keep] Document*);
void fontsUpdated(Document*);
void mediaQueryResultChanged(Document*);
void didPushShadowRoot([Keep] Element* host, ShadowRoot*);
void willPopShadowRoot([Keep] Element* host, ShadowRoot*);
void willSendXMLHttpOrFetchNetworkRequest(ExecutionContext*, const String& url);
void didCreateCanvasContext(Document*);
void didFireWebGLError(Element*, const String& errorName);
void didFireWebGLWarning(Element*);
void didFireWebGLErrorOrWarning(Element*, const String& message);
void didResizeMainFrame(LocalFrame*);
void didPaint(LocalFrame*, const GraphicsLayer*, GraphicsContext&, const LayoutRect&);
void applyUserAgentOverride(ExecutionContext*, String* userAgent);
void didBlockRequest([Keep] ExecutionContext*, const ResourceRequest&, DocumentLoader*, const FetchInitiatorInfo&, ResourceRequestBlockedReason, Resource::Type);
void didChangeResourcePriority(LocalFrame*, DocumentLoader*, unsigned long identifier, ResourceLoadPriority loadPriority);
void willSendRequest([Keep] ExecutionContext*, unsigned long identifier, DocumentLoader*, ResourceRequest&, const ResourceResponse& redirectResponse, const FetchInitiatorInfo&, Resource::Type);
void markResourceAsCached(LocalFrame*, DocumentLoader*, unsigned long identifier);
void didReceiveResourceResponse(ExecutionContext*, unsigned long identifier, DocumentLoader*, const ResourceResponse&, Resource*);
void didReceiveData(ExecutionContext*, unsigned long identifier, DocumentLoader*, const char* data, int dataLength);
void didReceiveEncodedDataLength(ExecutionContext*, DocumentLoader* loader, unsigned long identifier, int encodedDataLength);
void didFinishLoading(ExecutionContext*, unsigned long identifier, DocumentLoader*, double finishTime, int64_t encoded_data_length, int64_t decodedBodyLength, bool blocked_cross_site_document);
void didReceiveCORSRedirectResponse(ExecutionContext*, unsigned long identifier, DocumentLoader*, const ResourceResponse&, Resource*);
void didFailLoading(ExecutionContext*, unsigned long identifier, DocumentLoader*, const ResourceError&);
void documentThreadableLoaderStartedLoadingForClient(ExecutionContext*, unsigned long identifier, ThreadableLoaderClient* client);
void documentThreadableLoaderFailedToStartLoadingForClient(ExecutionContext*, ThreadableLoaderClient* client);
void willSendEventSourceRequest(ExecutionContext*, ThreadableLoaderClient* eventSource);
void willDispatchEventSourceEvent(ExecutionContext*, ThreadableLoaderClient* eventSource, const AtomicString& eventName, const AtomicString& eventId, const String& data);
void didFinishEventSourceRequest(ExecutionContext*, ThreadableLoaderClient* eventSource);
void willLoadXHR(ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const KURL& url, bool async, const HTTPHeaderMap& headers, bool includeCredentials);
void didFailXHRLoading([Keep] ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const String& url);
void didFinishXHRLoading([Keep] ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const String& url);
void willStartFetch(ExecutionContext*, ThreadableLoaderClient*);
void didFailFetch(ExecutionContext*, ThreadableLoaderClient*);
void didFinishFetch([Keep] ExecutionContext*, ThreadableLoaderClient*, const AtomicString& method, const String& url);
// Detach and remove all references to the given client.
void detachClientRequest(ExecutionContext*, ThreadableLoaderClient*);
void scriptImported(ExecutionContext*, unsigned long identifier, const String& sourceString);
void scriptExecutionBlockedByCSP(ExecutionContext*, const String& directiveText);
void didReceiveScriptResponse(ExecutionContext*, unsigned long identifier);
void domContentLoadedEventFired([Keep] LocalFrame*);
void loadEventFired([Keep] LocalFrame*);
void frameAttachedToParent([Keep] LocalFrame*);
void frameDetachedFromParent([Keep] LocalFrame*);
void willCommitLoad([Keep] LocalFrame*, DocumentLoader*);
void didCommitLoad([Keep] LocalFrame*, DocumentLoader*);
void frameDocumentUpdated([Keep] LocalFrame*);
void frameDisconnected([Keep] LocalFrame*, HTMLFrameOwnerElement*);
void frameStartedLoading([Keep] LocalFrame*, FrameLoadType);
void frameStoppedLoading([Keep] LocalFrame*);
void frameScheduledNavigation([Keep] LocalFrame*, ScheduledNavigation*);
void frameClearedScheduledNavigation([Keep] LocalFrame*);
void frameScheduledClientNavigation([Keep] LocalFrame*);
void frameClearedScheduledClientNavigation([Keep] LocalFrame*);
void didStartWorker(ExecutionContext*, WorkerInspectorProxy* proxy, bool waitingForDebugger);
void workerTerminated(ExecutionContext*, WorkerInspectorProxy* proxy);
void didCreateWebSocket([Keep] Document*, unsigned long identifier, const KURL& requestURL, const String& protocol);
void willSendWebSocketHandshakeRequest([Keep] Document*, unsigned long identifier, const WebSocketHandshakeRequest* request);
void didReceiveWebSocketHandshakeResponse([Keep] Document*, unsigned long identifier, const WebSocketHandshakeRequest* request, const WebSocketHandshakeResponse* response);
void didCloseWebSocket([Keep] Document*, unsigned long identifier);
void didReceiveWebSocketFrame(Document*, unsigned long identifier, int opCode, bool masked, const char* payload, size_t payloadLength);
void didSendWebSocketFrame(Document*, unsigned long identifier, int opCode, bool masked, const char* payload, size_t payloadLength);
void didReceiveWebSocketFrameError(Document*, unsigned long identifier, const String& errorMessage);
void networkStateChanged([Keep] LocalFrame*, bool online);
void updateApplicationCacheStatus([Keep] LocalFrame*);
void layerTreeDidChange(LocalFrame*);
void pseudoElementCreated([Keep] PseudoElement*);
void pseudoElementDestroyed([Keep] PseudoElement*);
void didCreateAnimation(Document*, unsigned);
void animationPlayStateChanged(Document*, Animation*, Animation::AnimationPlayState oldPlayState, Animation::AnimationPlayState newPlayState);
void windowOpen([Keep] Document*, const String& url, const AtomicString& windowName, const WebWindowFeatures& windowFeatures, bool userGestrue);
void consoleMessageAdded(ExecutionContext*, ConsoleMessage*);
void willRunJavaScriptDialog(LocalFrame* frame);
void didRunJavaScriptDialog(LocalFrame* frame);
void documentWriteFetchScript([Keep] Document*);
void didChangeViewport(LocalFrame* document);
void breakableLocation(ExecutionContext* context, const char* name);
RecalculateStyle(Document* document);
UpdateLayout(Document* document);
ExecuteScript([Keep] ExecutionContext* context);
CallFunction([Keep] ExecutionContext* context, v8::Local<v8::Function> function, int depth = 0);
UserCallback([Keep] ExecutionContext* context, const char* name, const AtomicString& atomicName, bool recurring, EventTarget* eventTarget = nullptr);
V8Compile([Keep] ExecutionContext* context, const String& file_name, int line, int column);
ParseHTML(Document* document, HTMLDocumentParser* parser);
void forcePseudoState([Keep] Element* element, CSSSelector::PseudoType pseudoState, bool* result);
void shouldWaitForDebuggerOnWorkerStart(ExecutionContext* context, bool* result);
void shouldForceCORSPreflight(ExecutionContext*, bool* result);
void shouldBlockRequest(ExecutionContext*, const KURL&, bool* result);
void shouldBypassServiceWorker(ExecutionContext* context, bool* result);
void consoleTimeStamp(ExecutionContext*, const String& title);
void lifecycleEvent([Keep] LocalFrame*, DocumentLoader*, const char* name, double timestamp);
void paintTiming([Keep] Document*, const char* name, double timestamp);
}