/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* 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 "nsMsgSearchCore.idl" #include "nsIMsgSearchValue.idl" interface nsIMsgDBHdr; interface nsIMsgDatabase; interface nsIMsgSearchScopeTerm; [scriptable, uuid(705a2b5a-5efc-495c-897a-bef1161cd3c0)] interface nsIMsgSearchTerm : nsISupports { attribute nsMsgSearchAttribValue attrib; attribute nsMsgSearchOpValue op; attribute nsIMsgSearchValue value; attribute boolean booleanAnd; attribute ACString arbitraryHeader; /** * Not to be confused with arbitraryHeader, which is a header in the * rfc822 message. This is a property of the nsIMsgDBHdr, and may have * nothing to do the message headers, e.g., gloda-id. * value.str will be compared with nsIMsgHdr::GetProperty(hdrProperty). */ attribute ACString hdrProperty; /// identifier for a custom id used for this term, if any. attribute ACString customId; attribute boolean beginsGrouping; attribute boolean endsGrouping; /** * Match the value against one of the emails found in the incoming * 2047-encoded string. */ boolean matchRfc822String(in ACString aString, in string charset); /** * Match the current header value against the incoming 2047-encoded string. * * This method will first apply the nsIMimeConverter decoding to the string * (using the supplied parameters) and will then match the value against the * decoded result. */ boolean matchRfc2047String(in ACString aString, in string charset, in boolean charsetOverride); boolean matchDate(in PRTime aTime); boolean matchStatus(in unsigned long aStatus); boolean matchPriority(in nsMsgPriorityValue priority); boolean matchAge(in PRTime days); boolean matchSize(in unsigned long size); boolean matchLabel(in nsMsgLabelValue aLabelValue); boolean matchJunkStatus(in string aJunkScore); /* * Test search term match for junkpercent * * @param aJunkPercent junkpercent for message (0-100, 100 is junk) * @return true if matches */ boolean matchJunkPercent(in unsigned long aJunkPercent); /* * Test search term match for junkscoreorigin * @param aJunkScoreOrigin Who set junk score? Possible values: * plugin filter imapflag user whitelist * @return true if matches */ boolean matchJunkScoreOrigin(in string aJunkScoreOrigin); /** * Test if the body of the passed in message matches "this" search term. * @param aScopeTerm scope of search * @param aOffset offset of message in message store. * @param aLength length of message. * @param aCharset folder charset. * @param aMsg db msg hdr of message to match. * @param aDB db containing msg header. */ boolean matchBody(in nsIMsgSearchScopeTerm aScopeTerm, in unsigned long long aOffset, in unsigned long aLength, in string aCharset, in nsIMsgDBHdr aMsg, in nsIMsgDatabase aDb); /** * Test if the arbitrary header specified by this search term * matches the corresponding header in the passed in message. * * @param aScopeTerm scope of search * @param aLength length of message * @param aCharset The charset to apply to un-labeled non-UTF-8 data. * @param aCharsetOverride If true, aCharset is used instead of any * charset labeling other than UTF-8. * * N.B. This is noscript because headers is a null-separated list of * strings, which is not scriptable. */ [noscript] boolean matchArbitraryHeader(in nsIMsgSearchScopeTerm aScopeTerm, in unsigned long aLength, in string aCharset, in boolean aCharsetOverride, in nsIMsgDBHdr aMsg, in nsIMsgDatabase aDb, //[array, size_is(headerLength)] in string headers, in string aHeaders, in unsigned long aHeaderLength, in boolean aForFilters); /** * Compares value.str with nsIMsgHdr::GetProperty(hdrProperty). * @param msg msg to match db hdr property of. * * @returns true if msg matches property, false otherwise. */ boolean matchHdrProperty(in nsIMsgDBHdr msg); /** * Compares value.status with nsIMsgHdr::GetUint32Property(hdrProperty). * @param msg msg to match db hdr property of. * * @returns true if msg matches property, false otherwise. */ boolean matchUint32HdrProperty(in nsIMsgDBHdr msg); /** * Compares value.status with the folder flags of the msg's folder. * @param msg msgHdr whose folder's flag we want to compare. * * @returns true if folder's flags match value.status, false otherwise. */ boolean matchFolderFlag(in nsIMsgDBHdr msg); readonly attribute boolean matchAllBeforeDeciding; readonly attribute ACString termAsString; boolean matchKeyword(in ACString keyword); // used for tag searches attribute boolean matchAll; /** * Does the message match the custom search term? * * @param msg message database object representing the message * * @return true if message matches */ boolean matchCustom(in nsIMsgDBHdr msg); /** * Returns a nsMsgSearchAttribValue value corresponding to a field string from * the nsMsgSearchTerm.cpp::SearchAttribEntryTable table. * Does not handle custom attributes yet. */ nsMsgSearchAttribValue getAttributeFromString(in string aAttribName); };