mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-28 03:17:31 +09:00
207 lines
9.1 KiB
Text
207 lines
9.1 KiB
Text
/* -*- Mode: IDL; 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/. */
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
interface nsIImapMailFolderSink;
|
|
interface nsIImapMessageSink;
|
|
interface nsIImapServerSink;
|
|
interface nsIImapMockChannel;
|
|
interface nsIFile;
|
|
|
|
typedef long nsImapAction;
|
|
typedef long nsImapState;
|
|
|
|
typedef unsigned short imapMessageFlagsType;
|
|
|
|
typedef long nsImapContentModifiedType;
|
|
|
|
[scriptable, uuid(2e91901e-ff6c-11d3-b9fa-00108335942a)]
|
|
interface nsImapContentModifiedTypes
|
|
{
|
|
const long IMAP_CONTENT_NOT_MODIFIED = 0;
|
|
const long IMAP_CONTENT_MODIFIED_VIEW_INLINE = 1;
|
|
const long IMAP_CONTENT_MODIFIED_VIEW_AS_LINKS = 2;
|
|
const long IMAP_CONTENT_FORCE_CONTENT_NOT_MODIFIED = 3;
|
|
} ;
|
|
|
|
[scriptable, uuid(fe2a8f9e-2886-4146-9896-27fff660c69f)]
|
|
interface nsIImapUrl : nsISupports
|
|
{
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// Getters and Setters for the imap specific event sinks to bind to to the url
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
attribute nsIImapMailFolderSink imapMailFolderSink;
|
|
attribute nsIImapMessageSink imapMessageSink;
|
|
attribute nsIImapServerSink imapServerSink;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// Getters and Setters for the imap url state
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
attribute nsImapAction imapAction;
|
|
readonly attribute nsImapState requiredImapState;
|
|
readonly attribute string imapPartToFetch;
|
|
readonly attribute ACString customAttributeToFetch;
|
|
attribute ACString customAttributeResult;
|
|
readonly attribute ACString command;
|
|
attribute ACString customCommandResult;
|
|
readonly attribute ACString customAddFlags;
|
|
readonly attribute ACString customSubtractFlags;
|
|
void allocateCanonicalPath(in string aServerPath, in char aOnlineDelimiter, out string aAllocatedPath);
|
|
void allocateServerPath(in string aCanonicalPath, in char aOnlineDelimiter, out string aAllocatedPath);
|
|
string createServerSourceFolderPathString();
|
|
string createCanonicalSourceFolderPathString();
|
|
string createServerDestinationFolderPathString();
|
|
|
|
string addOnlineDirectoryIfNecessary(in string onlineMailboxName);
|
|
void createSearchCriteriaString (out string aResult);
|
|
readonly attribute ACString listOfMessageIds;
|
|
|
|
boolean messageIdsAreUids();
|
|
readonly attribute imapMessageFlagsType msgFlags; // kAddMsgFlags or kSubtractMsgFlags only
|
|
|
|
readonly attribute long numBytesToFetch;
|
|
attribute char onlineSubDirSeparator;
|
|
attribute boolean allowContentChange;
|
|
attribute boolean mimePartSelectorDetected;
|
|
attribute nsImapContentModifiedType contentModified;
|
|
attribute boolean fetchPartsOnDemand; // set to true if we're fetching a msg for display and want to not download parts
|
|
attribute boolean msgLoadingFromCache; // true if this msg load is coming from a cache, so we can know to mark it read
|
|
attribute boolean externalLinkUrl; // true if we ran this url because the user clicked on a link.
|
|
attribute boolean validUrl; // false if we couldn't parse url for whatever reason.
|
|
attribute nsISupports copyState;
|
|
attribute nsIFile msgFile;
|
|
attribute nsIImapMockChannel mockChannel;
|
|
/**
|
|
* Set to true if we should store the msg(s) for offline use if we can,
|
|
* e.g., we're fetching a message and the folder is configured for offline
|
|
* use and we're not doing mime parts on demand.
|
|
*/
|
|
attribute boolean storeResultsOffline;
|
|
/**
|
|
* If we fallback from fetching by parts to fetching the whole message,
|
|
* because all the parts were inline, this tells us we should store
|
|
* the message offline.
|
|
*/
|
|
attribute boolean storeOfflineOnFallback;
|
|
|
|
/**
|
|
* This attribute defaults to false, but if we only want to use the offline
|
|
* cache (disk, memory, or offline store) to fetch the message, then we set
|
|
* this to true. Currently, nsIMsgMessageService.streamMessage does this.
|
|
*/
|
|
attribute boolean localFetchOnly;
|
|
|
|
/// Server disconnected first time so we're retrying.
|
|
attribute boolean rerunningUrl;
|
|
|
|
/**
|
|
* Do we have more headers to download? This is set when we decide to
|
|
* download newest headers first, followed by older headers in a subsequent
|
|
* run of the url, which allows other urls to run against the folder in the
|
|
* meantime.
|
|
*/
|
|
attribute boolean moreHeadersToDownload;
|
|
|
|
/**
|
|
* @{
|
|
* This is used to tell the runner of the url more about the status of
|
|
* the command, beyond whether it was successful or not. For example,
|
|
* subtracting flags from a UID that doesn't exist isn't an error
|
|
* (the server returns OK), but the backend code may want to know about it.
|
|
*/
|
|
attribute long extraStatus;
|
|
|
|
/**
|
|
* Current possible extra status values
|
|
*/
|
|
const long ImapStatusNone = 0;
|
|
const long ImapStatusFlagChangeFailed = 1;
|
|
const long ImapStatusFlagsNotSettable = 2;
|
|
/** @} */
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// Enumerated types specific to imap urls...
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// the following are nsImapState enums.
|
|
// we have a basic set of imap url actions. These actions are nsImapActions.
|
|
// Certain actions require us to be in the authenticated state and others require us to
|
|
// be in the selected state. nsImapState is used to store the state the url needs to
|
|
// be in. You'll later see us refer to the imap url state in the imap protocol when we
|
|
// are processing the current url. Don't confuse nsImapState with the generic url state
|
|
// used to keep track of whether the url is running or not...
|
|
const long nsImapAuthenticatedState = 0;
|
|
const long nsImapSelectedState = 1;
|
|
|
|
const long nsImapActionSendText = 0; // a state used for testing purposes to send raw url text straight to the server....
|
|
// nsImapAuthenticatedStateUrl urls
|
|
// since the following url actions require us to be in the authenticated
|
|
// state, the high bit is left blank....
|
|
const long nsImapTest = 0x00000001;
|
|
const long nsImapCreateFolder = 0x00000005;
|
|
const long nsImapDeleteFolder = 0x00000006;
|
|
const long nsImapRenameFolder = 0x00000007;
|
|
const long nsImapMoveFolderHierarchy = 0x00000008;
|
|
const long nsImapLsubFolders = 0x00000009;
|
|
const long nsImapGetMailAccountUrl = 0x0000000A;
|
|
const long nsImapDiscoverChildrenUrl = 0x0000000B;
|
|
const long nsImapDiscoverAllBoxesUrl = 0x0000000D;
|
|
const long nsImapDiscoverAllAndSubscribedBoxesUrl = 0x0000000E;
|
|
const long nsImapAppendMsgFromFile = 0x0000000F;
|
|
const long nsImapSubscribe = 0x00000010;
|
|
const long nsImapUnsubscribe = 0x00000011;
|
|
const long nsImapRefreshACL = 0x00000012;
|
|
const long nsImapRefreshAllACLs = 0x00000013;
|
|
const long nsImapListFolder = 0x00000014;
|
|
const long nsImapUpgradeToSubscription = 0x00000015;
|
|
const long nsImapFolderStatus = 0x00000016;
|
|
const long nsImapRefreshFolderUrls = 0x00000017;
|
|
const long nsImapEnsureExistsFolder = 0x00000018;
|
|
const long nsImapOfflineToOnlineCopy = 0x00000019;
|
|
const long nsImapOfflineToOnlineMove = 0x0000001A;
|
|
const long nsImapVerifylogon = 0x0000001B;
|
|
// it's okay to add more imap actions that require us to
|
|
// be in the authenticated state here without renumbering
|
|
// the imap selected state url actions. just make sure you don't
|
|
// set the high bit...
|
|
|
|
// nsImapSelectedState urls. Note, the high bit is always set for
|
|
// imap actions which require us to be in the selected state
|
|
const long nsImapSelectFolder = 0x10000002;
|
|
const long nsImapLiteSelectFolder = 0x10000003;
|
|
const long nsImapExpungeFolder = 0x10000004;
|
|
const long nsImapMsgFetch = 0x10000018;
|
|
const long nsImapMsgHeader = 0x10000019;
|
|
const long nsImapSearch = 0x1000001A;
|
|
const long nsImapDeleteMsg = 0x1000001B;
|
|
const long nsImapDeleteAllMsgs = 0x1000001C;
|
|
const long nsImapAddMsgFlags = 0x1000001D;
|
|
const long nsImapSubtractMsgFlags = 0x1000001E;
|
|
const long nsImapSetMsgFlags = 0x1000001F;
|
|
const long nsImapOnlineCopy = 0x10000020;
|
|
const long nsImapOnlineMove = 0x10000021;
|
|
const long nsImapOnlineToOfflineCopy = 0x10000022;
|
|
const long nsImapOnlineToOfflineMove = 0x10000023;
|
|
const long nsImapMsgPreview = 0x10000024;
|
|
const long nsImapBiff = 0x10000026;
|
|
const long nsImapSelectNoopFolder = 0x10000027;
|
|
const long nsImapAppendDraftFromFile = 0x10000028;
|
|
const long nsImapUidExpunge = 0x10000029;
|
|
const long nsImapSaveMessageToDisk = 0x10000030;
|
|
const long nsImapOpenMimePart = 0x10000031;
|
|
const long nsImapMsgDownloadForOffline = 0x10000032;
|
|
const long nsImapDeleteFolderAndMsgs = 0x10000033;
|
|
const long nsImapUserDefinedMsgCommand = 0x10000034;
|
|
const long nsImapUserDefinedFetchAttribute = 0x10000035;
|
|
const long nsImapMsgFetchPeek = 0x10000036;
|
|
const long nsImapMsgStoreCustomKeywords = 0x10000037;
|
|
|
|
/// Constant for the default IMAP port number
|
|
const int32_t DEFAULT_IMAP_PORT = 143;
|
|
|
|
/// Constant for the default IMAP over ssl port number
|
|
const int32_t DEFAULT_IMAPS_PORT = 993;
|
|
};
|