2011-01-21 Pavel Podivilov <podivilov@chromium.org>
[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
35         ///////////////////////////////////////////////////////////////////////
36         // generic Inspector's methods
37         ///////////////////////////////////////////////////////////////////////
38
39         [domain=Inspector] void addScriptToEvaluateOnLoad(in String scriptSource);
40         [domain=Inspector] void removeAllScriptsToEvaluateOnLoad();
41         [domain=Inspector] void reloadPage();
42         [domain=Inspector] void populateScriptObjects();
43
44         [domain=Inspector] void openInInspectedWindow(in String url);
45         [domain=Inspector] void setSearchingForNode(in boolean enabled, out boolean newState);
46         [notify, domain=Inspector] void frontendReused();
47         [notify, domain=Inspector] void addNodesToSearchResult(out Array nodeIds);
48         [notify, domain=Inspector] void bringToFront();
49         [notify, domain=Inspector] void disconnectFromBackend();
50         [notify, domain=Inspector] void inspectedURLChanged(out String url);
51         [notify, domain=Inspector] void domContentEventFired(out double time);
52         [notify, domain=Inspector] void loadEventFired(out double time);
53         [notify, domain=Inspector] void reset();
54         [notify, domain=Inspector] void showPanel(out String panel);
55
56         [notify, domain=Inspector] void evaluateForTestInFrontend(out long testCallId, out String script);
57         [domain=Inspector] void didEvaluateForTestInFrontend(in long testCallId, in String jsonResult);
58
59         [domain=Inspector] void highlightDOMNode(in long nodeId);
60         [domain=Inspector] void hideDOMNodeHighlight();
61         [domain=Inspector] void highlightFrame(in unsigned long frameId);
62         [domain=Inspector] void hideFrameHighlight();
63         [notify, domain=Inspector] void updateFocusedNode(out long nodeId);
64
65         [domain=Inspector] void setExtraHeaders(in Object headers);
66
67         [domain=Inspector] void getCookies(out Array cookies, out String cookiesString);
68         [domain=Inspector] void deleteCookie(in String cookieName, in String domain);
69
70         ///////////////////////////////////////////////////////////////////////
71         // Runtime
72         ///////////////////////////////////////////////////////////////////////
73
74         [domain=Runtime] void evaluate(in String expression, in String objectGroup, out Value result);
75         [domain=Runtime] void getCompletions(in String expression, in boolean includeInspectorCommandLineAPI, out Value result);
76         [domain=Runtime] void getProperties(in Object objectId, in boolean ignoreHasOwnProperty, in boolean abbreviate, out Value result);
77         [domain=Runtime] void setPropertyValue(in Object objectId, in String propertyName, in String expression, out Value result);
78         [domain=Runtime] void releaseWrapperObjectGroup(in long injectedScriptId, in String objectGroup);
79
80         ///////////////////////////////////////////////////////////////////////
81         // Injected Script
82         ///////////////////////////////////////////////////////////////////////
83
84         [domain=InjectedScript] void evaluateOnSelf(in String functionBody, in Array argumentsArray, out Value result);
85
86         ///////////////////////////////////////////////////////////////////////
87         // Console API
88         ///////////////////////////////////////////////////////////////////////
89
90         [domain=Console] void setConsoleMessagesEnabled(in boolean enabled, out boolean newState);
91         [notify, domain=Console] void addConsoleMessage(out Object messageObj);
92         [notify, domain=Console] void updateConsoleMessageExpiredCount(out unsigned long count);
93         [notify, domain=Console] void updateConsoleMessageRepeatCount(out unsigned long count);
94         [domain=Console] void clearConsoleMessages();
95         [notify, domain=Console] void consoleMessagesCleared();
96         [domain=Console] void setMonitoringXHREnabled(in boolean enabled);
97         [notify, domain=Console] void monitoringXHRStateChanged(out boolean enabled);
98
99         ///////////////////////////////////////////////////////////////////////
100         // Network API
101         ///////////////////////////////////////////////////////////////////////
102
103         [domain=Network] void cachedResources(out Object resources);
104         [domain=Network] void resourceContent(in unsigned long frameId, in String url, in boolean base64Encode, out String content);
105
106         [notify, domain=Network] void frameDetachedFromParent(out unsigned long frameId);
107         [notify, domain=Network] void identifierForInitialRequest(out long identifier, out String url, out Object loader, out Value callStack);
108         [notify, domain=Network] void willSendRequest(out long identifier, out double time, out Object request, out Object redirectResponse);
109         [notify, domain=Network] void markResourceAsCached(out long identifier);
110         [notify, domain=Network] void didReceiveResponse(out long identifier, out double time, out String resourceType, out Object response);
111         [notify, domain=Network] void didReceiveContentLength(out long identifier, out double time, out long lengthReceived);
112         [notify, domain=Network] void didFinishLoading(out long identifier, out double finishTime);
113         [notify, domain=Network] void didFailLoading(out long identifier, out double time, out String localizedDescription);
114         [notify, domain=Network] void didLoadResourceFromMemoryCache(out double time, out Object resource);
115         [notify, domain=Network] void setInitialContent(out long identifier, out String sourceString, out String type);
116         [notify, domain=Network] void didCommitLoadForFrame(out Object frame, out Object loader);
117         [notify, domain=Network] void didCreateWebSocket(out unsigned long identifier, out String requestURL);
118         [notify, domain=Network] void willSendWebSocketHandshakeRequest(out unsigned long identifier, out double time, out Object request);
119         [notify, domain=Network] void didReceiveWebSocketHandshakeResponse(out unsigned long identifier, out double time, out Object response);
120         [notify, domain=Network] void didCloseWebSocket(out unsigned long identifier, out double time);
121
122 #if defined(ENABLE_DATABASE) && ENABLE_DATABASE
123
124         ///////////////////////////////////////////////////////////////////////
125         // Database API
126         ///////////////////////////////////////////////////////////////////////
127
128         [domain=Database] void getDatabaseTableNames(in long databaseId, out Array tableNames);
129         [domain=Database] void executeSQL(in long databaseId, in String query, out boolean success, out long transactionId);
130
131         [notify, domain=Database] void addDatabase(out Object database);
132         [notify, domain=Database] void selectDatabase(out int databaseId);
133         [notify, domain=Database] void sqlTransactionSucceeded(out long transactionId, out Value columnNames, out Value values);
134         [notify, domain=Database] void sqlTransactionFailed(out long transactionId, out Value sqlError);
135 #endif
136
137 #if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
138
139         ///////////////////////////////////////////////////////////////////////
140         // DOM Storage API
141         ///////////////////////////////////////////////////////////////////////
142
143         [domain=DOMStorage] void getDOMStorageEntries(in long storageId, out Array entries);
144         [domain=DOMStorage] void setDOMStorageItem(in long storageId, in String key, in String value, out boolean success);
145         [domain=DOMStorage] void removeDOMStorageItem(in long storageId, in String key, out boolean success);
146         [notify, domain=DOMStorage] void addDOMStorage(out Object storage);
147         [notify, domain=DOMStorage] void updateDOMStorage(out int storageId);
148         [notify, domain=DOMStorage] void selectDOMStorage(out int storageId);
149 #endif
150
151 #if defined(ENABLE_OFFLINE_WEB_APPLICATIONS) && ENABLE_OFFLINE_WEB_APPLICATIONS
152
153         ///////////////////////////////////////////////////////////////////////
154         // AppCache API
155         ///////////////////////////////////////////////////////////////////////
156
157         [domain=ApplicationCache] void getApplicationCaches(out Value applicationCaches);
158         [notify, domain=ApplicationCache] void updateApplicationCacheStatus(out int status);
159         [notify, domain=ApplicationCache] void updateNetworkState(out boolean isNowOnline);
160 #endif
161
162 #if defined(ENABLE_FILE_SYSTEM) && ENABLE_FILE_SYSTEM
163
164         ///////////////////////////////////////////////////////////////////////
165         // Filesystem API
166         ///////////////////////////////////////////////////////////////////////
167
168         [domain=FileSystem] void getFileSystemPathAsync(in unsigned int type, in String origin);
169         [domain=FileSystem] void revealFolderInOS(in String path);
170
171         [notify, domain=FileSystem] void didGetFileSystemPath(out String root, out int type, out String origin);
172         [notify, domain=FileSystem] void didGetFileSystemError(out int type, out String origin);
173         [notify, domain=FileSystem] void didGetFileSystemDisabled();
174 #endif
175
176         ///////////////////////////////////////////////////////////////////////
177         // DOM API
178         ///////////////////////////////////////////////////////////////////////
179
180         [domain=DOM] void getChildNodes(in long nodeId);
181         [domain=DOM] void setAttribute(in long elementId, in String name, in String value, out boolean success);
182         [domain=DOM] void removeAttribute(in long elementId, in String name, out boolean success);
183         [domain=DOM] void setTextNodeValue(in long nodeId, in String value, out boolean success);
184         [domain=DOM] void getEventListenersForNode(in long nodeId, out long outNodeId, out Array listenersArray);
185         [domain=DOM] void copyNode(in long nodeId);
186         [domain=DOM] void removeNode(in long nodeId, out long outNodeId);
187         [domain=DOM] void changeTagName(in long nodeId, in String newTagName, out long outNodeId);
188         [domain=DOM] void getOuterHTML(in long nodeId, out String outerHTML);
189         [domain=DOM] void setOuterHTML(in long nodeId, in String outerHTML, out long outNodeId);
190         [domain=DOM] void addInspectedNode(in long nodeId);
191         [domain=DOM] void performSearch(in String query, in boolean runSynchronously);
192         [domain=DOM] void searchCanceled();
193         [domain=DOM] void pushNodeByPathToFrontend(in String path, out long nodeId);
194         [domain=DOM] void resolveNode(in long nodeId, out Value result);
195         [domain=DOM] void getNodeProperties(in long nodeId, in Array propertiesArray, out Value result);
196         [domain=DOM] void getNodePrototypes(in long nodeId, out Value result);
197         [domain=DOM] void pushNodeToFrontend(in Object objectId, out Value result);
198
199         [notify, domain=DOM] void setDocument(out Value root); // FIXME: should be requested from the front-end as getDocument.
200         [notify, domain=DOM] void attributesUpdated(out long id, out Array attributes);
201         [notify, domain=DOM] void characterDataModified(out long id, out String newValue);
202         [notify, domain=DOM] void setChildNodes(out long parentId, out Array nodes);
203         [notify, domain=DOM] void setDetachedRoot(out Object root);
204         [notify, domain=DOM] void childNodeCountUpdated(out long id, out int newValue);
205         [notify, domain=DOM] void childNodeInserted(out long parentId, out long prevId, out Object node);
206         [notify, domain=DOM] void childNodeRemoved(out long parentId, out long id);
207
208         ///////////////////////////////////////////////////////////////////////
209         // CSS API
210         ///////////////////////////////////////////////////////////////////////
211
212         [domain=CSS] void getStylesForNode2(in long nodeId, out Value styles);
213         [domain=CSS] void getComputedStyleForNode2(in long nodeId, out Value style);
214         [domain=CSS] void getInlineStyleForNode2(in long nodeId, out Value style);
215         [domain=CSS] void getAllStyles2(out Array styleSheetIds);
216         [domain=CSS] void getStyleSheet2(in String styleSheetId, out Value styleSheet);
217         [domain=CSS] void getStyleSheetText2(in String styleSheetId, out String url, out String text);
218         [domain=CSS] void setStyleSheetText2(in String styleSheetId, in String text, out boolean success);
219         [domain=CSS] void setPropertyText2(in Object styleId, in long propertyIndex, in String text, in boolean overwrite, out Value style);
220         [domain=CSS] void toggleProperty2(in Object styleId, in long propertyIndex, in boolean disable, out Value style);
221         [domain=CSS] void setRuleSelector2(in Object ruleId, in String selector, out Value rule);
222         [domain=CSS] void addRule2(in long contextNodeId, in String selector, out Value rule);
223         [domain=CSS] void getSupportedCSSProperties(out Array cssProperties);
224         [domain=CSS] void querySelectorAll(in long documentId, in String selector, out Array result);
225
226         ///////////////////////////////////////////////////////////////////////
227         // Timeline API
228         ///////////////////////////////////////////////////////////////////////
229
230         [domain=Inspector] void startTimelineProfiler();
231         [domain=Inspector] void stopTimelineProfiler();
232         [notify, domain=Timeline] void timelineProfilerWasStarted();
233         [notify, domain=Timeline] void timelineProfilerWasStopped();
234         [notify, domain=Timeline] void addRecordToTimeline(out Object record);
235
236 #if defined(ENABLE_JAVASCRIPT_DEBUGGER) && ENABLE_JAVASCRIPT_DEBUGGER
237
238         ///////////////////////////////////////////////////////////////////////
239         // Debugger API
240         ///////////////////////////////////////////////////////////////////////
241
242         [domain=Inspector] void enableDebugger(in boolean always);
243         [domain=Inspector] void disableDebugger(in boolean always);
244
245         [domain=Inspector] void setAllBrowserBreakpoints(in Object breakpoints);
246
247         [notify, domain=Debugger] void debuggerWasEnabled();
248         [notify, domain=Debugger] void debuggerWasDisabled();
249
250         [notify, domain=Debugger] void parsedScriptSource(out String sourceID, out String url, out int lineOffset, out int columnOffset, out int length, out int scriptWorldType);
251         [notify, domain=Debugger] void failedToParseScriptSource(out String url, out String data, out int firstLine, out int errorLine, out String errorMessage);
252
253         [domain=Debugger] void activateBreakpoints();
254         [domain=Debugger] void deactivateBreakpoints();
255
256         [domain=Debugger] void setBreakpoint(in String sourceID, in unsigned int lineNumber, in String condition, in boolean enabled, out String breakpointId, out unsigned int actualLineNumber);
257         [domain=Debugger] void removeBreakpoint(in String breakpointId);
258
259         [domain=BrowserDebugger] void setDOMBreakpoint(in long nodeId, in long type);
260         [domain=BrowserDebugger] void removeDOMBreakpoint(in long nodeId, in long type);
261         [domain=BrowserDebugger] void setEventListenerBreakpoint(in String eventName);
262         [domain=BrowserDebugger] void removeEventListenerBreakpoint(in String eventName);
263         [domain=BrowserDebugger] void setXHRBreakpoint(in String url);
264         [domain=BrowserDebugger] void removeXHRBreakpoint(in String url);
265
266         [domain=Debugger] void stepOver();
267         [domain=Debugger] void stepInto();
268         [domain=Debugger] void stepOut();
269         [domain=Debugger] void pause();
270         [notify, domain=Debugger] void pausedScript(out Object details);
271         [domain=Debugger] void resume();
272         [notify, domain=Debugger] void resumedScript(); // FIXME: Make this out parameter of resume if possible.
273
274         [domain=Debugger] void editScriptSource(in String sourceID, in String newContent, out boolean success, out String result, out Value newCallFrames);
275         [domain=Debugger] void getScriptSource(in String sourceID, out String scriptSource);
276
277         [domain=Debugger] void setPauseOnExceptionsState(in long pauseOnExceptionsState, out long newState);
278
279         [domain=Debugger] void evaluateOnCallFrame(in Object callFrameId, in String expression, in String objectGroup, out Value result);
280         [domain=Debugger] void getCompletionsOnCallFrame(in Object callFrameId, in String expression, in boolean includeInspectorCommandLineAPI, out Value result);
281
282         [notify, domain=Debugger] void breakpointResolved(out String breakpointId, out String sourceID, out unsigned int lineNumber, out String condition, out boolean enabled, out unsigned int originalLineNumber);
283
284 #if defined(ENABLE_WORKERS) && ENABLE_WORKERS
285         [notify, domain=Debugger] void didCreateWorker(out long id, out String url, out boolean isShared);
286         [notify, domain=Debugger] void didDestroyWorker(out long id);
287 #endif // ENABLE_WORKERS
288
289         ///////////////////////////////////////////////////////////////////////
290         // Profiler API
291         ///////////////////////////////////////////////////////////////////////
292
293         [domain=Inspector] void enableProfiler(in boolean always);
294         [domain=Inspector] void disableProfiler(in boolean always);
295         [notify, domain=Profiler] void profilerWasEnabled();
296         [notify, domain=Profiler] void profilerWasDisabled();
297
298         [domain=Inspector] void startProfiling(); // FIXME: dispatch on profiler agent.
299         [domain=Inspector] void stopProfiling(); // FIXME: dispatch on profiler agent.
300
301         [domain=Profiler] void getProfileHeaders(out Array headers);
302         [domain=Profiler] void getProfile(in String type, in unsigned long uid, out Object profile);
303         [domain=Profiler] void removeProfile(in String type, in unsigned long uid);
304         [domain=Profiler] void clearProfiles();
305
306         // FIXME: split into Profiler and HeapProfiler.
307         [domain=Profiler] void takeHeapSnapshot();
308         [notify, domain=Profiler] void addProfileHeader(out Object header);
309         [notify, domain=Profiler] void addHeapSnapshotChunk(out unsigned long uid, out String chunk);
310         [notify, domain=Profiler] void finishHeapSnapshot(out unsigned long uid);
311         [notify, domain=Profiler] void setRecordingProfile(out boolean isProfiling);
312         [notify, domain=Profiler] void resetProfiles();
313
314 #endif // ENABLE_JAVASCRIPT_DEBUGGER
315     };
316 }