author Gervase Markham <>
Mon, 17 Sep 2012 10:43:11 +0100
changeset 13657 db9cb608c3fafcfb1ad31cf9d506ec8f126634d5
parent 12286 84ac3c71109811da751f0ef2d72108075938f094
child 19756 edbe40b94a4d60c66d45c3a9d3a163908cdda053
permissions -rw-r--r--
Bug 763623 - Add AUTHORS file.

/* -*- Mode: C++; 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 */
#include "nsISupports.idl"
#include "nsrootidl.idl"

interface nsIOutputStream;
interface nsIInputStream;
interface nsIURI;
interface nsIStreamListener;
interface nsIChannel;
interface nsIMsgMailNewsUrl;
interface nsIUTF8StringEnumerator;
interface nsIMsgDBHdr;
interface nsIWritablePropertyBag2;

[scriptable, uuid(4644FB25-5255-11d3-82B8-444553540002)] 
interface nsIMimeMiscStatus : nsISupports{

    string  GetWindowXULandJS();
    string  GetGlobalXULandJS();
    string  GetIndividualXUL(in string aName, in string aHeader, in string aEmail);

    long    GetMiscStatus(in string aName, in string aEmail);
    string  GetImageURL(in long aStatus);

// this is a simple interface which allows someone to listen to all the headers 
// that are discovered by mime. We can use this when displaying a message to update
// the msg header in JS. 
[scriptable, uuid(2a709e6f-48ec-4273-9d4c-7b1115a2e756)]
interface nsIMsgHeaderSink : nsISupports 
  // You must finish consuming the iterators before returning from processHeaders. aHeaderNames and aHeaderValues will ALWAYS have the same
  // number of elements in them
  void processHeaders(in nsIUTF8StringEnumerator aHeaderNames, in nsIUTF8StringEnumerator aHeaderValues, in boolean dontCollectAddress);

  void handleAttachment(in string contentType, in string url, in wstring displayName, in string uri,
                        in boolean aNotDownloaded);

   * Add a metadata field to the current attachment, e.g. "X-Mozilla-PartSize".
   * @param field The field to add
   * @param value The value of the field
  void addAttachmentField(in string field, in string value);
  void onEndAllAttachments();
  // onEndMsgHeaders is called after libmime is done processing a message. At this point it is safe for
  // elements like the UI to update junk status, process return receipts, etc.
  void onEndMsgHeaders(in nsIMsgMailNewsUrl url);

  // onEndMsgDownload is triggered when layout says it is actually done rendering 
  // the message body in the UI. 
  void onEndMsgDownload(in nsIMsgMailNewsUrl url);

  attribute nsISupports securityInfo;

  void onMsgHasRemoteContent(in nsIMsgDBHdr aMsgHdr);
  readonly attribute nsIMsgDBHdr dummyMsgHeader;
  // used as a hook for extension mime content handlers to store data that can later
  // be accessed by other parts of the code, e.g., UI code.
  // TODO - Should replace securityInfo
  readonly attribute nsIWritablePropertyBag2 properties;
  // When streaming a new message, properties should be reset, so that there are
  // not previous values lurking around.
  void resetProperties();