Your IP : 216.73.216.48
/* -*- 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 nsICacheEntryDescriptor;
interface nsICacheSession;
interface nsIMimeHeaders;
interface nsIStreamListener;
interface nsIMsgFolder;
interface nsIMsgHeaderSink;
interface nsIMsgDBHdr;
[scriptable, uuid(995455ba-5bb4-4643-8d70-2b877a2e1320)]
interface nsIMsgMailNewsUrl : nsIURL {
///////////////////////////////////////////////////////////////////////////////
// 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;
/**
* 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 addToMemoryCache;
attribute boolean msgIsInLocalCache;
attribute boolean suppressErrorMsgs; // used to avoid displaying biff error messages
attribute nsICacheEntryDescriptor memCacheEntry;
// if we want mime to cache images fetched by this message, set this cache session.
attribute nsICacheSession imageCacheSession;
// hold onto this cache entry until url goes away. This is used by mime to keep
// images cached until the url is deleted so we don't get entries evicted
// before we've used them. We need to be sure this doesn't introduce
// circular references or the url will never get freed.
void cacheCacheEntry(in nsICacheEntryDescriptor cacheEntry);
void removeCacheEntry(in nsICacheEntryDescriptor cacheEntry);
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);
// typically the header sink is tied to the nsIMsgWindow, but in certain circumstances, a consumer
// may chose to provide its own header sink for this url
attribute nsIMsgHeaderSink msgHeaderSink;
/// Returns true if the URI is for a message (e.g., imap-message://)
readonly attribute boolean isMessageUri;
};
//////////////////////////////////////////////////////////////////////////////////
// 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 string 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 string originalSpec;
/**
* 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.
*/
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 {
/**
* the charset associated with a folder for this url.
*
* @exception NS_ERROR_FAILURE May be thrown if the url does not
* relate to a folder, e.g. standalone
* .eml messages.
*/
readonly attribute string folderCharset;
readonly attribute boolean folderCharsetOverride;
// the charsetOverRide is a charset the user may have specified via the menu for
// a particular message
attribute string charsetOverRide;
};