user: Remove duplicate code.
[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
49 typedef struct nsStringContainer nsStringContainer;
50 typedef nsStringContainer nsCStringContainer;
51 typedef nsStringContainer nsACString;
52 typedef nsStringContainer nsAString;
53
54 interface nsIWebBrowserChrome;
55
56 [
57     object,
58     uuid(00000000-0000-0000-c000-000000000046)
59 ]
60 interface nsISupports
61 {
62     nsresult QueryInterface(nsIIDRef riid, nsQIResult result);
63     nsrefcnt AddRef();
64     nsrefcnt Release();
65 }
66
67 /* Currently we don't need a full declaration of these interfaces */
68 typedef nsISupports nsIWeakReference;
69 typedef nsISupports nsIDOMWindow;
70 typedef nsISupports nsIInputStream;
71 typedef nsISupports nsIDOMDocument;
72 typedef nsISupports nsISHistory;
73 typedef nsISupports nsISimpleEnumerator;
74 typedef nsISupports nsIWidget;
75 typedef nsISupports nsIProtocolHandler;
76 typedef nsISupports nsIChannel;
77 typedef nsISupports nsIDOMElement;
78 typedef nsISupports nsIDOMNode;
79 typedef nsISupports nsIDOMEventTarget;
80 typedef nsISupports nsIDOMAbstractView;
81 typedef nsISupports nsIRequest;
82 typedef nsISupports nsIStreamListener;
83
84 [
85     object,
86     uuid(8bb35ed9-e332-462d-9155-4a002ab5c958)
87 ]
88 interface nsIServiceManager : nsISupports
89 {
90     nsresult GetService(nsCIDRef aClass, nsIIDRef aIID, void **result);
91     nsresult GetServiceByContactID(nsstring aContactID, nsIIDRef aIID, void **result);
92     nsresult IsServiceInstantiated(nsCIDRef aClass, nsIIDRef aIID, BOOL *_retval);
93     nsresult IsServiceInstantiatedByContractID(nsstring aContractID, nsIIDRef aIID, BOOL *_retval);
94 }
95
96 [
97     object,
98     uuid(00000001-0000-0000-c000-000000000046)
99 ]
100 interface nsIFactory : nsISupports
101 {
102     nsresult CreateInstance(nsISupports *aOuter, const nsIID *iid, void **result);
103     nsresult LockFactory(PRBool lock);
104 }
105
106 [
107     object,
108     uuid(db242e01-e4d9-11d2-9dde-000064657374)
109 ]
110 interface nsIObserver : nsISupports
111 {
112     nsresult Observe(nsISupports *aSubject, nsstring aTopic, nswstring aData);
113 }
114
115 [
116     object,
117     uuid(a88e5a60-205a-4bb1-94e1-2628daf51eae)
118 ]
119 interface nsIComponentManager : nsISupports
120 {
121     nsresult GetClassObject(nsCIDRef aClass, nsIIDRef aIID, nsQIResult result);
122     nsresult GetClassObjectByContractID(nsstring aContractID, nsIIDRef aIID, nsQIResult result);
123     nsresult CreateInstance(nsCIDRef aClass, nsISupports *aDelegate, nsIIDRef aIID,
124             nsQIResult result);
125     nsresult CreateInstanceByContractID(nsstring aContractID, nsISupports *aDelegate,
126             nsIIDRef aIID, nsQIResult result);
127 }
128
129 [
130     object,
131     uuid(07a22cc0-0ce5-11d3-9331-00104ba0fd40)
132 ]
133 interface nsIURI : nsISupports
134 {
135     nsresult GetSpec(nsACString *aSpec);
136     nsresult SetSpec(const nsACString *aSpec);
137     nsresult GetPrePath(nsACString *aPrePath);
138     nsresult GetScheme(nsACString *aScheme);
139     nsresult SetScheme(const nsACString *aScheme);
140     nsresult GetUserPass(nsACString *aUserPass);
141     nsresult SetUserPass(const nsACString *aUserPass);
142     nsresult GetUsername(nsACString *aUsername);
143     nsresult SetUsername(const nsACString *aUsername);
144     nsresult GetPassword(nsACString *aPassword);
145     nsresult SetPassword(const nsACString *aPassword);
146     nsresult GetHostPort(nsACString *aHostPort);
147     nsresult SetHostPort(const nsACString *aHostPort);
148     nsresult GetHost(nsACString *aHost);
149     nsresult SetHost(const nsACString *aHost);
150     nsresult GetPort(PRInt32 *aPort);
151     nsresult SetPort(PRInt32 aPort);
152     nsresult GetPath(nsACString *aPath);
153     nsresult SetPath(const nsACString *aPath);
154     nsresult Equals(nsIURI *other, PRBool *_retval);
155     nsresult SchemeIs(const char *scheme, PRBool *_retval);
156     nsresult Clone(nsIURI **_retval);
157     nsresult Resolve(const nsACString *relativePath, nsACString *_retval);
158     nsresult GetAsciiSpec(nsACString *aAsciiSpec);
159     nsresult GetAsciiHost(nsACString *aAsciiHost);
160     nsresult GetOriginCharset(nsACString *aOriginCharset);
161 }
162
163 [
164     object,
165     uuid(94928ab3-8b63-11d3-989d-001083010e9b)
166 ]
167 interface nsIURIContentListener : nsISupports
168 {
169     nsresult OnStartURIOpen(nsIURI *aURI, PRBool *_retval);
170     nsresult DoContent(const char *aContentType, PRBool aIsContentPreferred, nsIRequest *aRequest,
171         nsIStreamListener **aContentHandler, PRBool *_retval);
172     nsresult IsPreferred(const char *aContentType, char **aDesiredContentType, PRBool *_retval);
173     nsresult CanHandleContent(const char *aContentType, PRBool aIsContentPreferred,
174         char **aDesiredContentType, PRBool *_retval);
175     nsresult GetLoadCookie(nsISupports **aLoadCookie);
176     nsresult SetLoadCookie(nsISupports *aLoadCookie);
177     nsresult GetParentContentListener(nsIURIContentListener **aParentContentListener);
178     nsresult SetParentContentListener(nsIURIContentListener *aParentContentListener);
179 }
180
181 [
182     object,
183     uuid(69e5df00-7b8b-11d3-af61-00a024ffc08c)
184 ]
185 interface nsIWebBrowser : nsISupports
186 {
187     nsresult AddWebBrowserListener(nsIWeakReference *aListener, const nsIID *aIID);
188     nsresult RemoveWebBrowserListener(nsIWeakReference *aListener, const nsIID *aIID);
189     nsresult GetContainerWindow(nsIWebBrowserChrome **aContainerWindow);
190     nsresult SetContainerWindow(nsIWebBrowserChrome *aContainerWindow);
191     nsresult GetParentURIContentListener(nsIURIContentListener **aParentURIContentListener);
192     nsresult SetParentURIContentListener(nsIURIContentListener *aParentURIContentListener);
193     nsresult GetContentDOMWindow(nsIDOMWindow **aContentDOMWindow);
194 }
195
196 cpp_quote("#define SETUP_IS_CHROME_WRAPPER 7");
197
198 [
199     object,
200     uuid(f15398a0-8018-11d3-af70-00a024ffc08c)
201 ]
202 interface nsIWebBrowserSetup : nsISupports
203 {
204     nsresult SetProperty(PRUint32 aId, PRUint32 aValue);
205 }
206
207 typedef void* nativeWindow;
208
209 [
210     object,
211     uuid(046bc8a0-8015-11d3-af70-00a024ffc08c)
212 ]
213 interface nsIBaseWindow : nsISupports
214 {
215     nsresult InitWindow(nativeWindow parentNativeWindow, nsIWidget *parentWidget, PRInt32 x,
216             PRInt32 y, PRInt32 cx, PRInt32 cy);
217     nsresult Create();
218     nsresult Destroy();
219     nsresult SetPosition(PRInt32 x, PRInt32 y);
220     nsresult GetPosition(PRInt32 *x, PRInt32 *y);
221     nsresult SetSize(PRInt32 cx, PRInt32 cy, PRBool fRepaint);
222     nsresult GetSize(PRInt32 *cx, PRInt32 *cy);
223     nsresult SetPositionAndSize(PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy, PRBool fRepaint);
224     nsresult GetPositionAndSize(PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy);
225     nsresult Repaint(PRBool force);
226     nsresult GetParentWidget(nsIWidget **aParentWidget); 
227     nsresult SetParentWidget(nsIWidget *aParentWidget);
228     nsresult GetParentNativeWindow(nativeWindow *aParentNativeWindow);
229     nsresult SetParentNativeWindow(nativeWindow aParentNativeWindow);
230     nsresult GetVisibility(PRBool *aVisibility);
231     nsresult SetVisibility(PRBool aVisibility);
232     nsresult GetEnabled(PRBool *aEnabled);
233     nsresult SetEnabled(PRBool aEnabled);
234     nsresult GetBlurSuppression(PRBool *aBlurSuppression);
235     nsresult SetBlurSuppression(PRBool aBlurSuppression);
236     nsresult GetMainWidget(nsIWidget **aMainWidget);
237     nsresult SetFocus();
238     nsresult GetTitle(PRUnichar **aTitle);
239     nsresult SetTitle(const PRUnichar *aTitle);
240 }
241
242 cpp_quote("#define LOAD_FLAGS_NONE 0");
243
244 [
245     object,
246     uuid(f5d9e7b0-d930-11d3-b057-00a024ffc08c)
247 ]
248 interface nsIWebNavigation : nsISupports
249 {
250     nsresult GetCanGoBack(PRBool *aCanGoBack);
251     nsresult GetCanGoForward(PRBool *aCanGoForward);
252     nsresult GoBack();
253     nsresult GoForward();
254     nsresult GotoIndex(PRInt32 index);
255     nsresult LoadURI(const PRUnichar *aURI, PRUint32 aLoadFlags, nsIURI *aReferrer,
256             nsIInputStream *aPostData, nsIInputStream *aHeaders);
257     nsresult Reload(PRUint32 aReloadFlags);
258     nsresult Stop(PRUint32 aStopFlags);
259     nsresult GetDocument(nsIDOMDocument **aDocument);
260     nsresult GetCurrentURI(nsIURI **aCurrentURI);
261     nsresult GetReferringURI(nsIURI **aReferringURI);
262     nsresult GetSessionHistory(nsISHistory **aSessionHistory);
263     nsresult SetSessionHistory(nsISHistory *aSessionHistory);
264 }
265
266 [
267     object,
268     uuid(c8c0a080-0868-11d3-915f-d9d889d48e3c)
269 ]
270 interface nsIFile : nsISupports
271 {
272     nsresult Append(const nsAString *node);
273     nsresult AppendNative(const nsAString *node);
274     nsresult Normalize();
275     nsresult Create(PRUint32 type, PRUint32 permission);
276     nsresult GetLeafName(nsAString *aLeafName);
277     nsresult SetLeafName(const nsAString *aLeafName);
278     nsresult GetNativeLeafName(nsAString *aLeafName);
279     nsresult SetNativeLeafName(const nsAString *aLeafName);
280     nsresult CopyTo(nsIFile *newParentDir, const nsAString *newName);
281     nsresult CopyToNative(nsIFile *newParentDir, const nsAString *newName);
282     nsresult CopyToFollowingLinks(nsIFile *newParentDir, const nsAString *newName);
283     nsresult CopyToFollowingLinksNative(nsIFile *newParentDir, const nsAString *newName);
284     nsresult MoveTo(nsIFile *newParentDir, const nsAString *newName);
285     nsresult MoveToNative(nsIFile *newParentDir, const nsAString *newName);
286     nsresult Remove(PRBool recursive);
287     nsresult GetPermissions(PRUint32 *aPermissions);
288     nsresult SetPermissions(PRUint32 pPermissions);
289     nsresult GetPermissionsOfLink(PRUint32 *aPermissions);
290     nsresult SetPermissionsOfLink(PRUint32 pPermissions);
291     nsresult GetLastModifiedTime(PRInt64 *aLastModifiedTime);
292     nsresult SetLastModifiedTime(PRInt64 aLastModifiedTime);
293     nsresult GetFileSize(PRInt64 *aFileSize);
294     nsresult SetFileSize(PRInt64 aFileSize);
295     nsresult GetFileSizeOfLink(PRInt64 *aFileSizeOfLink);
296     nsresult GetTarget(nsAString *aTarget);
297     nsresult GetNativeTarget(nsACString *aNativeTarget);
298     nsresult GetPath(nsAString *aPath);
299     nsresult GetNativePath(nsACString *aNativePath);
300     nsresult Exists(PRBool *_retval);
301     nsresult IsWritable(PRBool *_retval);
302     nsresult IsReadable(PRBool *_retval);
303     nsresult IsExecutable(PRBool *_retval);
304     nsresult IsHidden(PRBool *_retval);
305     nsresult IsDirectory(PRBool *_retval);
306     nsresult IsFile(PRBool *_retval);
307     nsresult IsSymlink(PRBool *_retval);
308     nsresult IsSpecial(PRBool *_retval);
309     nsresult CreateUnique(PRUint32 type, PRUint32 permission);
310     nsresult Clone(nsIFile **_retval);
311     nsresult Equals(nsIFile *inFile, PRBool *_retval);
312     nsresult Contains(nsIFile *inFile, PRBool recir, PRBool *_retval);
313     nsresult GetParent(nsIFile **aParent);
314     nsresult GetDirectoryEntries(nsISimpleEnumerator **aDirectoryEntries);
315 }
316
317 [
318     object,
319     uuid(86d02f0e-219b-4cfc-9c88-bd98d2cce0b8)
320 ]
321 interface nsIWebBrowserStream : nsISupports
322 {
323     nsresult OpenStream(nsIURI *aBaseURI, nsACString *aContentType);
324     nsresult AppendToStream(PRUint8 *aData, PRUint32 aLen);
325     nsresult CloseStream();
326 }
327
328 [
329     object,
330     uuid(bddeda3f-9020-4d12-8c70-984ee9f7935e)
331 ]
332 interface nsIIOService : nsISupports
333 {
334     nsresult GetProtocolHandler(const char *aScheme, nsIProtocolHandler **_retval);
335     nsresult GetProtocolFlags(const char *aScheme, PRUint32 *_retval);
336     nsresult NewURI(const nsACString *aSpec, const char *aOriginCharset, nsIURI *aBaseURI, nsIURI **_retval);
337     nsresult NewFileURI(nsIFile *aFile, nsIURI **_retval);
338     nsresult NewChannelFromURI(nsIURI *aURI, nsIChannel **_retval);
339     nsresult NewChannel(const nsACString *aSpec, const char *aOriginCharset, nsIURI *aBaseURI, nsIChannel **_retval);
340     nsresult GetOffline(PRBool *aOffline);
341     nsresult SetOffline(PRBool aOffline);
342     nsresult AllowPort(PRInt32 aPort, const char *aScheme, PRBool *_retval);
343 }
344
345 [
346     object,
347     uuid(9c5d3c58-1dd1-11b2-a1c9-f3699284657a)
348 ]
349 interface nsIWebBrowserFocus : nsISupports
350 {
351     nsresult Activate();
352     nsresult Deactivate();
353     nsresult SetFocusAtFirstElement();
354     nsresult SetFocusAtLastElement();
355     nsresult GetFocusedWindow(nsIDOMWindow **aFocusedWindow);
356     nsresult SetFocusedWindow(nsIDOMWindow *aFocusedWindow);
357     nsresult GetFocusedElement(nsIDOMElement **aFocusedElement);
358     nsresult SetFocusedElement(nsIDOMElement *aFocusedElement);
359 }
360
361 [
362     object,
363     uuid(ba434c60-9d52-11d3-afb0-00a024ffc08c)
364 ]
365 interface nsIWebBrowserChrome : nsISupports
366 {
367     nsresult SetStatus(PRUint32 statusType, const PRUnichar *status);
368     nsresult GetWebBrowser(nsIWebBrowser **aWebBrowser);
369     nsresult SetWebBrowser(nsIWebBrowser *aWebBrowser);
370     nsresult GetChromeFlags(PRUint32 *aChromeFlags);
371     nsresult SetChromeFlags(PRUint32 aChromeFlags);
372     nsresult DestroyBrowserWindow();
373     nsresult SizeBrowserTo(PRInt32 aCX, PRInt32 aCY);
374     nsresult ShowAsModal();
375     nsresult IsWindowModal(PRBool *_retval);
376     nsresult ExitModalEventLoop(nsresult aStatus);
377 }
378
379 [
380     object,
381     uuid(a66b7b80-ff46-bd97-0080-5f8ae38add32)
382 ]
383 interface nsIDOMEvent : nsISupports
384 {
385     nsresult GetType(nsAString *aType);
386     nsresult GetTarget(nsIDOMEventTarget **aTarget);
387     nsresult GetCurrentTarget(nsIDOMEventTarget **aCurrentTarget);
388     nsresult GetEventPhase(PRUint16 *aEventPhase);
389     nsresult GetBubbles(PRBool *aBubbles);
390     nsresult GetCancelable(PRBool *aCancelable);
391     nsresult GetTimeStamp(DOMTimeStamp *aTimeStamp);
392     nsresult StopPropagation();
393     nsresult PreventDefault();
394     nsresult InitEvent(const nsAString *eventTypeArg, PRBool canBubbleArg, PRBool cancelableArg);
395 }
396
397 cpp_quote("#define CONTEXT_NONE              0x00");
398 cpp_quote("#define CONTEXT_LINK              0x01");
399 cpp_quote("#define CONTEXT_IMAGE             0x02");
400 cpp_quote("#define CONTEXT_DOCUMENT          0x04");
401 cpp_quote("#define CONTEXT_TEXT              0x08");
402 cpp_quote("#define CONTEXT_INPUT             0x10");
403 cpp_quote("#define CONTEXT_BACKGROUND_IMAGE  0x20");
404
405 [
406     object,
407     uuid(3478b6b0-3875-11d4-94ef-0020183bf181)
408 ]
409 interface nsIContextMenuListener : nsISupports
410 {
411     nsresult OnShowContextMenu(PRUint32 aContextFlags, nsIDOMEvent *aEvent, nsIDOMNode *aNode);
412 }
413
414 [
415     object,
416     uuid(a6cf90c3-15b3-11d2-932e-00805f8add32)
417 ]
418 interface nsIDOMUIEvent : nsIDOMEvent
419 {
420     nsresult GetView(nsIDOMAbstractView **aView);
421     nsresult GetDetail(PRInt32 *aDetail);
422     nsresult InitUIEvent(const nsAString *typeArg, PRBool canBubbleArg, PRBool cancelableArg,
423             nsIDOMAbstractView *viewArg, PRInt32 detailArg);
424 }
425
426 [
427     object,
428     uuid(ff751edc-8b02-aae7-0010-8301838a3123)
429 ]
430 interface nsIDOMMouseEvent : nsIDOMUIEvent
431 {
432     nsresult GetScreenX(PRInt32 *aScreenX);
433     nsresult GetScreenY(PRInt32 *aScreenY);
434     nsresult GetClientX(PRInt32 *aClientX);
435     nsresult GetClientY(PRInt32 *aClientY);
436     nsresult GetCtrlKey(PRBool *aCtrlKey);
437     nsresult GetShiftKey(PRBool *aShiftKey);
438     nsresult GetAltKey(PRBool *aAltKey);
439     nsresult GetMetaKey(PRBool *aMetaKey);
440     nsresult GetButton(PRUint16 *aButton);
441     nsresult GetRelatedTarget(nsIDOMEventTarget * *aRelatedTarget);
442     nsresult InitMouseEvent(const nsAString *typeArg, PRBool canBubbleArg, PRBool cancelableArg,
443             nsIDOMAbstractView *viewArg, PRInt32 detailArg, PRInt32 screenXArg, PRInt32 screenYArg,
444             PRInt32 clientXArg, PRInt32 clientYArg, PRBool ctrlKeyArg, PRBool altKeyArg,
445             PRBool shiftKeyArg, PRBool metaKeyArg, PRUint16 buttonArg,
446             nsIDOMEventTarget *relatedTargetArg);
447 }
448
449 [
450      object,
451      uuid(3e5432cd-9568-4bd1-8cbe-d50aba110743)
452 ]
453 interface nsIEmbeddingSiteWindow : nsISupports
454 {
455     nsresult SetDimensions(PRUint32 flags, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy);
456     nsresult GetDimensions(PRUint32 flags, PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy);
457     nsresult SetFocus();
458     nsresult GetVisibility(PRBool *aVisibility);
459     nsresult SetVisibility(PRBool aVisibility);
460     nsresult GetTitle(PRUnichar **aTitle);
461     nsresult SetTitle(const PRUnichar *aTitle);
462     nsresult GetSiteWindow(void **aSiteWindow);
463 }
464
465 [
466      object,
467      uuid(2417cbfe-65ad-48a6-b4b6-eb84db174392)
468 ]
469 interface nsIComponentRegistrar : nsISupports
470 {
471     nsresult AutoRegister(nsIFile *aSpec);
472     nsresult AutoUnregister(nsIFile *aSpec);
473     nsresult RegisterFactory(const nsCID *aClass, const char *aClassName,
474             const char *aContractID, nsIFactory *aFactory);
475     nsresult UnregisterFactory(const nsCID *aClass, nsIFactory *aFactory);
476     nsresult RegisterFactoryLocation(const nsCID *aClass, const char *aClassName,
477             const char *aContractID, nsIFile *aFile, const char *aLoaderStr,
478             const char *aType);
479     nsresult UnregisterFactoryLocation(const nsCID *aClass, nsIFile *aFile);
480     nsresult IsCIDRegistered(const nsCID *aClass, PRBool *_retval);
481     nsresult IsContractIDRegistered(const char *aContractID, PRBool *_retval);
482     nsresult EnumerateCIDs(nsISimpleEnumerator **_retval);
483     nsresult EnumerateContractIDs(nsISimpleEnumerator **_retval);
484     nsresult CIDToContractID(const nsCID *aClass, char **_retval);
485     nsresult ContractIDToCID(const char *aContractID, nsCID **_retval);
486 }
487
488 [
489     object,
490     uuid(1630c61a-325e-49ca-8759-a31b16c47aa5)
491 ]
492 interface nsIPromptService : nsISupports
493 {
494     nsresult Alert(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
495             const PRUnichar *aText);
496     nsresult AlertCheck(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
497             const PRUnichar *aText, const PRUnichar *aCheckMsg, PRBool *aCheckState);
498     nsresult Confirm(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
499             const PRUnichar *aText, PRBool *_retval);
500     nsresult ConfirmCheck(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
501             const PRUnichar *aText, const PRUnichar *aCheckMsg, PRBool *aCheckState,
502             PRBool *_retval);
503     nsresult ConfirmEx(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
504             const PRUnichar *aText, PRUint32 aButtonFlags, const PRUnichar *aButton0Title,
505             const PRUnichar *aButton1Title, const PRUnichar *aButton2Title,
506             const PRUnichar *aCheckMsg, PRBool *aCheckState, PRInt32 *_retval);
507     nsresult Prompt(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
508             const PRUnichar *aText, PRUnichar **aValue, const PRUnichar *aCheckMsg,
509             PRBool *aCheckState, PRBool *_retval);
510     nsresult PromptUsernameAndPassword(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
511             const PRUnichar *aText, PRUnichar **aUsername, PRUnichar **aPassword,
512             const PRUnichar *aCheckMsg, PRBool *aCheckState, PRBool *_retval);
513     nsresult PromptPassword(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
514             const PRUnichar *aText, PRUnichar **aPassword, const PRUnichar *aCheckMsg,
515             PRBool *aCheckState, PRBool *_retval);
516     nsresult Select(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle,
517             const PRUnichar *aText, PRUint32 aCount, const PRUnichar **aSelectList,
518             PRInt32 *aOutSelection, PRBool *_retval);
519 }
520
521 [
522     object,
523     uuid(02b0625a-e7f3-11d2-9f5a-006008a6efe9)
524 ]
525 interface nsIProfile : nsISupports
526 {
527     nsresult GetProfileCount(PRInt32 *aProfileCount);
528     nsresult GetProfileList(PRUint32 *length, PRUnichar ***profileNames);
529     nsresult ProfileExists(const PRUnichar *profileName, PRBool *_retval);
530     nsresult GetCurrentProfile(PRUnichar * *aCurrentProfile);
531     nsresult SetCurrentProfile(const PRUnichar * aCurrentProfile);
532     nsresult ShutDownCurrentProfile(PRUint32 shutDownType);
533     nsresult CreateNewProfile(const PRUnichar *profileName,
534             const PRUnichar *nativeProfileDir, const PRUnichar *langcode,
535             PRBool useExistingDir);
536     nsresult RenameProfile(const PRUnichar *oldName, const PRUnichar *newName);
537     nsresult DeleteProfile(const PRUnichar *name, PRBool canDeleteFiles);
538     nsresult CloneProfile(const PRUnichar *profileName);
539 }