author Patrick Cloke <>
Thu, 16 Oct 2014 18:05:41 -0400
changeset 20883 56fe4fac57d0916883a373cb7640681631ee0fe0
parent 19952 45cc03b40060d5d5aa8f8bd3c20082e1e709d723
child 29787 12a18e736fca9a9ac8e0866caf470fa9342af842
permissions -rw-r--r--
Backout part of 2f79b0b939ed that's unrelated. a=Standard8

/* -*- 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 nsIChannel;
interface nsIMsgMailNewsUrl;
interface nsIUTF8StringEnumerator;
interface nsIMsgDBHdr;
interface nsIURI;
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(e0e821f0-cecf-4cb3-be5b-ee58b6868343)]
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;

   * onMsgHasRemoteContent is called each time content policy encounters remote
   * content that it will block from loading.
   * @param aMsgHdr header of the message the content is located in
   * @param aContentURI location that will be blocked.
  void onMsgHasRemoteContent(in nsIMsgDBHdr aMsgHdr, in nsIURI aContentURI);

  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();