exorcise xp.h from compose header files, in preparation for nsIModule landing

r=sspitzer
This commit is contained in:
alecf%netscape.com 1999-10-07 23:55:42 +00:00
Родитель 8cd1b485cd
Коммит 1271723969
7 изменённых файлов: 15 добавлений и 412 удалений

Просмотреть файл

@ -24,7 +24,9 @@
#define _MSGCOM_H_
#include "rosetta.h"
#if 0
#include "libmime.h"
#endif
#define SUBSCRIBE_USE_OLD_API
@ -64,9 +66,11 @@
*/
#if 0
#include "xp_mcom.h"
#include "xp_core.h"
#include "ntypes.h"
#endif
#include "msgtypes.h"
/* ===========================================================================
@ -778,8 +782,6 @@ class AB_ContainerInfo;
typedef struct AB_ContainerInfo AB_ContainerInfo;
#endif
/* used in MWContext to communicate IMAP stuff between libmsg and libnet */
#ifdef XP_CPLUSPLUS
class MSG_IMAPFolderInfoMail;
class TImapServerState;
@ -1107,185 +1109,7 @@ int32 MSG_SetDBCacheSize(int32 newCacheSize);
extern MSG_Master* MSG_InitializeMail(MSG_Prefs* prefs);
/* Routines to create the various panes. Those panes that require a true
MWContext* take it as a parameter. Any given thread pane is always
associated with a particular folder pane; any given message pane is always
associated with a particular thread pane.
The entire creation process goes like this:
- The FE decides to create a new pane.
- The FE creates any necessary contexts and maybe some windows and stuff
that it will associate with the pane.
- The FE calls MSG_Create*Pane() to create the pane object itself. When
creating a folderpane, the FE must also provide a pointer to a MSG_Prefs
object that contains the preferences to be used for the folderpane. The FE
must be sure not to destroy that MSG_Prefs object as long as the folderpane
exists. Any later change made to the MSG_Prefs will automatically be
reflected in the folderpane and all related panes. (Also note that when
creating a folderpane, msglib uses the context type to determine whether
this is for mail or news.)
- The FE puts the resulting pane structure into its datastructures
somewhere, and probably calls MSG_SetFEData() to assocatiate that
datastructure with the pane.
*/
extern MSG_Pane* MSG_CreateFolderPane(MWContext* context,
MSG_Master* master);
extern MSG_Pane* MSG_CreateThreadPane(MWContext* context,
MSG_Master* master);
extern MSG_Pane* MSG_CreateMessagePane(MWContext* context,
MSG_Master* master);
extern int MSG_SetMessagePaneCallbacks(MSG_Pane* messagepane,
MSG_MessagePaneCallbacks* callbacks,
void* closure);
extern MSG_MessagePaneCallbacks*
MSG_GetMessagePaneCallbacks(MSG_Pane* messagepane, void** closure);
extern MSG_Pane* MSG_CreateCompositionPane(MWContext* context,
MWContext* old_context,
MSG_Prefs* prefs,
MSG_CompositionFields* fields,
MSG_Master* master);
extern int
MSG_SetCompositionPaneCallbacks(MSG_Pane* composepane,
MSG_CompositionPaneCallbacks* callbacks,
void* closure);
/* Typically, progress panes come down when you receive all connections complete,
or you get a FE_PaneChanged MSG_PaneProgressDone, which gets sent when a
command runs in a progress pane which doesn't launch a url.
*/
extern MSG_Pane* MSG_CreateProgressPane (MWContext *context,
MSG_Master *master,
MSG_Pane *parentPane);
/* WinFE (at least) has found that creating the composition pane in one swell
foop is too much to handle. They really want to create the pane pointer,
but not start its initializing until some later point. (The reason this is
nasty is that composition pane initialization can sometimes happen in the
background as we download attachments.) So, if you don't want to call
MSG_CreateCompositionPane(), you can instead call
MSG_CreateCompositionPaneNoInit() and then soon call
MSG_InitializeCompositionPane(). What fun. */
extern MSG_Pane* MSG_CreateCompositionPaneNoInit(MWContext* context,
MSG_Prefs* prefs,
MSG_Master* master);
extern int MSG_InitializeCompositionPane(MSG_Pane* comppane,
MWContext* old_context,
MSG_CompositionFields* fields);
extern MSG_Pane* MSG_CreateSearchPane (MWContext *context,
MSG_Master *master);
#ifdef SUBSCRIBE_USE_OLD_API
/* This routine is obsoleted; instead, use MSG_CreateSubscribePaneOnHost(). */
extern MSG_Pane* MSG_CreateSubscribePane(MWContext* context,
MSG_Master* master);
/* Bring up the subscribe UI on the given newshost. If host is NULL,
uses the default newshost. */
extern MSG_Pane* MSG_CreateSubscribePaneOnHost(MWContext* context,
MSG_Master* master,
MSG_NewsHost* host);
#endif /* SUBSCRIBE_USE_OLD_API */
/* Bring up the subscribe UI on the given news or imap host.
If host is NULL, uses the default newshost. */
extern MSG_Pane* MSG_CreateSubscribePaneForHost(MWContext* context,
MSG_Master* master,
MSG_Host* host);
/* Tells the FEs to bring up the subscribe UI on the given news
or imap host. */
extern XP_Bool FE_CreateSubscribePaneOnHost(MSG_Master* master,
MWContext* parentContext,
MSG_Host* host);
/* Message compositions sometimes (usually) get kicked off by the backend
(like, the user clicks on a "mailto" link). So, this call requests the FE
to create a new context, and call MSG_CreateCompositionPane and bring up a
composition window. The given context and MSG_CompositionFields* are to be
passed on to MSG_CreateCompositionPane(), and lets the backend know what the
initial values of all the fields are to be. The FE should then query the
pane (using MSG_GetCompHeader() and MSG_GetCompBody()) so that it can find
out what to display in the UI.
The FE should bring up either the plaintext composition or the html
composition window, depending on the user's preference. One exception,
though: the FE must first check MSG_GetForcePlainText(). If TRUE, then
we are replying to a plaintext message, and the FE *must* bring up the
plaintext composition window.
*/
extern MSG_Pane* FE_CreateCompositionPane(MWContext* old_context,
MSG_CompositionFields* fields,
const char* initialText,
MSG_EditorType editorType);
/* ===========================================================================
RANDOM CORE FUNCTIONS (to sort)
===========================================================================
*/
/* Due to addition of Java/JavaScript MailNews API, other things in addition
to composition can be kicked off by the backend, so we provide the
following FE functions to handle those cases.
*/
/* Ask the FE for the current master. FE should create one if it doesn't exist */
extern MSG_Master* FE_GetMaster();
/* Routines to associate or get arbitrary FE-specific data from a pane. */
extern void MSG_SetFEData(MSG_Pane* pane, void* data);
extern void* MSG_GetFEData(MSG_Pane* pane);
/* Routines to to special things when Netscape mail is not being used */
extern XP_Bool FE_IsAltMailUsed(MWContext * context);
typedef enum {
MSG_IMAPUpgradeAutomatic, /* automatically try to upgrade */
MSG_IMAPUpgradeCustom, /* the user will select folders manually */
MSG_IMAPUpgradeDont /* Cancel or error - don't upgrade now */
} MSG_IMAPUpgradeType;
#if defined(XP_WIN) || defined (XP_MAC) || defined(XP_UNIX) || defined(XP_BEOS)
#define FE_IMPLEMENTS_IMAP_SUBSCRIBE_UPGRADE
#endif
#ifdef FE_IMPLEMENTS_IMAP_SUBSCRIBE_UPGRADE
/* Routine to bring up the IMAP Subscription Upgrade dialog box.
context is the context of the parent of this dialog box;
hostName is the name of the IMAP host which will be upgraded.
*/
extern MSG_IMAPUpgradeType FE_PromptIMAPSubscriptionUpgrade (MWContext * context, const char *hostName);
#endif
/* This function is called by the backend to notify the frontend details about
new mail state so that the FE can notify the stand-alone biff that something
@ -1309,10 +1133,6 @@ typedef enum {
MSG_IMAPDeleteIsDeleteNoTrash /* delete is shift delete - don't create or use trash */
} MSG_IMAPDeleteModel;
/* run the url in the given pane. This will set the msg_pane member
in url, interrupt the context, and then call FE_GetURL */
extern int MSG_GetURL(MSG_Pane *pane, URL_Struct* url);
/* routines to set and get the text type, setting true indicates that the
text is HTML */
@ -1324,24 +1144,10 @@ extern void MSG_SetHTMLMarkup(MSG_Pane * composepane,XP_Bool flag);
extern MSG_PaneType MSG_GetPaneType(MSG_Pane* pane);
/* Finds a pane with the given type. First, it looks for a pane which has the
given context associated with it; failing that, it returns any pane it can
find.
*/
extern MSG_Pane* MSG_FindPane(MWContext* context, MSG_PaneType type);
/* really find the pane of passed type with given context, NULL otherwise */
extern MSG_Pane *MSG_FindPaneOfContext (MWContext *context, MSG_PaneType type);
extern MSG_Pane *MSG_FindPaneOfType(MSG_Master *master, MSG_FolderInfo *id, MSG_PaneType type);
extern MSG_Pane *MSG_FindPaneFromUrl (MSG_Pane *pane, const char *url, MSG_PaneType type);
/* Returns the context associated with a given pane. If this pane doesn't have
a context (i.e., it's a threadpane), then it will return NULL. */
extern MWContext* MSG_GetContext(MSG_Pane* pane);
/* Returns the MSG_Prefs* object that is being used to determine the
preferences for this pane. */
@ -1448,9 +1254,6 @@ extern int MSG_MarkReadByDate (MSG_Pane* pane, time_t startDate, time_t endDate)
/* notification from Server Admin page via JavaScript that an imap folder has changed */
extern void MSG_IMAPFolderChangedNotification(const char *folder_url);
/* record the imap connection in the move state of the current context */
extern void MSG_StoreNavigatorIMAPConnectionInMoveState(MWContext *context,
TNavigatorImapConnection *connection);
/* Determines whether we are currently actually showing the recipients
in the "Sender" column of the display (because we are in the "sent"
@ -1593,9 +1396,6 @@ extern MSG_ViewIndex MSG_ThreadIndexOfMsg(MSG_Pane* pane, MessageKey key);
statically allocated buffer; the caller should copy it somewhere. */
extern const char* MSG_FormatDate(MSG_Pane* pane, time_t date);
/* If you don't have a pane and need to format a date ... */
extern const char* MSG_FormatDateFromContext(MWContext *context, time_t date);
/* Change the priority on a mail message */
extern XP_Bool MSG_SetPriority(MSG_Pane *pane, /* thread or message */
MessageKey key,
@ -1608,10 +1408,6 @@ extern XP_Bool MSG_SetPriority(MSG_Pane *pane, /* thread or message */
The returned filename will be freed using XP_FREE(). */
/* #### this should be replaced with a backup-version-hacking XP_FileOpen */
extern char* FE_GetTempFileFor(MWContext* context, const char* fname,
XP_FileType ftype, XP_FileType* rettype);
@ -1678,14 +1474,6 @@ extern int MSG_ResultsRecipients(MSG_Pane* composepane,
extern void MSG_SetPostDeliveryActionInfo (MSG_Pane* pane,
void *actionInfo);
extern uint32 MSG_GetActionInfoFlags (void *actionInfo);
/* Setting the preloaded attachments to a compose window. Drafts only */
extern int MSG_SetPreloadedAttachments ( MSG_Pane *composepane,
MWContext *context,
void *attachmentData,
void *attachments,
int attachments_count );
#ifdef XP_UNIX
/* This is how the XFE implements non-POP message delivery. The given donefunc
will be called when the incorporate actually finishes, which may be before
@ -1792,11 +1580,6 @@ typedef enum MSG_AdminURLType
MSG_AdminServerLists
} MSG_AdminURLType;
/* use this to run the url */
extern XP_Bool MSG_GetAdminUrlForFolder(MWContext *context, MSG_FolderInfo *folder, MSG_AdminURLType type);
/* use this to decide to show buttons and/or menut items */
extern XP_Bool MSG_HaveAdminUrlForFolder(MSG_FolderInfo *folder, MSG_AdminURLType type);
/* ===========================================================================
LIST CALLBACKS
===========================================================================
@ -2363,10 +2146,6 @@ extern void MSG_FreeAttachmentList(MSG_Pane* messagepane,
/* These return NULL if they fail. Caller must call NET_FreeURLStruct */
extern URL_Struct* MSG_ConstructUrlForPane(MSG_Pane *pane);
extern URL_Struct* MSG_ConstructUrlForMessage(MSG_Pane *pane, MessageKey key);
extern URL_Struct* MSG_ConstructUrlForFolder(MSG_Pane *pane, MSG_FolderInfo *folder);
/* Returns whether the user has asked to rot13 messages displayed in
this pane. (Used by libmime.) */
extern XP_Bool MSG_ShouldRot13Message(MSG_Pane* messagepane);
@ -2410,9 +2189,6 @@ extern void MSG_SetBiffStatFile(const char* filename);
#endif
/* Causes a biff check to occur immediately. This gets caused
automatically by MSG_SetBiffInterval or whenever libmsg gets new mail. */
extern void MSG_BiffCheckNow(MWContext* context);
/* Tell the FE to render in all the right places this latest knowledge as to
whether we have new mail waiting. */
extern void FE_UpdateBiff(MSG_BIFF_STATE state);
/* END OBSOLETE functions */
@ -2426,11 +2202,6 @@ extern void FE_UpdateBiff(MSG_BIFF_STATE state);
are used to see if new mail is available at a particular server or folder.
*/
extern int MSG_BiffInit(MWContext* context, MSG_Prefs* prefs);
extern int MSG_BiffCleanupContext(MWContext* context); /* cleanup */
extern void MSG_Biff_Master_FE_Progress(MWContext *context, char *msg);
extern XP_Bool MSG_Biff_Master_NikiCallingGetNewMail();
/* ===========================================================================
OTHER INTERFACES
@ -2447,29 +2218,12 @@ extern XP_Bool MSG_RequiresNewsWindow (const char *url);
extern XP_Bool MSG_RequiresBrowserWindow (const char *url);
extern XP_Bool MSG_RequiresComposeWindow (const char *url);
/* If this URL requires a particular kind of window, and this is not
that kind of window, then we need to find or create one.
This routine takes a URL_Struct, which allows it to be smarter than
the obsolete routine which takes a url string.
*/
extern XP_Bool MSG_NewWindowRequiredForURL (MWContext *context, URL_Struct *urlStruct);
/* If we're in a mail window, and clicking on a link which will itself
require a mail window, then don't allow this to show up in a different
window - since there can be only one mail window.
*/
extern XP_Bool MSG_NewWindowProhibited (MWContext *context, const char *url);
/* When the front end loads a url, it needs to know what kind of pane the url
should be loaded into.
*/
extern MSG_PaneType MSG_PaneTypeForURL(const char *url);
/* Returns the number of bytes available on the disk where the given directory
is - this is so we know whether there is room to incorporate new mail. */
extern uint32 FE_DiskSpaceAvailable (MWContext* context, const char* dir);
/* Counts bytes for a POP3 message being downloaded and returns TRUE if it is
too early to have a message ended because we found CRLF.CRLF
*/
@ -2529,53 +2283,6 @@ extern XP_Bool MSG_GetNewsSigningPreference(void);
===========================================================================
*/
/* This is how the `mailto' parser asks the message library to create a
message composition window. That window has its own context. The
`old_context' arg is the context from which the mailto: URL was loaded.
It may be NULL.
Any of the fields may be 0 or "". Some of them (From, BCC, Organization,
etc) will be given default values if none is provided.
This returns the new composition pane.
*/
extern MSG_Pane* MSG_ComposeMessage(MWContext *old_context,
const char *from,
const char *reply_to,
const char *to,
const char *cc,
const char *bcc,
const char *fcc,
const char *newsgroups,
const char *followup_to,
const char *organization,
const char *subject,
const char *references,
const char *other_random_headers,
const char *priority,
const char *attachment,
const char *newspost_url,
const char *body,
XP_Bool force_plain_text,
const char* html_part);
extern MSG_CompositionFields* MSG_CreateCompositionFields(
const char *from,
const char *reply_to,
const char *to,
const char *cc,
const char *bcc,
const char *fcc,
const char *newsgroups,
const char *followup_to,
const char *organization,
const char *subject,
const char *references,
const char *other_random_headers,
const char *priority,
const char *attachment,
const char *newspost_url);
extern void MSG_DestroyCompositionFields(MSG_CompositionFields *fields);
/* Tell the FE that something has changed in the composition (like, we
@ -2584,12 +2291,6 @@ extern void MSG_DestroyCompositionFields(MSG_CompositionFields *fields);
extern void FE_UpdateCompToolbar(MSG_Pane* comppane);
/* Tell the FE that we're all done with the given context (which was associated
with a composition pane that we're destroying). Presumably, the FE will
then destroy the context. */
extern void FE_DestroyMailCompositionContext(MWContext* context);
/* Determines whether this is a mail composition that ought to have a "quote
message" operation done at startup. If so, the FE must call
@ -2746,37 +2447,15 @@ extern int MSG_SanityCheck(MSG_Pane* comppane, int skippast);
/* Get the URL associated with this context (the "X-Url" field.) */
extern const char* MSG_GetAssociatedURL(MSG_Pane* comppane);
/* This is completely foul, but the FE needs to call this from within
FE_AllConnectionsComplete() when the context->type is
MWContextMessageComposition.
*/
extern void MSG_MailCompositionAllConnectionsComplete (MSG_Pane* pane);
/* */
/* Bring up the dialog box that presents the user with the list of domains that
have been marked for HTML, and let the user edit them. */
extern int MSG_DisplayHTMLDomainsDialog(MWContext* context);
/* Returns whether the given folderinfo represents a newsgroup where
HTML postings are OK. This is to be used in the property dialog
for that newsgroup. This call should only be done on newsgroups. */
extern XP_Bool MSG_IsHTMLOK(MSG_Master* master, MSG_FolderInfo* group);
/* Sets whether the given newsgroup can have HTML. This can potentially
pop up a confirmation window, so we ask for a MWContext* to use for that
(yick). The folderinfo provided must represent a newsgroup. This is to
be used in the property dialog for that newsgroup. */
extern int MSG_SetIsHTMLOK(MSG_Master* master, MSG_FolderInfo* group,
MWContext* context, XP_Bool value);
/* Utility function that prefixes each line with "> " (for Paste As Quote). */
@ -2839,30 +2518,6 @@ MSG_GetAttachmentList(MSG_Pane* comppane);
*/
extern MSG_HEADER_SET MSG_GetInterestingHeaders(MSG_Pane* comppane);
/* This function creates a new, blank mail message composition window. It
causes calls to FE_CreateCompositionPane, which should drive the creation
of the window.
*/
MSG_Pane* MSG_Mail(MWContext *old_context);
/* Convenience function to start composing a mail message from a web
browser window - the currently-loaded document will be the default
attachment should the user choose to attach it. The context may
be of any type, or NULL. Returns the new message composition pane.
This is going away, you should call MSG_MailDocumentURL with NULL
for the second argument.
*/
extern MSG_Pane* MSG_MailDocument(MWContext *context);
/*
Another version of MSG_MailDocument where pAttachmentURL explicitly gives the URL to attach.
MSG_MailDocument() is still there for backwards compatability.
*/
extern MSG_Pane* MSG_MailDocumentURL(MWContext *context,const char *pAttachmentURL);
/* These routines were in mime.h, but defined in libmsg...*/
/* Given a string which contains a list of RFC822 addresses, parses it into
@ -2934,13 +2589,6 @@ extern char *MSG_MakeFullAddress (const char* name, const char* addr);
extern int MSG_UnquotePhraseOrAddr (char *line, char** lineout);
/* Returns the address book context, creating it if necessary. A mail pane is
passed in, on the unlikely chance that it might be useful for the FE. If
"viewnow" is TRUE, then present the address book window to the user;
otherwise, don't (unless it is already visible).*/
extern MWContext* FE_GetAddressBookContext(MSG_Pane* pane, XP_Bool viewnow);
/* Notify the address book panes that the list of directory servers has changed
This is only called from the address book. */

Просмотреть файл

@ -30,6 +30,9 @@ EXPORTS= nsSmtpUrl.h \
nsMsgCreate.h \
nsMsgSendLater.h \
nsMsgCompUtils.h \
nsMsgDeliveryListener.h \
nsMsgSend.h \
nsMsgAttachmentHandler.h \
nsMsgComposeService.h \
nsMsgCompose.h \
nsMsgCompFields.h \

Просмотреть файл

@ -21,7 +21,6 @@
#include "msgCore.h"
#include "prprf.h" /* should be defined into msgCore.h? */
#include "msgcom.h"
#include "nsMsgHeaderMasks.h"
#include "nsMsgTransition.h"

Просмотреть файл

@ -33,6 +33,11 @@
#include "nsXPIDLString.h"
#include "nsSpecialSystemDirectory.h"
/* for GET_xxx_PART */
#include "net.h"
/* for StrAllocCat */
#include "xp_str.h"
static NS_DEFINE_CID(kPrefCID, NS_PREF_CID);
static NS_DEFINE_CID(kMsgHeaderParserCID, NS_MSGHEADERPARSER_CID);
static NS_DEFINE_CID(kMimeURLUtilsCID, NS_IMIME_URLUTILS_CID);
@ -667,7 +672,7 @@ mime_generate_headers (nsMsgCompFields *fields,
while (references && PL_strlen(references) >= 986 && trimAt) {
ptr = PL_strchr(trimAt+1, '<');
if (ptr)
XP_MEMMOVE(trimAt, ptr, PL_strlen(ptr)+1); // including the
nsCRT::memmove(trimAt, ptr, PL_strlen(ptr)+1); // including the
else
break;
}
@ -1007,7 +1012,7 @@ msg_generate_message_id (nsIMsgIdentity *identity)
if (host) {
const char *s;
for (s = ++host; *s; s++)
if (!XP_IS_ALPHA(*s) && !XP_IS_DIGIT(*s) &&
if (!nsString::IsAlpha(*s) && !nsString::IsDigit(*s) &&
*s != '-' && *s != '_' && *s != '.') {
host = 0;
break;

Просмотреть файл

@ -41,6 +41,7 @@
#include "nsMsgCreate.h"
#include "nsMailHeaders.h"
#include "nsMsgPrompts.h"
#include "nsMimeTypes.h"
// XXX temporary so we can use the current identity hack -alecf
#include "nsIMsgMailSession.h"

Просмотреть файл

@ -22,7 +22,6 @@
#include "msgCore.h"
#include "prprf.h" /* should be defined into msgCore.h? */
#include "intl_csi.h"
#include "msgcom.h"
#include "nsMsgTransition.h"
#include "nsMsgZapIt.h"
#include "nsMsgSend.h"

Просмотреть файл

@ -1,52 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* 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.
*/
//
// The goal is to get this file to ZERO and then all old world stuff will
// be gone...we're getting much closer :-)
//
#ifndef _nsMsgTransition_h_
#define _nsMsgTransition_h_
#define NS_IMPL_IDS
#include "mimeenc.h"
#include "xpgetstr.h"
#include "xp_qsort.h"
#include "msgcom.h"
#include "rosetta_mailnews.h"
#include "nsMsgZapIt.h"
// These are transitional defines that will go away when we
// define new NS_... error codes...nsSmptProtocol.cpp is the last
// holdout.
//
#define MK_SMTP_SERVER_ERROR -234
#define MK_TCP_READ_ERROR -252
#define MK_COULD_NOT_LOGIN_TO_SMTP_SERVER -229
#define MK_COULD_NOT_GET_USERS_MAIL_ADDRESS -235
#define MK_OUT_OF_MEMORY -207
#define MK_POP3_PASSWORD_UNDEFINED -313
#define MK_ERROR_SENDING_FROM_COMMAND -230
#define MK_ERROR_SENDING_RCPT_COMMAND -231
#define MK_ERROR_SENDING_DATA_COMMAND -232
#define MK_ERROR_SENDING_MESSAGE -233
#define MK_MIME_NO_RECIPIENTS -267
#define MK_MIME_MPART_ATTACHMENT_ERROR -268
#endif /* _nsMsgTransition_h_ */