From 302bf1b523012e11b60425d6eee1221ebc2724eb Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Sun, 3 Nov 2019 00:17:46 -0400 Subject: Issue #1258 - Part 1: Import mailnews, ldap, and mork from comm-esr52.9.1 --- mailnews/imap/src/nsImapUrl.h | 133 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 mailnews/imap/src/nsImapUrl.h (limited to 'mailnews/imap/src/nsImapUrl.h') diff --git a/mailnews/imap/src/nsImapUrl.h b/mailnews/imap/src/nsImapUrl.h new file mode 100644 index 000000000..d1925d87a --- /dev/null +++ b/mailnews/imap/src/nsImapUrl.h @@ -0,0 +1,133 @@ +/* -*- Mode: C++; tab-width: 4; 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/. */ + +#ifndef nsImapUrl_h___ +#define nsImapUrl_h___ + +#include "mozilla/Attributes.h" +#include "nsIImapUrl.h" +#include "nsIImapMockChannel.h" +#include "nsCOMPtr.h" +#include "nsMsgMailNewsUrl.h" +#include "nsIMsgIncomingServer.h" +#include "nsIImapMailFolderSink.h" +#include "nsIImapServerSink.h" +#include "nsIImapMessageSink.h" + +#include "nsWeakPtr.h" +#include "nsIFile.h" +#include "mozilla/Mutex.h" + +class nsImapUrl : public nsIImapUrl, public nsMsgMailNewsUrl, public nsIMsgMessageUrl, public nsIMsgI18NUrl +{ +public: + + NS_DECL_ISUPPORTS_INHERITED + + // nsIURI override + NS_IMETHOD SetSpec(const nsACString &aSpec) override; + NS_IMETHOD SetQuery(const nsACString &aQuery) override; + NS_IMETHOD CloneInternal(uint32_t aRefHandlingMode, + const nsACString& newRef, nsIURI **_retval) override; + + ////////////////////////////////////////////////////////////////////////////// + // we support the nsIImapUrl interface + ////////////////////////////////////////////////////////////////////////////// + NS_DECL_NSIIMAPURL + + // nsIMsgMailNewsUrl overrides + NS_IMETHOD IsUrlType(uint32_t type, bool *isType) override; + NS_IMETHOD GetFolder(nsIMsgFolder **aFolder) override; + NS_IMETHOD SetFolder(nsIMsgFolder *aFolder) override; + // nsIMsgMessageUrl + NS_DECL_NSIMSGMESSAGEURL + NS_DECL_NSIMSGI18NURL + + // nsImapUrl + nsImapUrl(); + + static nsresult ConvertToCanonicalFormat(const char *folderName, char onlineDelimiter, char **resultingCanonicalPath); + static nsresult EscapeSlashes(const char *sourcePath, char **resultPath); + static nsresult UnescapeSlashes(char *path); + static char * ReplaceCharsInCopiedString(const char *stringToCopy, char oldChar, char newChar); + +protected: + virtual ~nsImapUrl(); + virtual nsresult ParseUrl(); + + char *m_listOfMessageIds; + + // handle the imap specific parsing + void ParseImapPart(char *imapPartOfUrl); + + void ParseFolderPath(char **resultingCanonicalPath); + void ParseSearchCriteriaString(); + void ParseUidChoice(); + void ParseMsgFlags(); + void ParseListOfMessageIds(); + void ParseCustomMsgFetchAttribute(); + void ParseNumBytes(); + + nsresult GetMsgFolder(nsIMsgFolder **msgFolder); + + char *m_sourceCanonicalFolderPathSubString; + char *m_destinationCanonicalFolderPathSubString; + char *m_tokenPlaceHolder; + char *m_urlidSubString; + char m_onlineSubDirSeparator; + char *m_searchCriteriaString; // should we use m_search, or is this special? + nsCString m_command; // for custom commands + nsCString m_msgFetchAttribute; // for fetching custom msg attributes + nsCString m_customAttributeResult; // for fetching custom msg attributes + nsCString m_customCommandResult; // custom command response + nsCString m_customAddFlags; // these two are for setting and clearing custom flags + nsCString m_customSubtractFlags; + int32_t m_numBytesToFetch; // when doing a msg body preview, how many bytes to read + bool m_validUrl; + bool m_runningUrl; + bool m_idsAreUids; + bool m_mimePartSelectorDetected; + bool m_allowContentChange; // if false, we can't use Mime parts on demand + bool m_fetchPartsOnDemand; // if true, we should fetch leave parts on server. + bool m_msgLoadingFromCache; // if true, we might need to mark read on server + bool m_externalLinkUrl; // if true, we're running this url because the user + // True if the fetch results should be put in the offline store. + bool m_storeResultsOffline; + bool m_storeOfflineOnFallback; + bool m_localFetchOnly; + bool m_rerunningUrl; // first attempt running this failed with connection error; retrying + bool m_moreHeadersToDownload; + nsImapContentModifiedType m_contentModified; + + int32_t m_extraStatus; + + nsCString m_userName; + nsCString m_serverKey; + // event sinks + imapMessageFlagsType m_flags; + nsImapAction m_imapAction; + + nsWeakPtr m_imapFolder; + nsWeakPtr m_imapMailFolderSink; + nsWeakPtr m_imapMessageSink; + + nsWeakPtr m_imapServerSink; + + // online message copy support; i don't have a better solution yet + nsCOMPtr m_copyState; // now, refcounted. + nsCOMPtr m_file; + nsWeakPtr m_channelWeakPtr; + + // used by save message to disk + nsCOMPtr m_messageFile; + bool m_addDummyEnvelope; + bool m_canonicalLineEnding; // CRLF + + nsCString mURI; // the RDF URI associated with this url. + nsCString mCharsetOverride; // used by nsIMsgI18NUrl... + mozilla::Mutex mLock; +}; + +#endif /* nsImapUrl_h___ */ -- cgit v1.2.3