2011-02-22 Sheriff Bot <webkit.review.bot@gmail.com>
[WebKit-https.git] / Source / WebCore / inspector / Inspector.idl
1 /*
2  * Copyright (C) 2010 Apple Inc. All rights reserved.
3  * Copyright (C) 2011 Google Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  *     * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *     * Redistributions in binary form must reproduce the above
12  * copyright notice, this list of conditions and the following disclaimer
13  * in the documentation and/or other materials provided with the
14  * distribution.
15  *     * Neither the name of Google Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from
17  * this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31
32 module core {
33     interface [Conditional=INSPECTOR] Inspector {
34         void addScriptToEvaluateOnLoad(in String scriptSource);
35         void removeAllScriptsToEvaluateOnLoad();
36         void reloadPage(in boolean ignoreCache);
37         void populateScriptObjects();
38
39         void openInInspectedWindow(in String url);
40         void setSearchingForNode(in boolean enabled, out boolean newState);
41         [notify] void frontendReused();
42         [notify] void addNodesToSearchResult(out Array nodeIds);
43         [notify] void bringToFront();
44         [notify] void disconnectFromBackend();
45         [notify] void inspectedURLChanged(out String url);
46         [notify] void domContentEventFired(out double time);
47         [notify] void loadEventFired(out double time);
48         [notify] void reset();
49         [notify] void showPanel(out String panel);
50
51         [notify] void evaluateForTestInFrontend(out long testCallId, out String script);
52         void didEvaluateForTestInFrontend(in long testCallId, in String jsonResult);
53
54         void highlightDOMNode(in long nodeId);
55         void hideDOMNodeHighlight();
56         void highlightFrame(in unsigned long frameId);
57         void hideFrameHighlight();
58         [notify] void updateFocusedNode(out long nodeId);
59
60         void setUserAgentOverride(in String userAgent);
61
62         void getCookies(out Array cookies, out String cookiesString);
63         void deleteCookie(in String cookieName, in String domain);
64
65         // FIXME: dispatch on agents.
66 #if defined(ENABLE_JAVASCRIPT_DEBUGGER) && ENABLE_JAVASCRIPT_DEBUGGER
67         void enableDebugger();
68         void disableDebugger();
69         void enableProfiler();
70         void disableProfiler();
71         void startProfiling();
72         void stopProfiling();
73 #endif // ENABLE_JAVASCRIPT_DEBUGGER
74     };
75
76     interface [Conditional=INSPECTOR] Runtime {
77         void evaluate(in String expression, in String objectGroup, in boolean includeCommandLineAPI, out Value result);
78         void getCompletions(in String expression, in boolean includeCommandLineAPI, out Value result);
79         void getProperties(in Object objectId, in boolean ignoreHasOwnProperty, in boolean abbreviate, out Value result);
80         void setPropertyValue(in Object objectId, in String propertyName, in String expression, out Value result);
81         void releaseWrapperObjectGroup(in long injectedScriptId, in String objectGroup);
82     };
83
84     interface [Conditional=INSPECTOR] InjectedScript {
85         void evaluateOnSelf(in String functionBody, in Array argumentsArray, out Value result);
86     };
87
88     interface [Conditional=INSPECTOR] Console {
89         void setConsoleMessagesEnabled(in boolean enabled, out boolean newState);
90         [notify] void addConsoleMessage(out Object messageObj);
91         [notify] void updateConsoleMessageExpiredCount(out unsigned long count);
92         [notify] void updateConsoleMessageRepeatCount(out unsigned long count);
93         void clearConsoleMessages();
94         [notify] void consoleMessagesCleared();
95         void setMonitoringXHREnabled(in boolean enabled);
96     };
97
98     interface [Conditional=INSPECTOR] Network {
99         void cachedResources(out Object resources);
100         void resourceContent(in unsigned long frameId, in String url, in boolean base64Encode, out boolean success, out String content);
101         void setExtraHeaders(in Object headers);
102
103         [notify] void frameDetachedFromParent(out unsigned long frameId);
104         [notify] void identifierForInitialRequest(out long identifier, out String url, out Object loader, out Value callStack);
105         [notify] void willSendRequest(out long identifier, out double time, out Object request, out Object redirectResponse);
106         [notify] void markResourceAsCached(out long identifier);
107         [notify] void didReceiveResponse(out long identifier, out double time, out String resourceType, out Object response);
108         [notify] void didReceiveContentLength(out long identifier, out double time, out long lengthReceived);
109         [notify] void didFinishLoading(out long identifier, out double finishTime);
110         [notify] void didFailLoading(out long identifier, out double time, out String localizedDescription);
111         [notify] void didLoadResourceFromMemoryCache(out double time, out Object resource);
112         [notify] void setInitialContent(out long identifier, out String sourceString, out String type);
113         [notify] void didCommitLoadForFrame(out Object frame, out Object loader);
114         [notify] void didCreateWebSocket(out unsigned long identifier, out String requestURL);
115         [notify] void willSendWebSocketHandshakeRequest(out unsigned long identifier, out double time, out Object request);
116         [notify] void didReceiveWebSocketHandshakeResponse(out unsigned long identifier, out double time, out Object response);
117         [notify] void didCloseWebSocket(out unsigned long identifier, out double time);
118     };
119
120 #if defined(ENABLE_DATABASE) && ENABLE_DATABASE
121     interface [Conditional=INSPECTOR] Database {
122         void getDatabaseTableNames(in long databaseId, out Array tableNames);
123         void executeSQL(in long databaseId, in String query, out boolean success, out long transactionId);
124
125         [notify] void addDatabase(out Object database);
126         [notify] void selectDatabase(out int databaseId);
127         [notify] void sqlTransactionSucceeded(out long transactionId, out Value columnNames, out Value values);
128         [notify] void sqlTransactionFailed(out long transactionId, out Value sqlError);
129     };
130 #endif
131
132 #if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
133     interface [Conditional=INSPECTOR] DOMStorage {
134         void getDOMStorageEntries(in long storageId, out Array entries);
135         void setDOMStorageItem(in long storageId, in String key, in String value, out boolean success);
136         void removeDOMStorageItem(in long storageId, in String key, out boolean success);
137         [notify] void addDOMStorage(out Object storage);
138         [notify] void updateDOMStorage(out int storageId);
139         [notify] void selectDOMStorage(out int storageId);
140     };
141 #endif
142
143 #if defined(ENABLE_OFFLINE_WEB_APPLICATIONS) && ENABLE_OFFLINE_WEB_APPLICATIONS
144     interface [Conditional=INSPECTOR] ApplicationCache {
145         void getApplicationCaches(out Value applicationCaches);
146         [notify] void updateApplicationCacheStatus(out int status);
147         [notify] void updateNetworkState(out boolean isNowOnline);
148     };
149 #endif
150
151     interface [Conditional=INSPECTOR] DOM {
152         void getChildNodes(in long nodeId);
153         void setAttribute(in long elementId, in String name, in String value, out boolean success);
154         void removeAttribute(in long elementId, in String name, out boolean success);
155         void setTextNodeValue(in long nodeId, in String value, out boolean success);
156         void getEventListenersForNode(in long nodeId, out long outNodeId, out Array listenersArray);
157         void copyNode(in long nodeId);
158         void removeNode(in long nodeId, out long outNodeId);
159         void changeTagName(in long nodeId, in String newTagName, out long outNodeId);
160         void getOuterHTML(in long nodeId, out String outerHTML);
161         void setOuterHTML(in long nodeId, in String outerHTML, out long outNodeId);
162         void addInspectedNode(in long nodeId);
163         void performSearch(in String query, in boolean runSynchronously);
164         void searchCanceled();
165         void pushNodeByPathToFrontend(in String path, out long nodeId);
166         void resolveNode(in long nodeId, out Value result);
167         void getNodeProperties(in long nodeId, in Array propertiesArray, out Value result);
168         void getNodePrototypes(in long nodeId, out Value result);
169         void pushNodeToFrontend(in Object objectId, out Value result);
170
171         [notify] void setDocument(out Value root); // FIXME: should be requested from the front-end as getDocument.
172         [notify] void attributesUpdated(out long id, out Array attributes);
173         [notify] void characterDataModified(out long id, out String newValue);
174         [notify] void setChildNodes(out long parentId, out Array nodes);
175         [notify] void setDetachedRoot(out Object root);
176         [notify] void childNodeCountUpdated(out long id, out int newValue);
177         [notify] void childNodeInserted(out long parentId, out long prevId, out Object node);
178         [notify] void childNodeRemoved(out long parentId, out long id);
179     };
180
181     interface [Conditional=INSPECTOR] CSS {
182         void getStylesForNode(in long nodeId, out Value styles);
183         void getComputedStyleForNode(in long nodeId, out Value style);
184         void getInlineStyleForNode(in long nodeId, out Value style);
185         void getAllStyles(out Array styleSheetIds);
186         void getStyleSheet(in String styleSheetId, out Value styleSheet);
187         void getStyleSheetText(in String styleSheetId, out String url, out String text);
188         void setStyleSheetText(in String styleSheetId, in String text, out boolean success);
189         void setPropertyText(in Object styleId, in long propertyIndex, in String text, in boolean overwrite, out Value style);
190         void toggleProperty(in Object styleId, in long propertyIndex, in boolean disable, out Value style);
191         void setRuleSelector(in Object ruleId, in String selector, out Value rule);
192         void addRule(in long contextNodeId, in String selector, out Value rule);
193         void getSupportedCSSProperties(out Array cssProperties);
194         void querySelectorAll(in long documentId, in String selector, out Array result);
195     };
196
197     interface [Conditional=INSPECTOR] Timeline {
198         void start();
199         void stop();
200         [notify] void timelineProfilerWasStarted();
201         [notify] void timelineProfilerWasStopped();
202         [notify] void addRecordToTimeline(out Object record);
203     };
204
205 #if defined(ENABLE_JAVASCRIPT_DEBUGGER) && ENABLE_JAVASCRIPT_DEBUGGER
206     interface [Conditional=INSPECTOR] Debugger {
207         [notify] void debuggerWasEnabled();
208         [notify] void debuggerWasDisabled();
209
210         [notify] void parsedScriptSource(out String sourceID, out String url, out int lineOffset, out int columnOffset, out int length, out int scriptWorldType);
211         [notify] void failedToParseScriptSource(out String url, out String data, out int firstLine, out int errorLine, out String errorMessage);
212
213         void activateBreakpoints();
214         void deactivateBreakpoints();
215
216         void setJavaScriptBreakpoint(in String url, in int lineNumber, in int columnNumber, in String condition, in boolean enabled, out String breakpointId, out Array locations);
217         void setJavaScriptBreakpointBySourceId(in String sourceId, in int lineNumber, in int columnNumber, in String condition, in boolean enabled, out String breakpointId, out int actualLineNumber, out int actualColumnNumber);
218         void removeJavaScriptBreakpoint(in String breakpointId);
219         [notify] void breakpointResolved(out String breakpointId, out String sourceId, out int lineNumber, out int columnNumber);
220         void continueToLocation(in String sourceId, in int lineNumber, in int columnNumber);
221
222         void stepOver();
223         void stepInto();
224         void stepOut();
225         void pause();
226         [notify] void pausedScript(out Object details);
227         void resume();
228         [notify] void resumedScript(); // FIXME: Make this out parameter of resume if possible.
229
230         void editScriptSource(in String sourceID, in String newContent, out boolean success, out String result, out Value newCallFrames);
231         void getScriptSource(in String sourceID, out String scriptSource);
232
233         void setPauseOnExceptionsState(in long pauseOnExceptionsState, out long newState);
234
235         void evaluateOnCallFrame(in Object callFrameId, in String expression, in String objectGroup, in boolean includeCommandLineAPI, out Value result);
236         void getCompletionsOnCallFrame(in Object callFrameId, in String expression, in boolean includeCommandLineAPI, out Value result);
237
238 #if defined(ENABLE_WORKERS) && ENABLE_WORKERS
239         [notify] void didCreateWorker(out long id, out String url, out boolean isShared);
240         [notify] void didDestroyWorker(out long id);
241 #endif // ENABLE_WORKERS
242
243     };
244 #endif // ENABLE_JAVASCRIPT_DEBUGGER
245
246 #if defined(ENABLE_JAVASCRIPT_DEBUGGER) && ENABLE_JAVASCRIPT_DEBUGGER
247     interface [Conditional=INSPECTOR] BrowserDebugger {
248         void setAllBrowserBreakpoints(in Object breakpoints);
249         void setDOMBreakpoint(in long nodeId, in long type);
250         void removeDOMBreakpoint(in long nodeId, in long type);
251         void setEventListenerBreakpoint(in String eventName);
252         void removeEventListenerBreakpoint(in String eventName);
253         void setXHRBreakpoint(in String url);
254         void removeXHRBreakpoint(in String url);
255     };
256 #endif // ENABLE_JAVASCRIPT_DEBUGGER
257
258 #if defined(ENABLE_JAVASCRIPT_DEBUGGER) && ENABLE_JAVASCRIPT_DEBUGGER
259     interface [Conditional=INSPECTOR] Profiler {
260         [notify] void profilerWasEnabled();
261         [notify] void profilerWasDisabled();
262
263         void getProfileHeaders(out Array headers);
264         void getProfile(in String type, in unsigned long uid, out Object profile);
265         void removeProfile(in String type, in unsigned long uid);
266         void clearProfiles();
267
268         // FIXME: split into Profiler and HeapProfiler.
269         void takeHeapSnapshot(in boolean detailed);
270         [notify] void addProfileHeader(out Object header);
271         [notify] void addHeapSnapshotChunk(out unsigned long uid, out String chunk);
272         [notify] void finishHeapSnapshot(out unsigned long uid);
273         [notify] void setRecordingProfile(out boolean isProfiling);
274         [notify] void resetProfiles();
275         [notify] void reportHeapSnapshotProgress(out int done, out int total);
276     };
277 #endif // ENABLE_JAVASCRIPT_DEBUGGER
278 }