mshtml: Added IHTMLDOMNode implementation.
[wine] / dlls / mshtml / nsiface.idl
1 /*
2  * Copyright 2005 Jacek Caban
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 /* 
20  * NOTE:
21  * This file is not an usual idl file. Interfaces in this file are XPCOM interfaces
22  * (NOT MSCOM!), but we generate the header file with WIDL compatibile with XPCOM,
23  * useable in C code.
24  */
25
26 import "wtypes.idl";
27
28 typedef HRESULT nsresult;
29 typedef ULONG nsrefcnt;
30
31 typedef IID nsIID;
32 typedef nsIID nsCID;
33 typedef REFIID nsIIDRef;
34 typedef nsIIDRef nsCIDRef;
35
36 typedef void** nsQIResult;
37 typedef LPSTR nsstring;
38 typedef WCHAR PRUnichar;
39 typedef LPWSTR nswstring;
40 typedef ULONG PRUint32;
41 typedef LONG PRInt32;
42 typedef WORD PRUint16;
43 typedef BYTE PRUint8;
44 typedef BOOL PRBool;
45 typedef LARGE_INTEGER PRInt64;
46 typedef ULARGE_INTEGER PRUint64;
47 typedef PRUint64 DOMTimeStamp;
48 typedef PRUint32 nsLoadFlags;
49
50 typedef struct nsCStringContainer nsCStringContainer;
51 typedef struct nsStringContainer nsStringContainer;
52 typedef nsCStringContainer nsACString;
53 typedef nsStringContainer nsAString;
54
55 interface nsIWebBrowserChrome;
56 interface nsILoadGroup;
57 interface nsIDOMNode;
58
59 [
60     object,
61     uuid(00000000-0000-0000-c000-000000000046)
62 ]
63 interface nsISupports
64 {
65     nsresult QueryInterface(nsIIDRef riid, nsQIResult result);
66     nsrefcnt AddRef();
67     nsrefcnt Release();
68 }
69
70 /* Currently we don't need a full declaration of these interfaces */
71 typedef nsISupports nsIWeakReference;
72 typedef nsISupports nsIDOMDocument;
73 typedef nsISupports nsISHistory;
74 typedef nsISupports nsISimpleEnumerator;
75 typedef nsISupports nsIWidget;
76 typedef nsISupports nsIProtocolHandler;
77 typedef nsISupports nsIDOMElement;
78 typedef nsISupports nsIDOMEventTarget;
79 typedef nsISupports nsIDOMAbstractView;
80 typedef nsISupports nsIStreamListener;
81 typedef nsISupports nsIHttpHeaderVisitor;
82 typedef nsISupports nsIRequestObserver;
83 typedef nsISupports nsIDOMBarProp;
84 typedef nsISupports nsIDOMWindowCollection;
85 typedef nsISupports nsISelection;
86 typedef nsISupports nsIPrompt;
87 typedef nsISupports nsIAuthPrompt;
88 typedef nsISupports nsIDOMNamedNodeMap;
89
90 [
91     object,
92     uuid(8bb35ed9-e332-462d-9155-4a002ab5c958)
93 ]
94 interface nsIServiceManager : nsISupports
95 {
96     nsresult GetService(nsCIDRef aClass, nsIIDRef aIID, void **result);
97     nsresult GetServiceByContactID(nsstring aContactID, nsIIDRef aIID, void **result);
98     nsresult IsServiceInstantiated(nsCIDRef aClass, nsIIDRef aIID, BOOL *_retval);
99     nsresult IsServiceInstantiatedByContractID(nsstring aContractID, nsIIDRef aIID, BOOL *_retval);
100 }
101
102 [
103     object,
104     uuid(00000001-0000-0000-c000-000000000046)
105 ]
106 interface nsIFactory : nsISupports
107 {
108     nsresult CreateInstance(nsISupports *aOuter, const nsIID *iid, void **result);
109     nsresult LockFactory(PRBool lock);
110 }
111
112 [
113     object,
114     uuid(db242e01-e4d9-11d2-9dde-000064657374)
115 ]
116 interface nsIObserver : nsISupports
117 {
118     nsresult Observe(nsISupports *aSubject, nsstring aTopic, nswstring aData);
119 }
120
121 [
122     object,
123     uuid(a88e5a60-205a-4bb1-94e1-2628daf51eae)
124 ]
125 interface nsIComponentManager : nsISupports
126 {
127     nsresult GetClassObject(nsCIDRef aClass, nsIIDRef aIID, nsQIResult result);
128     nsresult GetClassObjectByContractID(nsstring aContractID, nsIIDRef aIID, nsQIResult result);
129     nsresult CreateInstance(nsCIDRef aClass, nsISupports *aDelegate, nsIIDRef aIID,
130             nsQIResult result);
131     nsresult CreateInstanceByContractID(nsstring aContractID, nsISupports *aDelegate,
132             nsIIDRef aIID, nsQIResult result);
133 }
134
135 [
136     object,
137     uuid(033a1470-8b2a-11d3-af88-00a024ffc08c)
138 ]
139 interface nsIInterfaceRequestor : nsISupports
140 {
141     nsresult GetInterface(const nsIID *riid, void **result);
142 }
143
144 [
145     object,
146     uuid(fa9c7f6c-61b3-11d4-9877-00c04fa0cf4a)
147 ]
148 interface nsIInputStream : nsISupports
149 {
150     nsresult Close();
151     nsresult Available(PRUint32 *_retval);
152     nsresult Read(char *aBuf, PRUint32 aCount, PRUint32 *_retval);
153     nsresult ReadSegments(nsresult (*aWriter)(nsIInputStream *aInStream, 
154             void *aClosure, const char *aFromSegment, PRUint32 aToOffset,
155             PRUint32 aCount, PRUint32 *aWriteCount),
156             void *aClosure, PRUint32 aCount, PRUint32 *_retval);
157     nsresult IsNonBlocking(PRBool *_retval);
158 }
159
160 [
161     object,
162     uuid(450cd2d4-f0fd-424d-b365-b1251f80fd53)
163 ]
164 interface nsIStringInputStream : nsIInputStream
165 {
166     nsresult SetData(const char *data, PRInt32 dataLen);
167     nsresult AdoptData(char *data, PRInt32 dataLen);
168     nsresult ShareData(const char *data, PRInt32 dataLen);
169 }
170
171 [
172     object,
173     uuid(07a22cc0-0ce5-11d3-9331-00104ba0fd40)
174 ]
175 interface nsIURI : nsISupports
176 {
177     nsresult GetSpec(nsACString *aSpec);
178     nsresult SetSpec(const nsACString *aSpec);
179     nsresult GetPrePath(nsACString *aPrePath);
180     nsresult GetScheme(nsACString *aScheme);
181     nsresult SetScheme(const nsACString *aScheme);
182     nsresult GetUserPass(nsACString *aUserPass);
183     nsresult SetUserPass(const nsACString *aUserPass);
184     nsresult GetUsername(nsACString *aUsername);
185     nsresult SetUsername(const nsACString *aUsername);
186     nsresult GetPassword(nsACString *aPassword);
187     nsresult SetPassword(const nsACString *aPassword);
188     nsresult GetHostPort(nsACString *aHostPort);
189     nsresult SetHostPort(const nsACString *aHostPort);
190     nsresult GetHost(nsACString *aHost);
191     nsresult SetHost(const nsACString *aHost);
192     nsresult GetPort(PRInt32 *aPort);
193     nsresult SetPort(PRInt32 aPort);
194     nsresult GetPath(nsACString *aPath);
195     nsresult SetPath(const nsACString *aPath);
196     nsresult Equals(nsIURI *other, PRBool *_retval);
197     nsresult SchemeIs(const char *scheme, PRBool *_retval);
198     nsresult Clone(nsIURI **_retval);
199     nsresult Resolve(const nsACString *relativePath, nsACString *_retval);
200     nsresult GetAsciiSpec(nsACString *aAsciiSpec);
201     nsresult GetAsciiHost(nsACString *aAsciiHost);
202     nsresult GetOriginCharset(nsACString *aOriginCharset);
203 }
204
205 [
206     object,
207     uuid(ef6bfbd2-fd46-48d8-96b7-9f8f0fd387fe)
208 ]
209 interface nsIRequest : nsISupports
210 {
211     nsresult GetName(nsACString *aName);
212     nsresult IsPending(PRBool *_retval);
213     nsresult GetStatus(nsresult *aStatus);
214     nsresult Cancel(nsresult aStatus);
215     nsresult Suspend();
216     nsresult Resume();
217     nsresult GetLoadGroup(nsILoadGroup **aLoadGroup);
218     nsresult SetLoadGroup(nsILoadGroup *aLoadGroup);
219     nsresult GetLoadFlags(nsLoadFlags *aLoadFlags);
220     nsresult SetLoadFlags(nsLoadFlags aLoadFlags);
221 }
222
223 [
224     object,
225     uuid(3de0a31c-feaf-400f-9f1e-4ef71f8b20cc)
226 ]
227 interface nsILoadGroup : nsIRequest
228 {
229     nsresult GetGroupObserver(nsIRequestObserver **aGroupObserver);
230     nsresult SetGroupObserver(nsIRequestObserver *aGroupObserver);
231     nsresult GetDefaultLoadRequest(nsIRequest **aDefaultLoadRequest);
232     nsresult SetDefaultLoadRequest(nsIRequest *aDefaultLoadRequest);
233     nsresult AddRequest(nsIRequest *aRequest, nsISupports *aContext);
234     nsresult RemoveRequest(nsIRequest *aRequest, nsISupports *aContext, nsresult aStatus);
235     nsresult GetRequests(nsISimpleEnumerator **aRequests);
236     nsresult GetActiveCount(PRUint32 *aActiveCount);
237     nsresult GetNotificationCallbacks(nsIInterfaceRequestor **aNotificationCallbacks);
238     nsresult SetNotificationCallbacks(nsIInterfaceRequestor *aNotificationCallbacks);
239 }
240
241 [
242     object,
243     uuid(c63a055a-a676-4e71-bf3c-6cfa11082018)
244 ]
245 interface nsIChannel : nsIRequest
246 {
247     nsresult GetOriginalURI(nsIURI **aOriginalURI);
248     nsresult SetOriginalURI(nsIURI *aOriginalURI);
249     nsresult GetURI(nsIURI **aURI);
250     nsresult GetOwner(nsISupports **aOwner);
251     nsresult SetOwner(nsISupports *aOwner);
252     nsresult GetNotificationCallbacks(nsIInterfaceRequestor **aNotificationCallbacks);
253     nsresult SetNotificationCallbacks(nsIInterfaceRequestor *aNotificationCallbacks);
254     nsresult GetSecurityInfo(nsISupports **aSecurityInfo);
255     nsresult GetContentType(nsACString *aContentType);
256     nsresult SetContentType(const nsACString *aContentType);
257     nsresult GetContentCharset(nsACString *aContentCharset);
258     nsresult SetContentCharset(const nsACString *aContentCharset);
259     nsresult GetContentLength(PRInt32 *aContentLength);
260     nsresult SetContentLength(PRInt32 aContentLength);
261     nsresult Open(nsIInputStream **_retval);
262     nsresult AsyncOpen(nsIStreamListener *aListener, nsISupports *aContext);
263 }
264
265 [
266     object,
267     uuid(9277fe09-f0cc-4cd9-bbce-581dd94b0260)
268 ]
269 interface nsIHttpChannel : nsIChannel
270 {
271     nsresult GetRequestMethod(nsACString *aRequestMethod);
272     nsresult SetRequestMethod(const nsACString *aRequestMethod);
273     nsresult GetReferrer(nsIURI **aReferrer);
274     nsresult SetReferrer(nsIURI *aReferrer);
275     nsresult GetRequestHeader(const nsACString *aHeader, nsACString *_retval);
276     nsresult SetRequestHeader(const nsACString *aHeader, const nsACString *aValue, PRBool aMerge);
277     nsresult VisitRequestHeaders(nsIHttpHeaderVisitor *aVisitor);
278     nsresult GetAllowPipelining(PRBool *aAllowPipelining);
279     nsresult SetAllowPipelining(PRBool aAllowPipelining);
280     nsresult GetRedirectionLimit(PRUint32 *aRedirectionLimit);
281     nsresult SetRedirectionLimit(PRUint32 aRedirectionLimit);
282     nsresult GetResponseStatus(PRUint32 *aResponseStatus);
283     nsresult GetResponseStatusText(nsACString *aResponseStatusText);
284     nsresult GetRequestSucceeded(PRBool *aRequestSucceeded);
285     nsresult GetResponseHeader(const nsACString *header, nsACString *_retval);
286     nsresult SetResponseHeader(const nsACString *header, const nsACString *value, PRBool merge);
287     nsresult VisitResponseHeaders(nsIHttpHeaderVisitor *aVisitor);
288     nsresult IsNoStoreResponse(PRBool *_retval);
289     nsresult IsNoCacheResponse(PRBool *_retval);
290 }
291
292 [
293     object,
294     uuid(ddf633d8-e9a4-439d-ad88-de636fd9bb75)
295 ]
296 interface nsIUploadChannel : nsISupports
297 {
298     nsresult SetUploadStream(nsIInputStream *aStream, const nsACString *aContentType,
299                              PRInt32 aContentLength);
300     nsresult GetUploadStream(nsIInputStream **aUploadStream);
301 }
302
303 [
304     object,
305     uuid(a6cf907d-15b3-11d2-932e-00805f8add32)
306 ]
307 interface nsIDOMNodeList : nsISupports
308 {
309     nsresult Item(PRUint32 index, nsIDOMNode **_retval);
310     nsresult GetLength(PRUint32 *aLength);
311 }
312
313 [
314     object,
315     uuid(a6cf907c-15b3-11d2-932e-00805f8add32)
316 ]
317 interface nsIDOMNode : nsISupports
318 {
319     nsresult GetNodeName(nsAString *aNodeName);
320     nsresult GetNodeValue(nsAString *aNodeValue);
321     nsresult SetNodeValue(const nsAString *aNodeValue);
322     nsresult GetNodeType(PRUint16 *aNodeType);
323     nsresult GetParentNode(nsIDOMNode **aParentNode);
324     nsresult GetChildNodes(nsIDOMNodeList **aChildNodes);
325     nsresult GetFirstChild(nsIDOMNode **aFirstChild);
326     nsresult GetLastChild(nsIDOMNode **aLastChild);
327     nsresult GetPreviousSibling(nsIDOMNode **aPreviousSibling);
328     nsresult GetNextSibling(nsIDOMNode **aNextSibling);
329     nsresult GetAttributes(nsIDOMNamedNodeMap **aAttributes);
330     nsresult GetOwnerDocument(nsIDOMDocument **aOwnerDocument);
331     nsresult InsertBefore(nsIDOMNode *newChild, nsIDOMNode *refChild, nsIDOMNode **_retval);
332     nsresult ReplaceChild(nsIDOMNode *newChild, nsIDOMNode *oldChild, nsIDOMNode **_retval);
333     nsresult RemoveChild(nsIDOMNode *oldChild, nsIDOMNode **_retval);
334     nsresult AppendChild(nsIDOMNode *newChild, nsIDOMNode **_retval);
335     nsresult HasChildNodes(PRBool *_retval);
336     nsresult CloneNode(PRBool deep, nsIDOMNode **_retval);
337     nsresult Normalize();
338     nsresult IsSupported(const nsAString *feature, const nsAString *version, PRBool *_retval);
339     nsresult GetNamespaceURI(nsAString *aNamespaceURI);
340     nsresult GetPrefix(nsAString *aPrefix);
341     nsresult SetPrefix(const nsAString *aPrefix);
342     nsresult GetLocalName(nsAString *aLocalName);
343     nsresult HasAttributes(PRBool *_retval);
344 }
345
346 [
347     object,
348     uuid(a6cf906b-15b3-11d2-932e-00805f8add32)
349 ]
350 interface nsIDOMWindow : nsISupports
351 {
352     nsresult GetDocument(nsIDOMDocument **aDocument);
353     nsresult GetParent(nsIDOMWindow **aParent);
354     nsresult GetTop(nsIDOMWindow **aTop);
355     nsresult GetScrollbars(nsIDOMBarProp **aScrollbars);
356     nsresult GetFrames(nsIDOMWindowCollection **aFrames);
357     nsresult GetName(nsAString *aName);
358     nsresult SetName(const nsAString *aName);
359     nsresult GetTextZoom(float *aTextZoom);
360     nsresult SetTextZoom(float aTextZoom);
361     nsresult GetScrollX(PRInt32 *aScrollX);
362     nsresult GetScrollY(PRInt32 *aScrollY);
363     nsresult ScrollTo(PRInt32 xScroll, PRInt32 yScroll);
364     nsresult ScrollBy(PRInt32 xScrollDif, PRInt32 yScrollDif);
365     nsresult GetSelection(nsISelection **_retval);
366     nsresult ScrollByLines(PRInt32 numLines);
367     nsresult ScrollByPages(PRInt32 numPages);
368     nsresult SizeToContent();
369 }
370
371 [
372     object,
373     uuid(94928ab3-8b63-11d3-989d-001083010e9b)
374 ]
375 interface nsIURIContentListener : nsISupports
376 {
377     nsresult OnStartURIOpen(nsIURI *aURI, PRBool *_retval);
378     nsresult DoContent(const char *aContentType, PRBool aIsContentPreferred, nsIRequest *aRequest,
379         nsIStreamListener **aContentHandler, PRBool *_retval);
380     nsresult IsPreferred(const char *aContentType, char **aDesiredContentType, PRBool *_retval);
381     nsresult CanHandleContent(const char *aContentType, PRBool aIsContentPreferred,
382         char **aDesiredContentType, PRBool *_retval);
383     nsresult GetLoadCookie(nsISupports **aLoadCookie);
384     nsresult SetLoadCookie(nsISupports *aLoadCookie);
385     nsresult GetParentContentListener(nsIURIContentListener **aParentContentListener);
386     nsresult SetParentContentListener(nsIURIContentListener *aParentContentListener);
387 }
388
389 [
390     object,
391     uuid(69e5df00-7b8b-11d3-af61-00a024ffc08c)
392 ]
393 interface nsIWebBrowser : nsISupports
394 {
395     nsresult AddWebBrowserListener(nsIWeakReference *aListener, const nsIID *aIID);
396     nsresult RemoveWebBrowserListener(nsIWeakReference *aListener, const nsIID *aIID);
397     nsresult GetContainerWindow(nsIWebBrowserChrome **aContainerWindow);
398     nsresult SetContainerWindow(nsIWebBrowserChrome *aContainerWindow);
399     nsresult GetParentURIContentListener(nsIURIContentListener **aParentURIContentListener);
400     nsresult SetParentURIContentListener(nsIURIContentListener *aParentURIContentListener);
401     nsresult GetContentDOMWindow(nsIDOMWindow **aContentDOMWindow);
402 }
403
404 cpp_quote("#define SETUP_IS_CHROME_WRAPPER 7");
405
406 [
407     object,
408     uuid(f15398a0-8018-11d3-af70-00a024ffc08c)
409 ]
410 interface nsIWebBrowserSetup : nsISupports
411 {
412     nsresult SetProperty(PRUint32 aId, PRUint32 aValue);
413 }
414
415 typedef void* nativeWindow;
416
417 [
418     object,
419     uuid(046bc8a0-8015-11d3-af70-00a024ffc08c)
420 ]
421 interface nsIBaseWindow : nsISupports
422 {
423     nsresult InitWindow(nativeWindow parentNativeWindow, nsIWidget *parentWidget, PRInt32 x,
424             PRInt32 y, PRInt32 cx, PRInt32 cy);
425     nsresult Create();
426     nsresult Destroy();
427     nsresult SetPosition(PRInt32 x, PRInt32 y);
428     nsresult GetPosition(PRInt32 *x, PRInt32 *y);
429     nsresult SetSize(PRInt32 cx, PRInt32 cy, PRBool fRepaint);
430     nsresult GetSize(PRInt32 *cx, PRInt32 *cy);
431     nsresult SetPositionAndSize(PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy, PRBool fRepaint);
432     nsresult GetPositionAndSize(PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy);
433     nsresult Repaint(PRBool force);
434     nsresult GetParentWidget(nsIWidget **aParentWidget); 
435     nsresult SetParentWidget(nsIWidget *aParentWidget);
436     nsresult GetParentNativeWindow(nativeWindow *aParentNativeWindow);
437     nsresult SetParentNativeWindow(nativeWindow aParentNativeWindow);
438     nsresult GetVisibility(PRBool *aVisibility);
439     nsresult SetVisibility(PRBool aVisibility);
440     nsresult GetEnabled(PRBool *aEnabled);
441     nsresult SetEnabled(PRBool aEnabled);
442     nsresult GetBlurSuppression(PRBool *aBlurSuppression);
443     nsresult SetBlurSuppression(PRBool aBlurSuppression);
444     nsresult GetMainWidget(nsIWidget **aMainWidget);
445     nsresult SetFocus();
446     nsresult GetTitle(PRUnichar **aTitle);
447     nsresult SetTitle(const PRUnichar *aTitle);
448 }
449
450 cpp_quote("#define LOAD_FLAGS_NONE 0");
451
452 [
453     object,
454     uuid(f5d9e7b0-d930-11d3-b057-00a024ffc08c)
455 ]
456 interface nsIWebNavigation : nsISupports
457 {
458     nsresult GetCanGoBack(PRBool *aCanGoBack);
459     nsresult GetCanGoForward(PRBool *aCanGoForward);
460     nsresult GoBack();
461     nsresult GoForward();
462     nsresult GotoIndex(PRInt32 index);
463     nsresult LoadURI(const PRUnichar *aURI, PRUint32 aLoadFlags, nsIURI *aReferrer,
464             nsIInputStream *aPostData, nsIInputStream *aHeaders);
465     nsresult Reload(PRUint32 aReloadFlags);
466     nsresult Stop(PRUint32 aStopFlags);
467     nsresult GetDocument(nsIDOMDocument **aDocument);
468     nsresult GetCurrentURI(nsIURI **aCurrentURI);
469     nsresult GetReferringURI(nsIURI **aReferringURI);
470     nsresult GetSessionHistory(nsISHistory **aSessionHistory);
471     nsresult SetSessionHistory(nsISHistory *aSessionHistory);
472 }
473
474 [
475     object,
476     uuid(c8c0a080-0868-11d3-915f-d9d889d48e3c)
477 ]
478 interface nsIFile : nsISupports
479 {
480     nsresult Append(const nsAString *node);
481     nsresult AppendNative(const nsAString *node);
482     nsresult Normalize();
483     nsresult Create(PRUint32 type, PRUint32 permission);
484     nsresult GetLeafName(nsAString *aLeafName);
485     nsresult SetLeafName(const nsAString *aLeafName);
486     nsresult GetNativeLeafName(nsAString *aLeafName);
487     nsresult SetNativeLeafName(const nsAString *aLeafName);
488     nsresult CopyTo(nsIFile *newParentDir, const nsAString *newName);
489     nsresult CopyToNative(nsIFile *newParentDir, const nsAString *newName);
490     nsresult CopyToFollowingLinks(nsIFile *newParentDir, const nsAString *newName);
491     nsresult CopyToFollowingLinksNative(nsIFile *newParentDir, const nsAString *newName);
492     nsresult MoveTo(nsIFile *newParentDir, const nsAString *newName);
493     nsresult MoveToNative(nsIFile *newParentDir, const nsAString *newName);
494     nsresult Remove(PRBool recursive);
495     nsresult GetPermissions(PRUint32 *aPermissions);
496     nsresult SetPermissions(PRUint32 pPermissions);
497     nsresult GetPermissionsOfLink(PRUint32 *aPermissions);
498     nsresult SetPermissionsOfLink(PRUint32 pPermissions);
499     nsresult GetLastModifiedTime(PRInt64 *aLastModifiedTime);
500     nsresult SetLastModifiedTime(PRInt64 aLastModifiedTime);
501     nsresult GetFileSize(PRInt64 *aFileSize);
502     nsresult SetFileSize(PRInt64 aFileSize);
503     nsresult GetFileSizeOfLink(PRInt64 *aFileSizeOfLink);
504     nsresult GetTarget(nsAString *aTarget);
505     nsresult GetNativeTarget(nsACString *aNativeTarget);
506     nsresult GetPath(nsAString *aPath);
507     nsresult GetNativePath(nsACString *aNativePath);
508     nsresult Exists(PRBool *_retval);
509     nsresult IsWritable(PRBool *_retval);
510     nsresult IsReadable(PRBool *_retval);
511     nsresult IsExecutable(PRBool *_retval);
512     nsresult IsHidden(PRBool *_retval);
513     nsresult IsDirectory(PRBool *_retval);
514     nsresult IsFile(PRBool *_retval);
515     nsresult IsSymlink(PRBool *_retval);
516     nsresult IsSpecial(PRBool *_retval);
517     nsresult CreateUnique(PRUint32 type, PRUint32 permission);
518     nsresult Clone(nsIFile **_retval);
519     nsresult Equals(nsIFile *inFile, PRBool *_retval);
520     nsresult Contains(nsIFile *inFile, PRBool recir, PRBool *_retval);
521     nsresult GetParent(nsIFile **aParent);
522     nsresult GetDirectoryEntries(nsISimpleEnumerator **aDirectoryEntries);
523 }
524
525 [
526     object,
527     uuid(86d02f0e-219b-4cfc-9c88-bd98d2cce0b8)
528 ]
529 interface nsIWebBrowserStream : nsISupports
530 {
531     nsresult OpenStream(nsIURI *aBaseURI, nsACString *aContentType);
532     nsresult AppendToStream(PRUint8 *aData, PRUint32 aLen);
533     nsresult CloseStream();
534 }
535
536 [
537     object,
538     uuid(bddeda3f-9020-4d12-8c70-984ee9f7935e)
539 ]
540 interface nsIIOService : nsISupports
541 {
542     nsresult GetProtocolHandler(const char *aScheme, nsIProtocolHandler **_retval);
543     nsresult GetProtocolFlags(const char *aScheme, PRUint32 *_retval);
544     nsresult NewURI(const nsACString *aSpec, const char *aOriginCharset, nsIURI *aBaseURI,
545                     nsIURI **_retval);
546     nsresult NewFileURI(nsIFile *aFile, nsIURI **_retval);
547     nsresult NewChannelFromURI(nsIURI *aURI, nsIChannel **_retval);
548     nsresult NewChannel(const nsACString *aSpec, const char *aOriginCharset, nsIURI *aBaseURI,
549                         nsIChannel **_retval);
550     nsresult GetOffline(PRBool *aOffline);
551     nsresult SetOffline(PRBool aOffline);
552     nsresult AllowPort(PRInt32 aPort, const char *aScheme, PRBool *_retval);
553     nsresult ExtractScheme(const nsACString *urlString, nsACString * _retval);
554 }
555
556 [
557     object,
558     uuid(9c5d3c58-1dd1-11b2-a1c9-f3699284657a)
559 ]
560 interface nsIWebBrowserFocus : nsISupports
561 {
562     nsresult Activate();
563     nsresult Deactivate();
564     nsresult SetFocusAtFirstElement();
565     nsresult SetFocusAtLastElement();
566     nsresult GetFocusedWindow(nsIDOMWindow **aFocusedWindow);
567     nsresult SetFocusedWindow(nsIDOMWindow *aFocusedWindow);
568     nsresult GetFocusedElement(nsIDOMElement **aFocusedElement);
569     nsresult SetFocusedElement(nsIDOMElement *aFocusedElement);
570 }
571
572 [
573     object,
574     uuid(ba434c60-9d52-11d3-afb0-00a024ffc08c)
575 ]
576 interface nsIWebBrowserChrome : nsISupports
577 {
578     nsresult SetStatus(PRUint32 statusType, const PRUnichar *status);
579     nsresult GetWebBrowser(nsIWebBrowser **aWebBrowser);
580     nsresult SetWebBrowser(nsIWebBrowser *aWebBrowser);
581     nsresult GetChromeFlags(PRUint32 *aChromeFlags);
582     nsresult SetChromeFlags(PRUint32 aChromeFlags);
583     nsresult DestroyBrowserWindow();
584     nsresult SizeBrowserTo(PRInt32 aCX, PRInt32 aCY);
585     nsresult ShowAsModal();
586     nsresult IsWindowModal(PRBool *_retval);
587     nsresult ExitModalEventLoop(nsresult aStatus);
588 }
589
590 [
591     object,
592     uuid(a66b7b80-ff46-bd97-0080-5f8ae38add32)
593 ]
594 interface nsIDOMEvent : nsISupports
595 {
596     nsresult GetType(nsAString *aType);
597     nsresult GetTarget(nsIDOMEventTarget **aTarget);
598     nsresult GetCurrentTarget(nsIDOMEventTarget **aCurrentTarget);
599     nsresult GetEventPhase(PRUint16 *aEventPhase);
600     nsresult GetBubbles(PRBool *aBubbles);
601     nsresult GetCancelable(PRBool *aCancelable);
602     nsresult GetTimeStamp(DOMTimeStamp *aTimeStamp);
603     nsresult StopPropagation();
604     nsresult PreventDefault();
605     nsresult InitEvent(const nsAString *eventTypeArg, PRBool canBubbleArg, PRBool cancelableArg);
606 }
607
608 cpp_quote("#define CONTEXT_NONE              0x00");
609 cpp_quote("#define CONTEXT_LINK              0x01");
610 cpp_quote("#define CONTEXT_IMAGE             0x02");
611 cpp_quote("#define CONTEXT_DOCUMENT          0x04");
612 cpp_quote("#define CONTEXT_TEXT              0x08");
613 cpp_quote("#define CONTEXT_INPUT             0x10");
614 cpp_quote("#define CONTEXT_BACKGROUND_IMAGE  0x20");
615
616 [
617     object,
618     uuid(3478b6b0-3875-11d4-94ef-0020183bf181)
619 ]
620 interface nsIContextMenuListener : nsISupports
621 {
622     nsresult OnShowContextMenu(PRUint32 aContextFlags, nsIDOMEvent *aEvent, nsIDOMNode *aNode);
623 }
624
625 [
626     object,
627     uuid(a6cf90c3-15b3-11d2-932e-00805f8add32)
628 ]
629 interface nsIDOMUIEvent : nsIDOMEvent
630 {
631     nsresult GetView(nsIDOMAbstractView **aView);
632     nsresult GetDetail(PRInt32 *aDetail);
633     nsresult InitUIEvent(const nsAString *typeArg, PRBool canBubbleArg, PRBool cancelableArg,
634             nsIDOMAbstractView *viewArg, PRInt32 detailArg);
635 }
636
637 [
638     object,
639     uuid(ff751edc-8b02-aae7-0010-8301838a3123)
640 ]
641 interface nsIDOMMouseEvent : nsIDOMUIEvent
642 {
643     nsresult GetScreenX(PRInt32 *aScreenX);
644     nsresult GetScreenY(PRInt32 *aScreenY);
645     nsresult GetClientX(PRInt32 *aClientX);
646     nsresult GetClientY(PRInt32 *aClientY);
647     nsresult GetCtrlKey(PRBool *aCtrlKey);
648     nsresult GetShiftKey(PRBool *aShiftKey);
649     nsresult GetAltKey(PRBool *aAltKey);
650     nsresult GetMetaKey(PRBool *aMetaKey);
651     nsresult GetButton(PRUint16 *aButton);
652     nsresult GetRelatedTarget(nsIDOMEventTarget * *aRelatedTarget);
653     nsresult InitMouseEvent(const nsAString *typeArg, PRBool canBubbleArg, PRBool cancelableArg,
654             nsIDOMAbstractView *viewArg, PRInt32 detailArg, PRInt32 screenXArg, PRInt32 screenYArg,
655             PRInt32 clientXArg, PRInt32 clientYArg, PRBool ctrlKeyArg, PRBool altKeyArg,
656             PRBool shiftKeyArg, PRBool metaKeyArg, PRUint16 buttonArg,
657             nsIDOMEventTarget *relatedTargetArg);
658 }
659
660 [
661      object,
662      uuid(3e5432cd-9568-4bd1-8cbe-d50aba110743)
663 ]
664 interface nsIEmbeddingSiteWindow : nsISupports
665 {
666     nsresult SetDimensions(PRUint32 flags, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy);
667     nsresult GetDimensions(PRUint32 flags, PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy);
668     nsresult SetFocus();
669     nsresult GetVisibility(PRBool *aVisibility);
670     nsresult SetVisibility(PRBool aVisibility);
671     nsresult GetTitle(PRUnichar **aTitle);
672     nsresult SetTitle(const PRUnichar *aTitle);
673     nsresult GetSiteWindow(void **aSiteWindow);
674 }
675
676 [
677      object,
678      uuid(2417cbfe-65ad-48a6-b4b6-eb84db174392)
679 ]
680 interface nsIComponentRegistrar : nsISupports
681 {
682     nsresult AutoRegister(nsIFile *aSpec);
683     nsresult AutoUnregister(nsIFile *aSpec);
684     nsresult RegisterFactory(const nsCID *aClass, const char *aClassName,
685             const char *aContractID, nsIFactory *aFactory);
686     nsresult UnregisterFactory(const nsCID *aClass, nsIFactory *aFactory);
687     nsresult RegisterFactoryLocation(const nsCID *aClass, const char *aClassName,
688             const char *aContractID, nsIFile *aFile, const char *aLoaderStr,
689             const char *aType);
690     nsresult UnregisterFactoryLocation(const nsCID *aClass, nsIFile *aFile);
691     nsresult IsCIDRegistered(const nsCID *aClass, PRBool *_retval);
692     nsresult IsContractIDRegistered(const char *aContractID, PRBool *_retval);
693     nsresult EnumerateCIDs(nsISimpleEnumerator **_retval);
694     nsresult EnumerateContractIDs(nsISimpleEnumerator **_retval);
695     nsresult CIDToContractID(const nsCID *aClass, char **_retval);
696     nsresult ContractIDToCID(const char *aContractID, nsCID **_retval);
697 }
698
699 [
700     object,
701     uuid(1630c61a-325e-49ca-8759-a31b16c47aa5)
702 ]
703 interface nsIPromptService : nsISupports
704 {
705     nsresult Alert(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
706             const PRUnichar *aText);
707     nsresult AlertCheck(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
708             const PRUnichar *aText, const PRUnichar *aCheckMsg, PRBool *aCheckState);
709     nsresult Confirm(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
710             const PRUnichar *aText, PRBool *_retval);
711     nsresult ConfirmCheck(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
712             const PRUnichar *aText, const PRUnichar *aCheckMsg, PRBool *aCheckState,
713             PRBool *_retval);
714     nsresult ConfirmEx(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
715             const PRUnichar *aText, PRUint32 aButtonFlags, const PRUnichar *aButton0Title,
716             const PRUnichar *aButton1Title, const PRUnichar *aButton2Title,
717             const PRUnichar *aCheckMsg, PRBool *aCheckState, PRInt32 *_retval);
718     nsresult Prompt(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
719             const PRUnichar *aText, PRUnichar **aValue, const PRUnichar *aCheckMsg,
720             PRBool *aCheckState, PRBool *_retval);
721     nsresult PromptUsernameAndPassword(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
722             const PRUnichar *aText, PRUnichar **aUsername, PRUnichar **aPassword,
723             const PRUnichar *aCheckMsg, PRBool *aCheckState, PRBool *_retval);
724     nsresult PromptPassword(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
725             const PRUnichar *aText, PRUnichar **aPassword, const PRUnichar *aCheckMsg,
726             PRBool *aCheckState, PRBool *_retval);
727     nsresult Select(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
728             const PRUnichar *aText, PRUint32 aCount, const PRUnichar **aSelectList,
729             PRInt32 *aOutSelection, PRBool *_retval);
730 }
731
732 [
733     object,
734     uuid(02b0625a-e7f3-11d2-9f5a-006008a6efe9)
735 ]
736 interface nsIProfile : nsISupports
737 {
738     nsresult GetProfileCount(PRInt32 *aProfileCount);
739     nsresult GetProfileList(PRUint32 *length, PRUnichar ***profileNames);
740     nsresult ProfileExists(const PRUnichar *profileName, PRBool *_retval);
741     nsresult GetCurrentProfile(PRUnichar * *aCurrentProfile);
742     nsresult SetCurrentProfile(const PRUnichar * aCurrentProfile);
743     nsresult ShutDownCurrentProfile(PRUint32 shutDownType);
744     nsresult CreateNewProfile(const PRUnichar *profileName,
745             const PRUnichar *nativeProfileDir, const PRUnichar *langcode,
746             PRBool useExistingDir);
747     nsresult RenameProfile(const PRUnichar *oldName, const PRUnichar *newName);
748     nsresult DeleteProfile(const PRUnichar *name, PRBool canDeleteFiles);
749     nsresult CloneProfile(const PRUnichar *profileName);
750 }
751
752 [
753     object,
754     uuid(30465632-a777-44cc-90f9-8145475ef999)
755 ]
756 interface nsIWindowCreator : nsISupports
757 {
758     nsresult CreateChromeWindow(nsIWebBrowserChrome *parent, PRUint32 chromeFlags,
759                                    nsIWebBrowserChrome **_retval);
760 }
761
762 [
763     object,
764     uuid(f673ec81-a4b0-11d6-964b-eb5a2bf216fc)
765 ]
766 interface nsIWindowCreator2 : nsIWindowCreator
767 {
768     nsresult CreateChromeWindow2(nsIWebBrowserChrome *parent, PRUint32 chromeFlags,
769                                  PRUint32 contextFlags, nsIURI *uri, PRBool *cancel,
770                                  nsIWebBrowserChrome **_retval);
771 }
772
773 [
774     object,
775     uuid(002286a8-494b-43b3-8ddd-49e3fc50622b)
776 ]
777 interface nsIWindowWatcher : nsISupports
778 {
779     nsresult OpenWindow(nsIDOMWindow *aParent, const char *aUrl, const char *aName,
780                         const char *aFeatures, nsISupports *aArguments, nsIDOMWindow **_retval);
781     nsresult RegisterNotification(nsIObserver *aObserver);
782     nsresult UnregisterNotification(nsIObserver *aObserver);
783     nsresult GetWindowEnumerator(nsISimpleEnumerator **_retval);
784     nsresult GetNewPrompter(nsIDOMWindow *aParent, nsIPrompt **_retval);
785     nsresult GetNewAuthPrompter(nsIDOMWindow *aParent, nsIAuthPrompt **_retval);
786     nsresult SetWindowCreator(nsIWindowCreator *creator);
787     nsresult GetChromeForWindow(nsIDOMWindow *aWindow, nsIWebBrowserChrome **_retval);
788     nsresult GetWindowByName(const PRUnichar *aTargetName, nsIDOMWindow *aCurrentWindow,
789                              nsIDOMWindow **_retval);
790     nsresult GetActiveWindow(nsIDOMWindow **aActiveWindow);
791     nsresult SetActiveWindow(nsIDOMWindow *aActiveWindow);
792 }
793
794 /*
795  * NOTE:
796  * This is a private Wine interface that is implemented by our implementation
797  * of nsIURI to store its owner.
798  */
799 [
800     object,
801     uuid(5088272e-900b-11da-c687-000fea57f21a)
802 ]
803 interface nsIWineURI : nsIURI
804 {
805     typedef struct NSContainer NSContainer;
806
807     nsresult GetNSContainer(NSContainer **aNSContainer);
808     nsresult SetNSContainer(NSContainer *aNSContainer);
809 }