From e1ce0eba22186a4327c721bd84a68aee6330b960 Mon Sep 17 00:00:00 2001 From: "tbogard%aol.net" Date: Tue, 24 Aug 1999 05:47:30 +0000 Subject: [PATCH] Moving Event loop interfaces to it's new home from xpcom/apps. Implementation will start here. Also renamed msg to be event to be less windows-ish. git-svn-id: svn://10.0.0.236/trunk@44257 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/xpcom/appshell/Makefile.in | 30 +++ mozilla/xpcom/appshell/eventloop/makefile.win | 23 ++ .../appshell/eventloop/windows/makefile.win | 27 +++ .../eventloop/windows/nsIWinEvent.idl | 12 ++ .../eventloop/windows/nsIWinEventFilter.idl | 14 ++ .../xpcom/appshell/eventloop/xp/makefile.win | 30 +++ .../eventloop/xp/nsIDispatchListener.idl | 44 ++++ .../xpcom/appshell/eventloop/xp/nsIEvent.idl | 11 + .../appshell/eventloop/xp/nsIEventFilter.idl | 11 + .../appshell/eventloop/xp/nsIEventLoop.idl | 200 ++++++++++++++++++ .../eventloop/xp/nsITranslateListener.idl | 45 ++++ mozilla/xpcom/appshell/makefile.win | 22 ++ mozilla/xpcom/appshell/nativeApp/makefile.win | 26 +++ .../xpcom/appshell/nativeApp/nsINativeApp.idl | 59 ++++++ 14 files changed, 554 insertions(+) create mode 100644 mozilla/xpcom/appshell/Makefile.in create mode 100644 mozilla/xpcom/appshell/eventloop/makefile.win create mode 100644 mozilla/xpcom/appshell/eventloop/windows/makefile.win create mode 100644 mozilla/xpcom/appshell/eventloop/windows/nsIWinEvent.idl create mode 100644 mozilla/xpcom/appshell/eventloop/windows/nsIWinEventFilter.idl create mode 100644 mozilla/xpcom/appshell/eventloop/xp/makefile.win create mode 100644 mozilla/xpcom/appshell/eventloop/xp/nsIDispatchListener.idl create mode 100644 mozilla/xpcom/appshell/eventloop/xp/nsIEvent.idl create mode 100644 mozilla/xpcom/appshell/eventloop/xp/nsIEventFilter.idl create mode 100644 mozilla/xpcom/appshell/eventloop/xp/nsIEventLoop.idl create mode 100644 mozilla/xpcom/appshell/eventloop/xp/nsITranslateListener.idl create mode 100644 mozilla/xpcom/appshell/makefile.win create mode 100644 mozilla/xpcom/appshell/nativeApp/makefile.win create mode 100644 mozilla/xpcom/appshell/nativeApp/nsINativeApp.idl diff --git a/mozilla/xpcom/appshell/Makefile.in b/mozilla/xpcom/appshell/Makefile.in new file mode 100644 index 00000000000..53ee7f320d0 --- /dev/null +++ b/mozilla/xpcom/appshell/Makefile.in @@ -0,0 +1,30 @@ +#!gmake +# +# The contents of this file are subject to the Netscape Public License +# Version 1.0 (the "NPL"); you may not use this file except in +# compliance with the NPL. You may obtain a copy of the NPL at +# http://www.mozilla.org/NPL/ +# +# Software distributed under the NPL is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL +# for the specific language governing rights and limitations under the +# NPL. +# +# The Initial Developer of this code under the NPL is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All Rights +# Reserved. + +DEPTH = ../.. +topsrcdir = @top_srcdir@ +VPATH = @srcdir@ +srcdir = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +DIRS = eventloop nativeApp + +include $(topsrcdir)/config/config.mk + +include $(topsrcdir)/config/rules.mk + diff --git a/mozilla/xpcom/appshell/eventloop/makefile.win b/mozilla/xpcom/appshell/eventloop/makefile.win new file mode 100644 index 00000000000..2c4eab1199a --- /dev/null +++ b/mozilla/xpcom/appshell/eventloop/makefile.win @@ -0,0 +1,23 @@ +#!nmake +# +# The contents of this file are subject to the Netscape Public License +# Version 1.0 (the "NPL"); you may not use this file except in +# compliance with the NPL. You may obtain a copy of the NPL at +# http://www.mozilla.org/NPL/ +# +# Software distributed under the NPL is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL +# for the specific language governing rights and limitations under the +# NPL. +# +# The Initial Developer of this code under the NPL is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All Rights +# Reserved. + +DEPTH=..\..\.. + +DIRS=xp windows + +include <$(DEPTH)\config\rules.mak> +include <$(DEPTH)\config\config.mak> diff --git a/mozilla/xpcom/appshell/eventloop/windows/makefile.win b/mozilla/xpcom/appshell/eventloop/windows/makefile.win new file mode 100644 index 00000000000..67d6b921ac2 --- /dev/null +++ b/mozilla/xpcom/appshell/eventloop/windows/makefile.win @@ -0,0 +1,27 @@ +#!nmake +# +# The contents of this file are subject to the Netscape Public License +# Version 1.0 (the "NPL"); you may not use this file except in +# compliance with the NPL. You may obtain a copy of the NPL at +# http://www.mozilla.org/NPL/ +# +# Software distributed under the NPL is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL +# for the specific language governing rights and limitations under the +# NPL. +# +# The Initial Developer of this code under the NPL is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All Rights +# Reserved. + +DEPTH=..\..\..\.. +MODULE=xpcom_eventloop_windows + +XPIDLSRCS= \ + .\nsIWinEvent.idl \ + .\nsIWinEventFilter.idl \ + $(NULL) + +include <$(DEPTH)\config\rules.mak> +include <$(DEPTH)\config\config.mak> diff --git a/mozilla/xpcom/appshell/eventloop/windows/nsIWinEvent.idl b/mozilla/xpcom/appshell/eventloop/windows/nsIWinEvent.idl new file mode 100644 index 00000000000..a3b6ab92cfb --- /dev/null +++ b/mozilla/xpcom/appshell/eventloop/windows/nsIWinEvent.idl @@ -0,0 +1,12 @@ +#include "nsISupports.idl" +#include "nsIEvent.idl" + +/** + * The nsIWinEvent defines what a message looks like on the Windows Platform. + */ + +[scriptable, uuid(2EFB5005-4508-11d3-AEDA-00A024FFC08C)] +interface nsIWinEvent : nsIEvent +{ + //XXX Place the contents of a Windows MSG struct here. +}; \ No newline at end of file diff --git a/mozilla/xpcom/appshell/eventloop/windows/nsIWinEventFilter.idl b/mozilla/xpcom/appshell/eventloop/windows/nsIWinEventFilter.idl new file mode 100644 index 00000000000..7af16040038 --- /dev/null +++ b/mozilla/xpcom/appshell/eventloop/windows/nsIWinEventFilter.idl @@ -0,0 +1,14 @@ +#include "nsISupports.idl" +#include "nsIEventFilter.idl" + +/** + * The nsIWinEventFilter defines what a message filter looks like on the Windows + * Platform. + */ + +[scriptable, uuid(2EFB5006-4508-11d3-AEDA-00A024FFC08C)] +interface nsIWinEventFilter : nsIEventFilter +{ + //XXX Place the contents of a Windows MSG struct here. + //As well as other needed filtering criteria. +}; \ No newline at end of file diff --git a/mozilla/xpcom/appshell/eventloop/xp/makefile.win b/mozilla/xpcom/appshell/eventloop/xp/makefile.win new file mode 100644 index 00000000000..871d6b3d133 --- /dev/null +++ b/mozilla/xpcom/appshell/eventloop/xp/makefile.win @@ -0,0 +1,30 @@ +#!nmake +# +# The contents of this file are subject to the Netscape Public License +# Version 1.0 (the "NPL"); you may not use this file except in +# compliance with the NPL. You may obtain a copy of the NPL at +# http://www.mozilla.org/NPL/ +# +# Software distributed under the NPL is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL +# for the specific language governing rights and limitations under the +# NPL. +# +# The Initial Developer of this code under the NPL is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All Rights +# Reserved. + +DEPTH=..\..\..\.. +MODULE=xpcom_eventloop_xp + +XPIDLSRCS= \ + .\nsIDispatchListener.idl \ + .\nsIEventLoop.idl \ + .\nsIEventFilter.idl \ + .\nsIEvent.idl \ + .\nsITranslateListener.idl \ + $(NULL) + +include <$(DEPTH)\config\rules.mak> +include <$(DEPTH)\config\config.mak> diff --git a/mozilla/xpcom/appshell/eventloop/xp/nsIDispatchListener.idl b/mozilla/xpcom/appshell/eventloop/xp/nsIDispatchListener.idl new file mode 100644 index 00000000000..c581df35441 --- /dev/null +++ b/mozilla/xpcom/appshell/eventloop/xp/nsIDispatchListener.idl @@ -0,0 +1,44 @@ +#include "nsISupports.idl" +#include "nsIEvent.idl" + +/** + * The nsIDispatchListener defines the callback listener interface that + * can be passed to the Run routine on and event loop. This allows + * application override or additions to the default dispatching event mechanism. + */ + +[scriptable, uuid(2EFB5007-4508-11d3-AEDA-00A024FFC08C)] +interface nsIDispatchListener : nsISupports +{ + /* Called just before the nsIEventLoop::DispatchMessage() is called. + This allows a listener first crack at dispatching Messages. The + listener can then control if DispatchMessage() is called via the + return. + + @param msg This is the native message that has been retrieved from the Queue + and awaiting dispatching. + + @return NS_OK - Indicates nsIEventLoop::DispatchMessage() should be called + following the return from this function. + NS_FALSE - Processing went successfully, but + nsIEventLoop::DispatchMessage() should not be called. + NS_ERROR_FAILURE - Catastrophic processing failure. Event loop should + die immediately. + */ + void PreDispatch(in nsIEvent msg); + + /* + Called just after the nsIEventLoop::DispatchMessage() has been called. + + @param msg This is the native message that has been retrieved from the Queue + and awaiting dispatching. + + @param fDispatchHandled Indicates if nsIEventLoop::DispatchMessage() handled + the message being passed in. + + @return NS_OK - Processing completed fine. + NS_ERROR_FAILURE - Catastrophic processing failure. Event loop + should die immediately. + */ + void PostDispatch(in nsIEvent msg, in boolean fDispatchHandled); +}; \ No newline at end of file diff --git a/mozilla/xpcom/appshell/eventloop/xp/nsIEvent.idl b/mozilla/xpcom/appshell/eventloop/xp/nsIEvent.idl new file mode 100644 index 00000000000..bb3d485d928 --- /dev/null +++ b/mozilla/xpcom/appshell/eventloop/xp/nsIEvent.idl @@ -0,0 +1,11 @@ +#include "nsISupports.idl" + +/** + * The nsIEvent serves as a base interface for the platform specific + * interfaces that define what an event looks like. + */ + +[scriptable, uuid(2EFB5004-4508-11d3-AEDA-00A024FFC08C)] +interface nsIEvent : nsISupports +{ +}; \ No newline at end of file diff --git a/mozilla/xpcom/appshell/eventloop/xp/nsIEventFilter.idl b/mozilla/xpcom/appshell/eventloop/xp/nsIEventFilter.idl new file mode 100644 index 00000000000..ce770f7c810 --- /dev/null +++ b/mozilla/xpcom/appshell/eventloop/xp/nsIEventFilter.idl @@ -0,0 +1,11 @@ +#include "nsISupports.idl" + +/** + * The nsIEventFilter serves as a base interface for the platform specific + * interfaces that define what a filter message looks like. + */ + +[scriptable, uuid(2EFB5003-4508-11d3-AEDA-00A024FFC08C)] +interface nsIEventFilter : nsISupports +{ +}; \ No newline at end of file diff --git a/mozilla/xpcom/appshell/eventloop/xp/nsIEventLoop.idl b/mozilla/xpcom/appshell/eventloop/xp/nsIEventLoop.idl new file mode 100644 index 00000000000..c510f3e295b --- /dev/null +++ b/mozilla/xpcom/appshell/eventloop/xp/nsIEventLoop.idl @@ -0,0 +1,200 @@ +#include "nsISupports.idl" +#include "nsIEventFilter.idl" +#include "nsIEvent.idl" +#include "nsIDispatchListener.idl" +#include "nsITranslateListener.idl" + + +typedef long nsEventLoopType; + +/* + There are three basic types of Event Loops that can exist in a system. + 1.) There is the Main Event loop that services the application. This + is typically what would be found at the bottom of a main(). Event loops + of this type are specified with the 'MainAppLoop' type. There can only + be one of these per Application. It is also important to note that + Run() called on a Loop of this type blocks until the loop exits. + 2.) User-interface threads are distinct from worker threads in that they + provide an event loop that services native system events. This is the loop + that that is found at the bottom of the ThreadMain often looking very + similar to the one found in main(). Event loops of this type are specified + with the 'ThreadLoop' type. There can only be one of these per thread.It is + also important to note that Run() called on a Loop of this type blocks + until the loop exits. + 3.) The third type of loop that exists is one that is done to allow the + application and sytem to "breathe". This loop is often invoked from various + places on the stack virtually always with the main thread loop living down + the stack in some fashion. Great care should be taken in using loops of + this kind. Event loops of this type are specified with the 'AppBreathLoop' + type. There can be as many of these per application as the application + wishes to create. This loop is different than others with respect to the + way Run() works on events of this type. Run() will return once the app + has had suffiecient breathe time. This may be once the event queue is + empty or may be after a specified yield time. As loops of this type aren't + tied to the life of a thread or app, the return from Run() does not + indicate the desire to end a thread or app either. + + + ******* Talk about life of a loop of these types ****** + +*/ + +[scriptable, uuid(2EFB5002-4508-11d3-AEDA-00A024FFC08C)] +interface nsEventLoopTypes +{ + const long MainAppLoop = 1; + const long ThreadLoop = 2; + const long AppBreathLoop = 3; +}; + +/** + * The nsIEventLoop provides the facilities to interfact with a native + * application event queue. + */ + +[scriptable, uuid(2EFB5001-4508-11d3-AEDA-00A024FFC08C)] +interface nsIEventLoop : nsISupports +{ + /******** High Level App Usage *******/ + + /* Runs the Event Loop. This is a blocking call, it will return when the + application or OS has indicated the loop should quit. This is a convience + function that can be recreated by a client of this interface using the + low-level methods. Unless the application truly needs to handle events + on it's own, it is suggested that this method be used rather than manually + creating the event loop. To end an event loop one can call the Exit() + method on the nsIEventLoop interface. + + In the case of a AppBreathLoop this blocks the app has had suffiecient + "breathe" time. This may be once the event queue is empty or may be after + a specified yield time. As loops of this type aren't tied to the life of + a thread or app, the return from Run() does not indicate the desire to end + a thread or app either. + + @param filter Message Filter for handling of events in this loop. If the + application wishes to select ranges for message + it can pass in a filter. This may be null. + @param translateListener Callback called for application specific tranlation + of events. This should be null unless the calling + application really needs to override the default translation. + @param dispatchListener Callback called for application specific dispatching + of events. This should be null unless the calling application + really needs to override the default processing. + */ + // Bool for nested PL_Events. + + void Run(in nsIEventFilter filter, in nsITranslateListener translateListener, + in nsIDispatchListener dispatchListener); + + /* Exits the Event loop referred to by the instantiation of this interface + */ + void Exit(); + + /******* Low Level Loop Management *****/ + + /* This retrieves the next message in the queue for this event loop. + If there are no messages in the queue, GetNextMessage will wait for + messages to be placed in the queue offering control up to other applications + while waiting. When an event to exit the queue is retrieved, GetNextMessage + will return NS_FALSE to indicate the loop should finish. + + @param filter Message Filter for handling of events in this loop. If the + application wishes to select ranges for message + it can pass in a filter. This may be null. + @param msg This is the message returned from the queue. Each platform can + QI on this returned interface to get the platform specific + message contents. This interface is addrefd and must be + released when processing is complete. + @return NS_OK - msg has been retrieved and ready to be processed. + NS_FALSE - An exit event has been signalled. msg will be null. + NS_ERROR_FAILURE - Internal failure, ignore all results and + cease use of loop. + */ + void GetNextMessage(in nsIEventFilter filter, out nsIEvent msg); + + /* This retrieves the next message in the queue for this event loop. + If there are no messages in the queue, unlike GetNextMessage, + PeekNextMessage will return immediately with NS_FALSE. + messages to be placed in the queue offering control up to other applications + while waiting. When an event to exit the queue is retrieved, GetNextMessage + will return NS_FALSE to indicate the loop should finish. + + @param filter Message Filter for handling of events in this loop. If the + application wishes to select ranges for message + it can pass in a filter. This may be null. + @param msg This is the message returned from the queue. Each platform can + QI on this returned interface to get the platform specific + message contents. This interface is addrefd and must be + released when processing is complete. + @return NS_OK - msg has been retrieved and ready to be processed. + NS_FALSE - There are no more messages to retrieve. msg will be null. + NS_ERROR_FAILURE - Internal failure, ignore all results and + cease use of loop. + */ + void PeekNextMessage(in nsIEventFilter filter, out nsIEvent msg); + + /* This does any pre-processing of the message that may be needed. + @param msg This is the message returned from the queue. Each platform can + QI on this returned interface to get the platform specific + message contents. This interface is addrefd and must be + released when processing is complete. + @return NS_OK - Translated Message. + NS_FALSE - Was unable to Translate Message, but this is normal. + NS_ERROR_FAILURE - Catastrophic processing failure. Event loop + should die immediately. + */ + void TranslateMessage(in nsIEvent msg); + + /* This does any pre-processing of the message that may be needed. + @param msg This is the message returned from the queue. Each platform can + QI on this returned interface to get the platform specific + message contents. This interface is addrefd and must be + released when processing is complete. + @return NS_OK - Processed and Dispatched Message. + NS_FALSE - Was unable to Dispatch Message, but this is normal. + NS_ERROR_FAILURE - Catastrophic processing failure. Event loop + should die immediately. + */ + + void DispatchMessage(in nsIEvent msg); + + /******* Loop Manipulation ******/ + + /* Puts a Message on the event loop referred to by the interface pointer + and waits for the message to be processed. + + @param msg This is the message returned from the queue. Each platform can + QI on this returned interface to get the platform specific + message contents. This interface is addrefd and must be + released when processing is complete. + @return NS_OK - Message Sent and Processed. + NS_FALSE - Message was Sent but was unable to wait for event + processing. + NS_ERROR_INVALID_ARG - Message passed in was mal-formed. + NS_ERROR_FAILURE - Catastrophic processing failure. + + */ + void SendLoopMessage(in nsIEvent msg); + + /* Puts a Message on the event loop referred to by the interface pointer + and then returns immediately not waiting for the message to be processed. + + @param msg This is the message returned from the queue. Each platform can + QI on this returned interface to get the platform specific + message contents. This interface is addrefd and must be + released when processing is complete. + @return NS_OK - Message was placed on the event queue. + NS_ERROR_INVALID_ARG - Message passed in was mal-formed. + NS_ERROR_FAILURE - Catastrophic processing failure. + + */ + void PostLoopMessage(in nsIEvent msg); + + /******* Event Loop Information ******/ + + /* Specifies the type of the event loop. This was set upon creation. */ + readonly attribute nsEventLoopType EventLoopType; + + /* Specifies the name of the event loop. This was set upon creation. */ + readonly attribute wstring EventLoopName; +}; \ No newline at end of file diff --git a/mozilla/xpcom/appshell/eventloop/xp/nsITranslateListener.idl b/mozilla/xpcom/appshell/eventloop/xp/nsITranslateListener.idl new file mode 100644 index 00000000000..8d8538b9d1e --- /dev/null +++ b/mozilla/xpcom/appshell/eventloop/xp/nsITranslateListener.idl @@ -0,0 +1,45 @@ +#include "nsISupports.idl" +#include "nsIEvent.idl" + +/** + * The nsITranslateListener defines the callback listener interface that + * can be passed to the Run routine on and event loop. This allows + * application overriding or additions to the default event translation + * mechanism. + */ + +[scriptable, uuid(2EFB5008-4508-11d3-AEDA-00A024FFC08C)] +interface nsITranslateListener : nsISupports +{ + /* Called just before the nsIEventLoop::TranslateMessage() is called. + This allows a listener first crack at translating Messages. The + listener can then control if TranslateMessage() is called via the + return. + + @param msg This is the native message that has been retrieved from the Queue + and awaiting dispatching. + + @return NS_OK - Indicates nsIEventLoop::TranslateMessage() should be called + following the return from this function. + NS_FALSE - Translating went successfully, but + nsIEventLoop::TranlateMessage() should not be called. + NS_ERROR_FAILURE - Catastrophic processing failure. Event loop should + die immediately. + */ + void PreTranslate(in nsIEvent msg); + + /* + Called just after the nsIEventLoop::TranslateMessage() has been called. + + @param msg This is the native message that has been retrieved from the Queue + and awaiting dispatching. + + @param fTranslateHandled Indicates if nsIEventLoop::TranslateMessage() handled + the message being passed in. + + @return NS_OK - Processing completed fine. + NS_ERROR_FAILURE - Catastrophic processing failure. Event loop + should die immediately. + */ + void PostTranslate(in nsIEvent msg, in boolean fTranslateHandled); +}; \ No newline at end of file diff --git a/mozilla/xpcom/appshell/makefile.win b/mozilla/xpcom/appshell/makefile.win new file mode 100644 index 00000000000..d7528c8a1fd --- /dev/null +++ b/mozilla/xpcom/appshell/makefile.win @@ -0,0 +1,22 @@ +#!nmake +# +# The contents of this file are subject to the Netscape Public License +# Version 1.0 (the "NPL"); you may not use this file except in +# compliance with the NPL. You may obtain a copy of the NPL at +# http://www.mozilla.org/NPL/ +# +# Software distributed under the NPL is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL +# for the specific language governing rights and limitations under the +# NPL. +# +# The Initial Developer of this code under the NPL is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All Rights +# Reserved. + +DEPTH=..\.. + +DIRS=eventloop nativeApp + +include <$(DEPTH)\config\rules.mak> diff --git a/mozilla/xpcom/appshell/nativeApp/makefile.win b/mozilla/xpcom/appshell/nativeApp/makefile.win new file mode 100644 index 00000000000..35283b39627 --- /dev/null +++ b/mozilla/xpcom/appshell/nativeApp/makefile.win @@ -0,0 +1,26 @@ +#!nmake +# +# The contents of this file are subject to the Netscape Public License +# Version 1.0 (the "NPL"); you may not use this file except in +# compliance with the NPL. You may obtain a copy of the NPL at +# http://www.mozilla.org/NPL/ +# +# Software distributed under the NPL is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL +# for the specific language governing rights and limitations under the +# NPL. +# +# The Initial Developer of this code under the NPL is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All Rights +# Reserved. + +DEPTH=..\..\.. +MODULE=xpcom_nativeapp + +XPIDLSRCS= \ + .\nsINativeApp.idl \ + $(NULL) + +include <$(DEPTH)\config\rules.mak> +include <$(DEPTH)\config\config.mak> diff --git a/mozilla/xpcom/appshell/nativeApp/nsINativeApp.idl b/mozilla/xpcom/appshell/nativeApp/nsINativeApp.idl new file mode 100644 index 00000000000..0000ecb5587 --- /dev/null +++ b/mozilla/xpcom/appshell/nativeApp/nsINativeApp.idl @@ -0,0 +1,59 @@ +#include "nsISupports.idl" +#include "nsIEventLoop.idl" + +/** + * The nsINativeAppService provides necessary services to build a native + * application. + */ + + /* + {2EFB5000-4508-11d3-AEDA-00A024FFC08C} - + {2EFB5100-4508-11d3-AEDA-00A024FFC08C} have been reserved for Native App + Service Interfaces. + + Currently Used: + {2EFB5000-4508-11d3-AEDA-00A024FFC08C} - nsINativeApp + {2EFB5001-4508-11d3-AEDA-00A024FFC08C} - nsIEventLoop + {2EFB5002-4508-11d3-AEDA-00A024FFC08C} - nsEventLoopTypes + {2EFB5003-4508-11d3-AEDA-00A024FFC08C} - nsIEventFilter + {2EFB5004-4508-11d3-AEDA-00A024FFC08C} - nsIEvent + {2EFB5005-4508-11d3-AEDA-00A024FFC08C} - nsIWinEvent + {2EFB5006-4508-11d3-AEDA-00A024FFC08C} - nsIWinEventFilter + {2EFB5007-4508-11d3-AEDA-00A024FFC08C} - nsIDispatchListener + {2EFB5008-4508-11d3-AEDA-00A024FFC08C} - nsITranslateListener + + */ + +[scriptable, uuid(2EFB5000-4508-11d3-AEDA-00A024FFC08C)] +interface nsINativeApp : nsISupports +{ + /* Used to Create an Event Loop of a specified Event Loop type. + There can only be one event loop per App of the MainAppLoop type. + There can only be one event loop per thread of the ThreadLoop type. + There can be any number of AppBreathLoop type threads. + + @param EventLoopName This is the name to associate with an event loop. + This allows you to later find the event loop using the FineEventLoop + mechanism. This may be null, but is usually helpful to associate a + name with the loop. + + @param type This is the event Loop type. Look at the various types + described in nsEventLoopType const definitions. + + @param eventLoop This is the return created event loop. + + @return NS_OK - Event Loop was created successfully. + NS_ERROR_INVALID_ARG - There is already an event loop for the + requested type and there can not be more than one. + NS_ERROR_INVALID_POINTER - eventLoop was null. + NS_ERROR_FAILURE - Internal error and event loop couldn't be + created. + */ + void CreateEventLoop(in wstring EventLoopName, in nsEventLoopType type, + out nsIEventLoop eventLoop); + + /* Used to find a previously created event loop. + + */ + void FindEventLoop(in wstring EventLoopName, out nsIEventLoop eventLoop); +}; \ No newline at end of file