summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/base/public/nsIMsgMailNewsUrl.idl
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/base/public/nsIMsgMailNewsUrl.idl')
-rw-r--r--comm/mailnews/base/public/nsIMsgMailNewsUrl.idl211
1 files changed, 211 insertions, 0 deletions
diff --git a/comm/mailnews/base/public/nsIMsgMailNewsUrl.idl b/comm/mailnews/base/public/nsIMsgMailNewsUrl.idl
new file mode 100644
index 0000000000..290760c6f0
--- /dev/null
+++ b/comm/mailnews/base/public/nsIMsgMailNewsUrl.idl
@@ -0,0 +1,211 @@
+/* -*- Mode: IDL; 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/. */
+
+#include "nsISupports.idl"
+#include "nsIURL.idl"
+
+interface nsIFile;
+interface nsIUrlListener;
+interface nsIMsgStatusFeedback;
+interface nsIMsgIncomingServer;
+interface nsIMsgWindow;
+interface nsILoadGroup;
+interface nsIMsgSearchSession;
+interface nsICacheEntry;
+interface nsIMimeHeaders;
+interface nsIStreamListener;
+interface nsIMsgFolder;
+interface nsIMsgDBHdr;
+interface nsIDocShell;
+interface nsITransportSecurityInfo;
+
+[scriptable, builtinclass, uuid(995455ba-5bb4-4643-8d70-2b877a2e1320)]
+interface nsIMsgMailNewsUrl : nsIURL {
+ [noscript,notxpcom,nostdcall]
+ nsresult setFileNameInternal(in ACString aFileName);
+
+ [noscript,notxpcom,nostdcall]
+ nsresult setSpecInternal(in ACString aSpec);
+
+ [noscript,notxpcom,nostdcall]
+ nsresult setPortInternal(in long aPort);
+
+ [noscript,notxpcom,nostdcall]
+ nsresult setQueryInternal(in ACString aQuery);
+
+ [noscript,notxpcom,nostdcall]
+ nsresult setUsernameInternal(in ACString aUsername);
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // Eventually we'd like to push this type of functionality up into nsIURI.
+ // The idea is to allow the "application" (the part of the code which wants to
+ // run a url in order to perform some action) to register itself as a listener
+ // on url. As a url listener, the app will be informed when the url begins to run
+ // and when the url is finished.
+ ////////////////////////////////////////////////////////////////////////////////
+ void RegisterListener(in nsIUrlListener aUrlListener);
+ void UnRegisterListener(in nsIUrlListener aUrlListener);
+
+ readonly attribute nsIURI baseURI;
+
+ // if you really want to know what the current state of the url is (running or not
+ // running) you should look into becoming a urlListener...
+ void SetUrlState(in boolean runningUrl, in nsresult aStatusCode);
+ void GetUrlState(out boolean runningUrl);
+
+ readonly attribute nsIMsgIncomingServer server;
+
+ /**
+ * Transport-level security information (if any), in the case of a security
+ * error having occurred.
+ * This value should be considered undefined if an NSS error has not
+ * occurred. Read it as: "the secInfo that was being used when a failure
+ * occurred", not: "the secInfo that failed".
+ * Seems a bit ugly adding more state here, but the idea is that a
+ * nsIUrlListener.OnStopRunningUrl() needs to be able to access a bad
+ * certificate, so as to have the option of adding an exemption (See
+ * Bug 1590473).
+ */
+ attribute nsITransportSecurityInfo failedSecInfo;
+
+ /**
+ * The folder associated with this url.
+ *
+ * @exception NS_ERROR_FAILURE May be thrown if the url does not
+ * relate to a folder, e.g. standalone
+ * .eml messages.
+ */
+ attribute nsIMsgFolder folder;
+
+ attribute nsIMsgStatusFeedback statusFeedback;
+
+ /**
+ * The maximum progress for this URL. This might be a count, or it might
+ * be a number of bytes. A value of -1 indicates that this is unknown.
+ */
+ attribute long long maxProgress;
+
+ attribute nsIMsgWindow msgWindow;
+
+ // current mime headers if reading message
+ attribute nsIMimeHeaders mimeHeaders;
+
+ // the load group is computed from the msgWindow
+ readonly attribute nsILoadGroup loadGroup;
+
+ // search session, if we're running a search.
+ attribute nsIMsgSearchSession searchSession;
+ attribute boolean updatingFolder;
+ attribute boolean msgIsInLocalCache;
+ attribute boolean suppressErrorMsgs; // used to avoid displaying biff error messages
+
+ /**
+ * Set after an error occurred.
+ * It is not translated and contains no parameters.
+ * It is unique to each different kind of error, i.e. the same
+ * error has the same code, but a different error has a different code.
+ * This allows to recover from specific errors programmatically,
+ * or to keep error statistics.
+ * If the error comes from a server, the implementor should make
+ * efforts to pass on comparable server error identifiers and include
+ * them here, e.g. as suffixes. Example: "imap-sasl-S474", where-as "S474"
+ * comes from the server annd "imap-sasl-" is the prefix for where the
+ * server reports appears.
+ */
+ attribute ACString errorCode;
+ /**
+ * Set after an error occurred.
+ * An error message that can be displayed directly
+ * to the end user without further processing.
+ * It must have been translated.
+ * It may contain contain values as part of the message.
+ */
+ attribute AString errorMessage;
+
+ /**
+ * To be used in error situations, e.g. to give the URI to an error page
+ * that describes the problem.
+ */
+ attribute AUTF8String seeOtherURI;
+
+ attribute nsICacheEntry memCacheEntry;
+
+ const unsigned long eCopy = 0;
+ const unsigned long eMove = 1;
+ const unsigned long eDisplay = 2;
+ boolean IsUrlType(in unsigned long type);
+ nsIStreamListener getSaveAsListener(in boolean addDummyEnvelope, in nsIFile aFile);
+
+ /// Returns true if the URI is for a message (e.g., imap-message://)
+ readonly attribute boolean isMessageUri;
+
+ /**
+ * Loads the URI in a docshell. This will give priority to loading the
+ * URI in the passed-in docshell. If it can't be loaded there
+ * however, the URL dispatcher will go through its normal process of content
+ * loading.
+ *
+ * @param docshell The docshell that will consume the load.
+ *
+ * @param aLoadFlags Flags to modify load behaviour. Flags are defined in
+ * nsIWebNavigation. Normally only LOAD_FLAGS_NONE or
+ * LOAD_FLAGS_IS_LINK is needed, but there are eleven
+ * other allowed sets of flags. See nsDocShellLoadTypes.h
+ */
+ void loadURI(in nsIDocShell docshell,
+ in unsigned long aLoadFlags);
+
+};
+
+//////////////////////////////////////////////////////////////////////////////////
+// This is a very small interface which I'm grouping with the mailnewsUrl interface.
+// Several url types (mailbox, imap, nntp) have similar properties because they can
+// represent mail messages. For instance, these urls can be have URI
+// equivalents which represent a message.
+// We want to provide the app the ability to get the URI for the
+// url. This URI to URL mapping doesn't exist for all mailnews urls...hence I'm
+// grouping it into a separate interface...
+//////////////////////////////////////////////////////////////////////////////////
+
+[scriptable, uuid(388a37ec-2e1a-4a4f-9d8b-189bedf1bda2)]
+interface nsIMsgMessageUrl : nsISupports {
+ // get and set the RDF URI associated with the url. Note, not all urls have
+ // had uri's set on them so be prepared to handle cases where this string is empty.
+ attribute AUTF8String uri;
+ // used by imap, pop and nntp in order to implement save message to disk
+ attribute nsIFile messageFile;
+ attribute boolean AddDummyEnvelope;
+ attribute boolean canonicalLineEnding;
+ attribute AUTF8String originalSpec;
+
+ // This is used when creating a principal for the URL with a "normalized" spec
+ // that doesn't contain all the bits in the query part that mailnews URLs have.
+ // We need this to implement nsIURIWithSpecialOrigin, since mailnews URLs
+ // have ORIGIN_IS_FULL_SPEC.
+ readonly attribute AUTF8String normalizedSpec;
+
+ /**
+ * A message db header for that message.
+ *
+ * @note This attribute is not guaranteed to be set, so callers that
+ * actually require an nsIMsgDBHdr will need to use the uri attribute
+ * on this interface to get the appropriate nsIMsgMessageService and
+ * then get the header from there.
+ */
+ readonly attribute nsIMsgDBHdr messageHeader;
+};
+
+//////////////////////////////////////////////////////////////////////////////////
+// This is a very small interface which I'm grouping with the mailnewsUrl interface.
+// I want to isolate out all the I18N specific information that may be associated with
+// any given mailnews url. This gives I18N their own "sandbox" of routines they can add
+// and tweak as they see fit. For now it contains mostly charset information.
+//////////////////////////////////////////////////////////////////////////////////
+
+[scriptable, uuid(D71E0785-2862-11d4-98C1-001083010E9B)]
+interface nsIMsgI18NUrl : nsISupports {
+ // when true the user wants us to auto-detect the character set.
+ attribute boolean autodetectCharset;
+};