/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #define MSGCOMP_TRACE_PERFORMANCE 1 #include "nsIMsgComposeService.h" #include "nsCOMPtr.h" #include "mozIDOMWindow.h" #include "nsIAppWindow.h" #include "nsIObserver.h" #include "nsWeakReference.h" #include "nsIWeakReference.h" #include "nsIMimeStreamConverter.h" #include "nsInterfaceHashtable.h" #include "nsICommandLineHandler.h" #define ICOMMANDLINEHANDLER nsICommandLineHandler class nsMsgComposeService : public nsIMsgComposeService, public ICOMMANDLINEHANDLER, public nsSupportsWeakReference { public: nsMsgComposeService(); NS_DECL_ISUPPORTS NS_DECL_NSIMSGCOMPOSESERVICE NS_DECL_NSICOMMANDLINEHANDLER nsresult Init(); void Reset(); void DeleteCachedWindows(); nsresult AddGlobalHtmlDomains(); private: virtual ~nsMsgComposeService(); bool mLogComposePerformance; nsresult LoadDraftOrTemplate( const nsACString& aMsgURI, nsMimeOutputType aOutType, nsIMsgIdentity* aIdentity, const nsACString& aOriginalMsgURI, nsIMsgDBHdr* aOrigMsgHdr, bool aForwardInline, bool overrideComposeFormat, nsIMsgWindow* aMsgWindow, bool autodetectCharset); nsresult RunMessageThroughMimeDraft( const nsACString& aMsgURI, nsMimeOutputType aOutType, nsIMsgIdentity* aIdentity, const nsACString& aOriginalMsgURI, nsIMsgDBHdr* aOrigMsgHdr, bool aForwardInline, const nsAString& forwardTo, bool overrideComposeFormat, nsIMsgWindow* aMsgWindow, bool autodetectCharset); // hash table mapping dom windows to nsIMsgCompose objects nsInterfaceHashtable mOpenComposeWindows; // When doing a reply and the settings are enabled, get the HTML of the // selected text in the original message window so that it can be quoted // instead of the entire message. nsresult GetOrigWindowSelection(MSG_ComposeType type, mozilla::dom::Selection* selection, nsACString& aSelHTML); #ifdef MSGCOMP_TRACE_PERFORMANCE PRIntervalTime mStartTime; PRIntervalTime mPreviousTime; #endif };