fix bug 761790, remove import dependence on nsIDOMNode and sub-classes, r=neil, sr=standard8
authorDavid Bienvenu <bienvenu@nventure.com>
Mon, 18 Jun 2012 17:25:59 -0700
changeset 10463 5edf3019ddaccf043cddbba3a08570742e1d33a2
parent 10462 47380a5f11f4a7bd2dcb857f35187b42d374eea8
child 10464 c24070161c87dcc47695564ea106ee409a138013
push id7913
push userbienvenu@nventure.com
push dateTue, 19 Jun 2012 00:26:03 +0000
treeherdercomm-central@5edf3019ddac [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersneil, standard8
bugs761790
fix bug 761790, remove import dependence on nsIDOMNode and sub-classes, r=neil, sr=standard8
mailnews/compose/public/Makefile.in
mailnews/compose/public/nsIMsgSend.idl
mailnews/compose/public/nsMsgAttachmentData.h
mailnews/compose/src/nsMsgSend.cpp
mailnews/compose/src/nsMsgSend.h
mailnews/import/eudora/src/Makefile.in
mailnews/import/eudora/src/nsEudoraEditor.cpp
mailnews/import/eudora/src/nsEudoraEditor.h
mailnews/import/outlook/src/Makefile.in
mailnews/import/outlook/src/nsOutlookCompose.cpp
mailnews/import/outlook/src/nsOutlookEditor.cpp
mailnews/import/outlook/src/nsOutlookEditor.h
mailnews/import/src/Makefile.in
mailnews/import/src/nsImportEmbeddedImageData.cpp
mailnews/import/src/nsImportEmbeddedImageData.h
mailnews/mime/src/mimedrft.cpp
mailnews/mime/src/mimemoz2.h
--- a/mailnews/compose/public/Makefile.in
+++ b/mailnews/compose/public/Makefile.in
@@ -9,16 +9,17 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= msgcompose
 
 EXPORTS		= \
 		nsMsgCompCID.h \
+		nsMsgAttachmentData.h \
 		$(NULL)
 
 XPIDLSRCS	= \
 		nsIMsgAttachment.idl \
 		nsIMsgComposeProgressParams.idl \
 		nsIMsgComposeParams.idl \
 		nsIMsgComposeService.idl \
 		nsIMsgCompose.idl \
--- a/mailnews/compose/public/nsIMsgSend.idl
+++ b/mailnews/compose/public/nsIMsgSend.idl
@@ -17,29 +17,23 @@
 #include "nsIMsgCompFields.idl"
 #include "nsIMsgSendListener.idl"
 #include "nsIMsgSendReport.idl"
 #include "domstubs.idl"
 #include "nsIPrompt.idl"
 #include "MailNewsTypes2.idl"
 #include "nsIMsgComposeParams.idl"
 
-%{C++
-#include "nsIURL.h"
-#include "nsStringGlue.h"
-%}
-
 interface nsIMsgProgress;
 interface nsIURI;
 interface nsIRequest;
 interface nsIMsgDBHdr;
 interface nsIMsgHdr;
 interface nsIDocShell;
 interface nsIFile;
-interface nsIFile;
 interface nsIOutputStream;
 interface nsIMsgComposeSecure;
 interface nsIMsgStatusFeedback;
 interface nsIEditor;
 interface nsIArray;
 interface nsISupportsArray;
 
 typedef long nsMsgDeliverMode;
@@ -130,106 +124,32 @@ interface nsIMsgAttachedFile : nsISuppor
   attribute unsigned long size;
   attribute unsigned long unprintableCount;
   attribute unsigned long highbitCount;
   attribute unsigned long ctlCount;
   attribute unsigned long nullCount;
   attribute unsigned long maxLineLength;
 };
 
+/**
+ * This interface is used by Eudora and Outlook import to shuttle embedded
+ * image information over to nsIMsgSend's createRFC822Message method via
+ * the aEmbbeddedObjects parameter.
+ */
+[scriptable, uuid(5d2c6554-b4c8-4d68-b864-50e0df929707)]
+interface nsIMsgEmbeddedImageData : nsISupports
+{
+  attribute nsIURI uri;
+  attribute ACString cid;
+  attribute ACString name;
+};
+
 %{ C++
 // Forward declaration
 class nsMsgAttachmentHandler;
-
-// Attachment file/URL structures - we're letting libmime use this directly
-class nsMsgAttachmentData : public nsIMsgAttachmentData
-{
-public:
-  NS_DECL_NSIMSGATTACHMENTDATA
-  NS_DECL_ISUPPORTS
-
-  nsMsgAttachmentData();
-  ~nsMsgAttachmentData();
-
-  nsCOMPtr<nsIURI> m_url;   // The URL to attach.
-
-  nsCString m_desiredType;  // The type to which this document should be
-                            // converted.  Legal values are NULL, TEXT_PLAIN
-                            // and APPLICATION_POSTSCRIPT (which are macros
-                            // defined in net.h); other values are ignored.
-
-  nsCString m_realType;     // The type of the URL if known, otherwise NULL. For example, if 
-                            // you were attaching a temp file which was known to contain HTML data, 
-                            // you would pass in TEXT_HTML as the real_type, to override whatever type 
-                            // the name of the tmp file might otherwise indicate.
-
-  nsCString m_realEncoding; // Goes along with real_type
-
-  nsCString m_realName;     // The original name of this document, which will eventually show up in the 
-                            // Content-Disposition header. For example, if you had copied a document to a 
-                            // tmp file, this would be the original, human-readable name of the document.
-
-  nsCString m_description;  // If you put a string here, it will show up as the Content-Description header.  
-                            // This can be any explanatory text; it's not a file name.             
-
-  nsCString m_disposition;  // The Content-Disposition header (if any). a
-                            // nsMsgAttachmentData can very well have
-                            // Content-Disposition: inline value, instead of
-                            // "attachment".
-  nsCString m_cloudPartInfo; // For X-Mozilla-Cloud-Part header, if any
-
-  // Mac-specific data that should show up as optional parameters
-  // to the content-type header.
-  nsCString m_xMacType;
-  nsCString m_xMacCreator;
-
-  PRInt32 m_size;                  // The size of the attachment. May be 0.
-  bool    m_isExternalAttachment;  // Flag for determining if the attachment is external
-  bool    m_isDownloaded;          // Flag for determining if the attachment has already been downloaded
-  bool    m_hasFilename;           // Tells whether the name is provided by us or if it's a Part 1.2-like attachment
-};
-
-class nsMsgAttachedFile : public nsIMsgAttachedFile
-{
-public:
-  NS_DECL_NSIMSGATTACHEDFILE
-  NS_DECL_ISUPPORTS
-
-  nsMsgAttachedFile();
-  ~nsMsgAttachedFile();
-
-  nsCOMPtr<nsIURI> m_origUrl; // Where it came from on the network (or even elsewhere on the local disk.)
-
-  nsCOMPtr<nsIFile>  m_tmpFile;    // The tmp file in which the (possibly converted) data now resides.
-
-  nsCString m_type;        // The type of the data in file_name (not necessarily the same as the type of orig_url.)
-
-  nsCString m_encoding;    // Likewise, the encoding of the tmp file. This will be set only if the original 
-                            // document had an encoding already; we don't do base64 encoding and so forth until 
-                            // it's time to assemble a full MIME message of all parts.
-
-
-  nsCString m_description;    // For Content-Description header
-  nsCString m_cloudPartInfo; // For X-Mozilla-Cloud-Part header, if any
-  nsCString m_xMacType;    // mac-specific info 
-  nsCString m_xMacCreator; // mac-specific info 
-  nsCString m_realName;      // The real name of the file. 
-
-  // Some statistics about the data that was written to the file, so that when
-  // it comes time to compose a MIME message, we can make an informed decision
-  // about what Content-Transfer-Encoding would be best for this attachment.
-  // (If it's encoded already, we ignore this information and ship it as-is.)
-  PRUint32    m_size;
-  PRUint32    m_unprintableCount;
-  PRUint32    m_highbitCount;
-  PRUint32    m_ctlCount;
-  PRUint32    m_nullCount;
-  PRUint32    m_maxLineLength;
-};
-
 %}
 
 [ptr] native nsMsgAttachmentHandler(nsMsgAttachmentHandler);
 [ptr] native nsMsgAttachedFile(nsMsgAttachedFile);
 
 [scriptable, uuid(22cfe1cb-4e9a-451f-82e5-0b75d2b65a95)]
 interface nsIMsgSend : nsISupports
 {
new file mode 100644
--- /dev/null
+++ b/mailnews/compose/public/nsMsgAttachmentData.h
@@ -0,0 +1,98 @@
+/* -*- Mode: C++; 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/. */
+
+#ifndef __MSGATTACHMENTDATA_H__
+#define __MSGATTACHMENTDATA_H__
+
+#include "nsIURL.h"
+#include "nsStringGlue.h"
+#include "nsIMsgSend.h"
+
+// Attachment file/URL structures - we're letting libmime use this directly
+class nsMsgAttachmentData : public nsIMsgAttachmentData
+{
+public:
+  NS_DECL_NSIMSGATTACHMENTDATA
+  NS_DECL_ISUPPORTS
+
+  nsMsgAttachmentData();
+  ~nsMsgAttachmentData();
+
+  nsCOMPtr<nsIURI> m_url;   // The URL to attach.
+
+  nsCString m_desiredType;  // The type to which this document should be
+                            // converted.  Legal values are NULL, TEXT_PLAIN
+                            // and APPLICATION_POSTSCRIPT (which are macros
+                            // defined in net.h); other values are ignored.
+
+  nsCString m_realType;     // The type of the URL if known, otherwise NULL. For example, if 
+                            // you were attaching a temp file which was known to contain HTML data, 
+                            // you would pass in TEXT_HTML as the real_type, to override whatever type 
+                            // the name of the tmp file might otherwise indicate.
+
+  nsCString m_realEncoding; // Goes along with real_type
+
+  nsCString m_realName;     // The original name of this document, which will eventually show up in the 
+                            // Content-Disposition header. For example, if you had copied a document to a 
+                            // tmp file, this would be the original, human-readable name of the document.
+
+  nsCString m_description;  // If you put a string here, it will show up as the Content-Description header.  
+                            // This can be any explanatory text; it's not a file name.             
+
+  nsCString m_disposition;  // The Content-Disposition header (if any). a
+                            // nsMsgAttachmentData can very well have
+                            // Content-Disposition: inline value, instead of
+                            // "attachment".
+  nsCString m_cloudPartInfo; // For X-Mozilla-Cloud-Part header, if any
+
+  // Mac-specific data that should show up as optional parameters
+  // to the content-type header.
+  nsCString m_xMacType;
+  nsCString m_xMacCreator;
+
+  PRInt32 m_size;                  // The size of the attachment. May be 0.
+  bool    m_isExternalAttachment;  // Flag for determining if the attachment is external
+  bool    m_isDownloaded;          // Flag for determining if the attachment has already been downloaded
+  bool    m_hasFilename;           // Tells whether the name is provided by us or if it's a Part 1.2-like attachment
+};
+
+class nsMsgAttachedFile : public nsIMsgAttachedFile
+{
+public:
+  NS_DECL_NSIMSGATTACHEDFILE
+  NS_DECL_ISUPPORTS
+
+  nsMsgAttachedFile();
+  ~nsMsgAttachedFile();
+
+  nsCOMPtr<nsIURI> m_origUrl; // Where it came from on the network (or even elsewhere on the local disk.)
+
+  nsCOMPtr<nsIFile>  m_tmpFile;    // The tmp file in which the (possibly converted) data now resides.
+
+  nsCString m_type;        // The type of the data in file_name (not necessarily the same as the type of orig_url.)
+
+  nsCString m_encoding;    // Likewise, the encoding of the tmp file. This will be set only if the original 
+                            // document had an encoding already; we don't do base64 encoding and so forth until 
+                            // it's time to assemble a full MIME message of all parts.
+
+
+  nsCString m_description;    // For Content-Description header
+  nsCString m_cloudPartInfo; // For X-Mozilla-Cloud-Part header, if any
+  nsCString m_xMacType;    // mac-specific info 
+  nsCString m_xMacCreator; // mac-specific info 
+  nsCString m_realName;      // The real name of the file. 
+
+  // Some statistics about the data that was written to the file, so that when
+  // it comes time to compose a MIME message, we can make an informed decision
+  // about what Content-Transfer-Encoding would be best for this attachment.
+  // (If it's encoded already, we ignore this information and ship it as-is.)
+  PRUint32    m_size;
+  PRUint32    m_unprintableCount;
+  PRUint32    m_highbitCount;
+  PRUint32    m_ctlCount;
+  PRUint32    m_nullCount;
+  PRUint32    m_maxLineLength;
+};
+#endif
--- a/mailnews/compose/src/nsMsgSend.cpp
+++ b/mailnews/compose/src/nsMsgSend.cpp
@@ -1506,30 +1506,38 @@ nsMsgComposeAndSend::GetMultipartRelated
     {
       // preallocate space for part numbers
       m_partNumbers.SetLength(count);
       // Let parse the list to count the number of valid objects. BTW, we can remove the others from the list
       nsMsgAttachmentData attachment;
 
       PRInt32 i;
       nsCOMPtr<nsIDOMNode> node;
-      nsCOMPtr <nsISupports> isupp;
 
       for (i = count - 1, count = 0; i >= 0; i --)
       {
         // Reset this structure to null!
 
         // now we need to get the element in the array and do the magic
         // to process this element.
         //
-        mEmbeddedObjectList->QueryElementAt(i, NS_GET_IID(nsIDOMNode), getter_AddRefs(node));
-        if (!node)
-          continue;
+        node = do_QueryElementAt(mEmbeddedObjectList, i, &rv);
         bool acceptObject = false;
-        rv = GetEmbeddedObjectInfo(node, &attachment, &acceptObject);
+        if (node)
+        {
+          rv = GetEmbeddedObjectInfo(node, &attachment, &acceptObject);
+        }
+        else // outlook/eudora import case
+        {
+          nsCOMPtr<nsIMsgEmbeddedImageData> imageData =
+            do_QueryElementAt(mEmbeddedObjectList, i, &rv);
+          if (!imageData)
+            continue;
+          acceptObject = true;
+        }
         if (NS_SUCCEEDED(rv) && acceptObject)
           count ++;
       }
     }
     mMultipartRelatedAttachmentCount = (PRInt32)count;
     return count;
   }
   else
@@ -1826,31 +1834,45 @@ nsMsgComposeAndSend::ProcessMultipartRel
     if (!domSaveArray)
       return NS_ERROR_MIME_MPART_ATTACHMENT_ERROR;
     memset(domSaveArray, 0, sizeof(domSaveStruct) * multipartCount);
   }
 
   nsCOMPtr<nsIDOMNode> node;
   for (i = mPreloadedAttachmentCount; i < (mPreloadedAttachmentCount + multipartCount);)
   {
-
     // Ok, now we need to get the element in the array and do the magic
     // to process this element.
     //
 
     locCount++;
     mEmbeddedObjectList->QueryElementAt(locCount, NS_GET_IID(nsIDOMNode), getter_AddRefs(node));
-    if (!node)
-      return NS_ERROR_MIME_MPART_ATTACHMENT_ERROR;
-
-    bool acceptObject = false;
-    rv = GetEmbeddedObjectInfo(node, &attachment, &acceptObject);
-    NS_ENSURE_SUCCESS(rv, NS_ERROR_MIME_MPART_ATTACHMENT_ERROR);
-    if (!acceptObject)
+    if (node)
+    {
+      bool acceptObject = false;
+      rv = GetEmbeddedObjectInfo(node, &attachment, &acceptObject);
+      NS_ENSURE_SUCCESS(rv, NS_ERROR_MIME_MPART_ATTACHMENT_ERROR);
+      if (!acceptObject)
         continue;
+      nsString nodeValue;
+      node->GetNodeValue(nodeValue);
+      LossyCopyUTF16toASCII(nodeValue, m_attachments[i].m_contentId);
+    }
+    else
+    {
+      nsCOMPtr<nsIMsgEmbeddedImageData> imageData = do_QueryElementAt(mEmbeddedObjectList, locCount, &rv);
+      if (!imageData)
+        return NS_ERROR_MIME_MPART_ATTACHMENT_ERROR;
+      imageData->GetUri(getter_AddRefs(attachment.m_url));
+      if (!attachment.m_url)
+        return NS_ERROR_MIME_MPART_ATTACHMENT_ERROR;
+      imageData->GetCid(m_attachments[i].m_contentId);
+      imageData->GetName(attachment.m_realName);
+    }
+
 
     // MUST set this to get placed in the correct part of the message
     m_attachments[i].mMHTMLPart = true;
 
     m_attachments[i].mDeleteFile = true;
     m_attachments[i].m_done = false;
     m_attachments[i].SetMimeDeliveryState(this);
     m_attachments[i].mNodeIndex = locCount;
@@ -1889,21 +1911,17 @@ nsMsgComposeAndSend::ProcessMultipartRel
       m_attachments[i].m_xMacCreator = attachment.m_xMacCreator;
 
       m_attachments[i].m_charset = mCompFields->GetCharacterSet();
       m_attachments[i].m_encoding = "7bit";
 
       if (m_attachments[i].mURL)
         msg_pick_real_name(&m_attachments[i], nsnull, mCompFields->GetCharacterSet());
 
-      nsString contentId;
-      node->GetNodeValue(contentId);
-      if (!contentId.IsEmpty())
-        m_attachments[i].m_contentId = NS_LossyConvertUTF16toASCII(contentId);
-      else
+      if (m_attachments[i].m_contentId.IsEmpty())
       {
         //
         // Next, generate a content id for use with this part
         //
         nsCString email;
         mUserIdentity->GetEmail(email);
         m_attachments[i].m_contentId = mime_gen_content_id(locCount+1, email.get());
       }
@@ -5332,9 +5350,8 @@ NS_IMETHODIMP nsMsgAttachedFile::GetMaxL
   return NS_OK;
 }
 
 NS_IMETHODIMP nsMsgAttachedFile::SetMaxLineLength(PRUint32 aMaxLineLength)
 {
   m_maxLineLength = aMaxLineLength;
   return NS_OK;
 }
-
--- a/mailnews/compose/src/nsMsgSend.h
+++ b/mailnews/compose/src/nsMsgSend.h
@@ -124,16 +124,18 @@
 #include "nsIMsgIdentity.h"
 #include "nsIMsgHdr.h"
 #include "nsIMsgIdentity.h"
 #include "nsWeakReference.h"
 #include "nsIDOMWindow.h"
 #include "nsIMsgComposeSecure.h"
 #include "nsAutoPtr.h"
 #include "nsISupportsArray.h"
+#include "nsMsgAttachmentData.h"
+
 //
 // Some necessary defines...
 //
 #define TEN_K                 10240
 #define MIME_BUFFER_SIZE      4096 // must be greater than 1000
                                    // SMTP (RFC821) limit
 
 //
--- a/mailnews/import/eudora/src/Makefile.in
+++ b/mailnews/import/eudora/src/Makefile.in
@@ -32,12 +32,14 @@ CPPSRCS		= \
 ifeq ($(OS_ARCH),WINNT)
 CPPSRCS += nsEudoraWin32.cpp
 endif
 
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 CPPSRCS += nsEudoraMac.cpp
 endif
 
+LOCAL_INCLUDES += -I$(srcdir)/../../src
+
 # we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
--- a/mailnews/import/eudora/src/nsEudoraEditor.cpp
+++ b/mailnews/import/eudora/src/nsEudoraEditor.cpp
@@ -1,24 +1,21 @@
 /* -*- Mode: C++; 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 "nsEudoraEditor.h"
 #include "nsISupportsArray.h"
-#include "nsIDOMHTMLImageElement.h"
 #include "nsComponentManagerUtils.h"
 #include "nsStringGlue.h"
 #include "nsMsgUtils.h"
 #include "nsNetUtil.h"
-#include "nsIMsgSend.h"
-
-NS_IMPL_ISUPPORTS4(nsEudoraHTMLImageElement, nsIDOMNode, nsIDOMElement, nsIDOMHTMLElement, nsIDOMHTMLImageElement)
+#include "nsImportEmbeddedImageData.h"
 
 static char *     sEudoraEmbeddedContentLines[] = {
   "Embedded Content: ",
   "\0"  //  Explicit terminating string
 };
 
 // Lightly adapted from code in Windows Eudora that hashes the img src cid.
 static PRUint32 EudoraHashString(const char* pszStr)
@@ -163,24 +160,25 @@ nsresult nsEudoraEditor::GetEmbeddedObje
       rv = NS_GetURLSpecFromFile(embeddedImageSpec, embeddedImageURL);
       NS_ENSURE_SUCCESS(rv, rv);
 
       NS_ConvertASCIItoUTF16 srcUrl(embeddedImageURL);
       nsString cid;
       // We're going to remember the original cid in the image element,
       // which the send code will retrieve as the kMozCIDAttrName property.
       GetEmbeddedImageCID(cidHashValue, srcUrl, cid);
+      nsCOMPtr<nsIURI> embeddedFileURI;
+      NS_NewFileURI(getter_AddRefs(embeddedFileURI), embeddedImageSpec);
+
       // Create the embedded image node
-      nsEudoraHTMLImageElement *image =
-        new nsEudoraHTMLImageElement(srcUrl, cid);
-
-      nsCOMPtr<nsIDOMHTMLImageElement> imageNode(do_QueryInterface(image));
+      nsImportEmbeddedImageData *imageData =
+        new nsImportEmbeddedImageData(embeddedFileURI, NS_LossyConvertUTF16toASCII(cid));
 
       // Append the embedded image node to the list
-      (*aNodeList)->AppendElement(imageNode);
+      m_EmbeddedObjectList->AppendElement(imageData);
 
       PRInt32   endEmbeddedContentLine = m_body.Find("\r\n", true, startEmbeddedContentLine+1);
       if (endEmbeddedContentLine != kNotFound)
       {
         // We recognized the "Embedded Content" line correctly and found the associated image.
         // Remove the Eudora specific line about it now.
         m_body.Cut(startEmbeddedContentLine, endEmbeddedContentLine - startEmbeddedContentLine + 2);
 
@@ -281,1020 +279,8 @@ bool nsEudoraEditor::HasEmbeddedContent(
 
     if (bHasEmbeddedContent)
       break;
   }
 
   return bHasEmbeddedContent;
 }
 
-
-nsEudoraHTMLImageElement::nsEudoraHTMLImageElement(const nsAString & aSrc,
-                                                   const nsAString &aCID)
-  : m_src(aSrc), m_cidOrig(aCID)
-{
-}
-
-nsEudoraHTMLImageElement::~nsEudoraHTMLImageElement()
-{
-}
-
-
-// readonly attribute DOMString nodeName
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetNodeName(nsAString & aNodeName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString nodeValue
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetNodeValue(nsAString & aNodeValue)
-{
-  aNodeValue = m_cidOrig;
-  return NS_OK;
-}
-
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetNodeValue(const nsAString & aNodeValue)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute unsigned short nodeType
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetNodeType(PRUint16 *aNodeType)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute nsIDOMNode parentNode
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetParentNode(nsIDOMNode * *aParentNode)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNode parentElement
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetParentElement(nsIDOMElement * *aParentElement)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNodeList childNodes
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetChildNodes(nsIDOMNodeList * *aChildNodes)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute nsIDOMNode firstChild
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetFirstChild(nsIDOMNode * *aFirstChild)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute nsIDOMNode lastChild
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetLastChild(nsIDOMNode * *aLastChild)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute nsIDOMNode previousSibling
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetPreviousSibling(nsIDOMNode * *aPreviousSibling)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetPreviousElementSibling(nsIDOMElement **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNode nextSibling
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetNextSibling(nsIDOMNode * *aNextSibling)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNode nextSibling
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetNextElementSibling(nsIDOMElement * *aNextSibling)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNamedNodeMap attributes
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetAttributes(nsIDOMNamedNodeMap * *aAttributes)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute nsIDOMDocument ownerDocument
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetOwnerDocument(nsIDOMDocument * *aOwnerDocument)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// nsIDOMNode insertBefore (in nsIDOMNode newChild, in nsIDOMNode refChild)  raises (DOMException)
-NS_IMETHODIMP nsEudoraHTMLImageElement::InsertBefore(nsIDOMNode *newChild, nsIDOMNode *refChild, nsIDOMNode **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// nsIDOMNode replaceChild (in nsIDOMNode newChild, in nsIDOMNode oldChild)  raises (DOMException)
-NS_IMETHODIMP nsEudoraHTMLImageElement::ReplaceChild(nsIDOMNode *newChild, nsIDOMNode *oldChild, nsIDOMNode **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// nsIDOMNode removeChild (in nsIDOMNode oldChild)  raises (DOMException)
-NS_IMETHODIMP nsEudoraHTMLImageElement::RemoveChild(nsIDOMNode *oldChild, nsIDOMNode **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// nsIDOMNode appendChild (in nsIDOMNode newChild)  raises (DOMException)
-NS_IMETHODIMP nsEudoraHTMLImageElement::AppendChild(nsIDOMNode *newChild, nsIDOMNode **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// boolean hasChildNodes ()
-NS_IMETHODIMP nsEudoraHTMLImageElement::HasChildNodes(bool *_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// nsIDOMNode cloneNode (in boolean deep)
-NS_IMETHODIMP nsEudoraHTMLImageElement::CloneNode(bool deep, PRUint8 aOptionalArgc, nsIDOMNode **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// void normalize ()
-NS_IMETHODIMP nsEudoraHTMLImageElement::Normalize()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// boolean isSupported (in DOMString feature, in DOMString version)
-NS_IMETHODIMP nsEudoraHTMLImageElement::IsSupported(const nsAString & feature, const nsAString & version, bool *_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute DOMString namespaceURI
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetNamespaceURI(nsAString & aNamespaceURI)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString prefix
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetPrefix(nsAString & aPrefix)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute DOMString localName
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetLocalName(nsAString & aLocalName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// boolean hasAttributes ()
-NS_IMETHODIMP nsEudoraHTMLImageElement::HasAttributes(bool *_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute DOMString tagName
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetTagName(nsAString & aTagName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// DOMString getAttribute (in DOMString name)
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetAttribute(const nsAString & name, nsAString & _retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// void setAttribute (in DOMString name, in DOMString value)  raises (DOMException)
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetAttribute(const nsAString & name, const nsAString & value)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// void removeAttribute (in DOMString name)  raises (DOMException)
-NS_IMETHODIMP nsEudoraHTMLImageElement::RemoveAttribute(const nsAString & name)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// nsIDOMAttr getAttributeNode (in DOMString name)
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetAttributeNode(const nsAString & name, nsIDOMAttr **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// nsIDOMAttr setAttributeNode (in nsIDOMAttr newAttr)  raises (DOMException)
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetAttributeNode(nsIDOMAttr *newAttr, nsIDOMAttr **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// nsIDOMAttr removeAttributeNode (in nsIDOMAttr oldAttr)  raises (DOMException)
-NS_IMETHODIMP nsEudoraHTMLImageElement::RemoveAttributeNode(nsIDOMAttr *oldAttr, nsIDOMAttr **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// nsIDOMNodeList getElementsByTagName (in DOMString name)
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetElementsByTagName(const nsAString & name, nsIDOMNodeList **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// DOMString getAttributeNS (in DOMString namespaceURI, in DOMString localName)
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetAttributeNS(const nsAString & namespaceURI, const nsAString & localName, nsAString & _retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// void setAttributeNS (in DOMString namespaceURI, in DOMString qualifiedName, in DOMString value)  raises (DOMException)
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetAttributeNS(const nsAString & namespaceURI, const nsAString & qualifiedName, const nsAString & value)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// void removeAttributeNS (in DOMString namespaceURI, in DOMString localName)  raises (DOMException)
-NS_IMETHODIMP nsEudoraHTMLImageElement::RemoveAttributeNS(const nsAString & namespaceURI, const nsAString & localName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// nsIDOMAttr getAttributeNodeNS (in DOMString namespaceURI, in DOMString localName)
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetAttributeNodeNS(const nsAString & namespaceURI, const nsAString & localName, nsIDOMAttr **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// nsIDOMAttr setAttributeNodeNS (in nsIDOMAttr newAttr)  raises (DOMException)
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetAttributeNodeNS(nsIDOMAttr *newAttr, nsIDOMAttr **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// nsIDOMNodeList getElementsByTagNameNS (in DOMString namespaceURI, in DOMString localName)
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetElementsByTagNameNS(const nsAString & namespaceURI, const nsAString & localName, nsIDOMNodeList **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// boolean hasAttribute (in DOMString name)
-NS_IMETHODIMP nsEudoraHTMLImageElement::HasAttribute(const nsAString & name, bool *_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// boolean hasAttributeNS (in DOMString namespaceURI, in DOMString localName)
-NS_IMETHODIMP nsEudoraHTMLImageElement::HasAttributeNS(const nsAString & namespaceURI, const nsAString & localName, bool *_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetOnmouseenter(JSContext *cx, JS::Value *ret)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetOnmouseenter(JSContext *cx, const JS::Value &aMouseEnter)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetOnmouseleave(JSContext *cx, JS::Value *ret)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetOnmouseleave(JSContext *cx, const JS::Value &aMouseLeave)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString id
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetId(nsAString & aId)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetId(const nsAString & aId)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString title
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetTitle(nsAString & aTitle)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetTitle(const nsAString & aTitle)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString lang
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetLang(nsAString & aLang)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetLang(const nsAString & aLang)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString dir
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetDir(nsAString & aDir)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetDir(const nsAString & aDir)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString className
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetClassName(nsAString & aClassName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetClassName(const nsAString & aClassName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute nsIDOMDOMStringMap dataset
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetDataset(nsIDOMDOMStringMap * *aDataset)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute boolean itemScope; */
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetItemScope(bool *aItemScope)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetItemScope(bool aItemScope)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute nsIVariant itemType; */
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetItemType(nsIVariant * *aItemType)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetItemType(nsIVariant *aItemType)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute DOMString itemId; */
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetItemId(nsAString & aItemId)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetItemId(const nsAString & aItemId)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* readonly attribute nsIDOMHTMLPropertiesCollection properties; */
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetProperties(nsIDOMHTMLPropertiesCollection * *aProperties)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute nsIVariant itemValue; */
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetItemValue(nsIVariant * *aItemValue)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetItemValue(nsIVariant *aItemValue)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute nsIVariant itemProp; */
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetItemProp(nsIVariant * *aItemProp)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetItemProp(nsIVariant *aItemProp)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute nsIVariant itemRef; */
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetItemRef(nsIVariant * *aItemRef)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetItemRef(nsIVariant *aItemRef)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute boolean hidden
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetHidden(bool *aHidden)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetHidden(bool aHidden)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// void click ()
-NS_IMETHODIMP nsEudoraHTMLImageElement::Click()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute long tabIndex
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetTabIndex(PRInt32 *aTabIndex)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetTabIndex(PRInt32 aTabIndex)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// void focus ()
-NS_IMETHODIMP nsEudoraHTMLImageElement::Focus()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// void blur ()
-NS_IMETHODIMP nsEudoraHTMLImageElement::Blur()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString accessKey
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetAccessKey(nsAString & aAccessKey)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetAccessKey(const nsAString & aAccessKey)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute DOMString accessKeyLabel
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetAccessKeyLabel(nsAString & aAccessKeyLabel)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute boolean draggable
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetDraggable(bool *aDraggable)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetDraggable(bool aDraggable)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString contentEditable
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetContentEditable(nsAString & aContentEditable)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetContentEditable(const nsAString & aContentEditable)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute boolean isContentEditable
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetIsContentEditable(bool *aIsContentEditable)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute nsIDOMHTMLMenuElement contextMenu
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetContextMenu(nsIDOMHTMLMenuElement * *aContextMenu)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute boolean spellcheck
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetSpellcheck(bool *aSpellcheck)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetSpellcheck(bool aSpellcheck)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString innerHTML
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetInnerHTML(nsAString & aInnerHTML)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetInnerHTML(const nsAString & aInnerHTML)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetOuterHTML(nsAString & aOuterHTML)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetOuterHTML(const nsAString & aOuterHTML)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// void insertAdjacentHTML (in DOMString position, in DOMString text)
-NS_IMETHODIMP nsEudoraHTMLImageElement::InsertAdjacentHTML(const nsAString & position, const nsAString & text)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// [optional_argc] void scrollIntoView ([optional] in boolean top)
-NS_IMETHODIMP nsEudoraHTMLImageElement::ScrollIntoView(bool top, PRUint8 _argc)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute nsIDOMElement offsetParent
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetOffsetParent(nsIDOMElement * *aOffsetParent)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute long offsetTop
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetOffsetTop(PRInt32 *aOffsetTop)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute long offsetLeft
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetOffsetLeft(PRInt32 *aOffsetLeft)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute long offsetWidth
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetOffsetWidth(PRInt32 *aOffsetWidth)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute long offsetHeight
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetOffsetHeight(PRInt32 *aOffsetHeight)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// void mozRequestFullScreen ()
-NS_IMETHODIMP nsEudoraHTMLImageElement::MozRequestFullScreen()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString name
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetName(nsAString & aName)
-{
-  return NS_OK;
-}
-
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetName(const nsAString & aName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString align
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetAlign(nsAString & aAlign)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetAlign(const nsAString & aAlign)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString crossOrigin
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetCrossOrigin(nsAString & aCrossOrigin)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetCrossOrigin(const nsAString & aCrossOrigin)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString alt
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetAlt(nsAString & aAlt)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetAlt(const nsAString & aAlt)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString lowsrc
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetLowsrc(nsAString &aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetLowsrc(const nsAString &aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute DOMString complete
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetComplete(bool *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute long naturalWidth
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetNaturalWidth(PRUint32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute long naturalHeight
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetNaturalHeight(PRUint32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString border
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetBorder(nsAString & aBorder)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetBorder(const nsAString & aBorder)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute long height
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetHeight(PRUint32 *aHeight)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetHeight(PRUint32 aHeight)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute long hspace
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetHspace(PRInt32 *aHspace)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetHspace(PRInt32 aHspace)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute boolean isMap
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetIsMap(bool *aIsMap)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetIsMap(bool aIsMap)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString longDesc
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetLongDesc(nsAString & aLongDesc)
-{
-  return NS_OK;
-}
-
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetLongDesc(const nsAString & aLongDesc)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetSrc(nsAString & aSrc)
-{
-  aSrc = m_src;
-  return NS_OK;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetSrc(const nsAString & aSrc)
-{
-  m_src = aSrc;
-  return NS_OK;
-}
-
-// attribute DOMString useMap
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetUseMap(nsAString & aUseMap)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetUseMap(const nsAString & aUseMap)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute long vspace
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetVspace(PRInt32 *aVspace)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetVspace(PRInt32 aVspace)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute long width
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetWidth(PRUint32 *aWidth)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetWidth(PRUint32 aWidth)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetDOMBaseURI(nsAString &aBaseURI)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::CompareDocumentPosition(nsIDOMNode *other, PRUint16 *_retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetTextContent(nsAString & aTextContent)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetTextContent(const nsAString & aTextContent)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::Contains(nsIDOMNode* aOther, bool* aReturn)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::LookupPrefix(const nsAString & namespaceURI, nsAString & _retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::IsDefaultNamespace(const nsAString & namespaceURI, bool *_retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::LookupNamespaceURI(const nsAString & prefix, nsAString & _retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::IsEqualNode(nsIDOMNode *arg, bool *_retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetUserData(const nsAString & key, nsIVariant *data,
-                          nsIDOMUserDataHandler *handler, nsIVariant **_retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetUserData(const nsAString & key, nsIVariant **_retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetClientTop(PRInt32 *aClientTop)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetClassList(nsIDOMDOMTokenList **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetScrollTop(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetScrollTop(PRInt32 aScrollTop)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetScrollWidth(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetScrollHeight(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetScrollLeft(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetScrollLeft(PRInt32 aScollLeft)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetClientWidth(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetClientLeft(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetElementsByClassName(const nsAString &aClasses, nsIDOMNodeList **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetChildElements(nsIDOMNodeList **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetChildElementCount(PRUint32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::ReleaseCapture()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::SetCapture(bool aRetargetToElement)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetClientRects(nsIDOMClientRectList **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetClientHeight(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetFirstElementChild(nsIDOMElement **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetLastElementChild(nsIDOMElement **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::GetBoundingClientRect(nsIDOMClientRect **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::MozMatchesSelector(const nsAString &aSelector, bool *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsEudoraHTMLImageElement::MozRequestPointerLock()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP
-nsEudoraHTMLImageElement::GetX(PRInt32* aX)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP
-nsEudoraHTMLImageElement::GetY(PRInt32* aY)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
--- a/mailnews/import/eudora/src/nsEudoraEditor.h
+++ b/mailnews/import/eudora/src/nsEudoraEditor.h
@@ -1,17 +1,16 @@
 /* -*- Mode: C++; 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 "nscore.h"
 #include "nsIEditor.h"
 #include "nsIEditorMailSupport.h"
-#include "nsIDOMHTMLImageElement.h"
 #include "nsCOMPtr.h"
 #include "nsStringGlue.h"
 #include "nsIFile.h"
 
 
 class nsEudoraEditor
 {
   public:
@@ -23,27 +22,8 @@ class nsEudoraEditor
     nsresult GetEmbeddedObjects(nsISupportsArray ** aNodeList);
     nsresult GetBody(nsAString & _retval) {_retval = m_body; return NS_OK;}
   protected:
     NS_ConvertASCIItoUTF16      m_body;
     nsCOMPtr <nsIFile>          m_pMailImportLocation;
     nsCOMPtr<nsISupportsArray>  m_EmbeddedObjectList; // Initialized when GetEmbeddedObjects is called
 };
 
-
-class nsEudoraHTMLImageElement : public nsIDOMHTMLImageElement
-{
-  public:
-    NS_DECL_ISUPPORTS
-    NS_DECL_NSIDOMNODE
-    NS_DECL_NSIDOMELEMENT
-    NS_DECL_NSIDOMHTMLELEMENT
-    NS_DECL_NSIDOMHTMLIMAGEELEMENT
-
-    nsEudoraHTMLImageElement(const nsAString & aSrc, const nsAString &aCID);
-
-  private:
-    ~nsEudoraHTMLImageElement();
-
-  protected:
-    nsString                    m_src;
-    nsString                    m_cidOrig;
-};
--- a/mailnews/import/outlook/src/Makefile.in
+++ b/mailnews/import/outlook/src/Makefile.in
@@ -24,15 +24,16 @@ CPPSRCS		= \
 		nsOutlookSettings.cpp		\
 		MapiApi.cpp			\
 		nsOutlookMail.cpp		\
 		MapiMessage.cpp			\
 		MapiMimeTypes.cpp		\
 		nsOutlookCompose.cpp		\
 		rtfDecoder.cpp		\
 		rtfMailDecoder.cpp		\
-		nsOutlookEditor.cpp		\
 		$(NULL)
 
+LOCAL_INCLUDES += -I$(srcdir)/../../src
+
 # we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
--- a/mailnews/import/outlook/src/nsOutlookCompose.cpp
+++ b/mailnews/import/outlook/src/nsOutlookCompose.cpp
@@ -12,34 +12,34 @@
 #include "nsCOMPtr.h"
 #include "nsIFile.h"
 #include "nsIComponentManager.h"
 #include "nsIServiceManager.h"
 #include "nsIIOService.h"
 #include "nsIURI.h"
 #include "nsMsgI18N.h"
 #include "nsIOutputStream.h"
-
+#include "nsMsgAttachmentData.h"
 #include "nsMsgBaseCID.h"
 #include "nsMsgCompCID.h"
 #include "nsIArray.h"
 #include "nsIMsgCompose.h"
 #include "nsIMsgCompFields.h"
 #include "nsIMsgAccountManager.h"
-
+#include "nsIMsgSend.h"
+#include "nsImportEmbeddedImageData.h"
 #include "nsNetCID.h"
 #include "nsCRT.h"
 #include "nsOutlookCompose.h"
 
 #include "OutlookDebugLog.h"
 
 #include "nsMimeTypes.h"
 #include "nsMsgUtils.h"
 
-#include "nsOutlookEditor.h"
 #include "nsAutoPtr.h"
 
 #include "nsMsgMessageFlags.h"
 #include "nsMsgLocalFolderHdrs.h"
 
 #include <algorithm>
 
 static NS_DEFINE_CID(kMsgSendCID, NS_MSGSEND_CID);
@@ -301,20 +301,20 @@ nsresult nsOutlookCompose::ComposeTheMes
       nsIURI *uri;
       const char* cid;
       const char* name;
       if (msg.GetEmbeddedAttachmentInfo(i, &uri, &cid, &name)) {
         if (!embeddedObjects) {
           embeddedObjects = do_CreateInstance(NS_SUPPORTSARRAY_CONTRACTID, &rv);
           NS_ENSURE_SUCCESS(rv, rv);
         }
-        nsCOMPtr<nsIDOMHTMLImageElement> imageNode =
-          new nsOutlookHTMLImageElement(uri, NS_ConvertASCIItoUTF16(cid),
-                                             NS_ConvertASCIItoUTF16(name));
-        embeddedObjects->AppendElement(imageNode);
+        nsCOMPtr<nsIMsgEmbeddedImageData> imageData =
+          new nsImportEmbeddedImageData(uri, nsDependentCString(cid),
+                                     nsDependentCString(name));
+        embeddedObjects->AppendElement(imageData);
       }
     }
   }
 
   nsCString bodyA;
   nsMsgI18NConvertFromUnicode(msg.GetBodyCharset(), bodyW, bodyA);
 
   nsCOMPtr<nsIImportService> impService(do_GetService(NS_IMPORTSERVICE_CONTRACTID, &rv));
deleted file mode 100644
--- a/mailnews/import/outlook/src/nsOutlookEditor.cpp
+++ /dev/null
@@ -1,995 +0,0 @@
-/* -*- Mode: C++; 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 "nsOutlookEditor.h"
-#include "nsMsgUtils.h"
-#include "nsIDOMHTMLImageElement.h"
-#include "nsComponentManagerUtils.h"
-#include "nsStringGlue.h"
-#include "nsNetUtil.h"
-#include "nsIMsgSend.h"
-
-NS_IMPL_THREADSAFE_ISUPPORTS5(nsOutlookHTMLImageElement,
-                              nsOutlookHTMLImageElement,
-                              nsIDOMHTMLImageElement,
-                              nsIDOMHTMLElement,
-                              nsIDOMElement,
-                              nsIDOMNode)
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-nsOutlookHTMLImageElement::nsOutlookHTMLImageElement
-   (nsIURI *uri, const nsAString &cid, const nsAString &name)
-   : m_name(name), m_cid_orig(cid)
-{
-  // Get the URL for the embedded image
-  nsCString embeddedImageURL;
-  uri->GetSpec(embeddedImageURL);
-  CopyASCIItoUTF16(embeddedImageURL, m_src);
-
-  // The cid that is passed here is not prepended with "cid:", so if it
-  // becomes important that it is, we'd need to prepend it here.
-}
-
-nsOutlookHTMLImageElement::~nsOutlookHTMLImageElement()
-{
-}
-
-// readonly attribute DOMString nodeName
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetNodeName(nsAString & aNodeName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString nodeValue
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetNodeValue(nsAString & aNodeValue)
-{
-  aNodeValue = m_cid_orig;
-  return NS_OK;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetNodeValue(const nsAString & aNodeValue)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute unsigned short nodeType
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetNodeType(PRUint16 *aNodeType)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNode parentNode
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetParentNode(nsIDOMNode * *aParentNode)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNode parentElement
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetParentElement(nsIDOMElement * *aParentElement)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNodeList childNodes
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetChildNodes(nsIDOMNodeList * *aChildNodes)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNode firstChild
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetFirstChild(nsIDOMNode * *aFirstChild)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNode lastChild
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetLastChild(nsIDOMNode * *aLastChild)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNode previousSibling
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetPreviousSibling(nsIDOMNode * *aPreviousSibling)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetPreviousElementSibling(nsIDOMElement **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNode nextSibling
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetNextSibling(nsIDOMNode * *aNextSibling)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNode nextSibling
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetNextElementSibling(nsIDOMElement * *aNextSibling)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMNamedNodeMap attributes
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetAttributes(nsIDOMNamedNodeMap * *aAttributes)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute nsIDOMDocument ownerDocument
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetOwnerDocument(nsIDOMDocument * *aOwnerDocument)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// nsIDOMNode insertBefore (in nsIDOMNode newChild, in nsIDOMNode refChild)  raises (DOMException)
-NS_IMETHODIMP nsOutlookHTMLImageElement::InsertBefore(nsIDOMNode *newChild, nsIDOMNode *refChild, nsIDOMNode **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// nsIDOMNode replaceChild (in nsIDOMNode newChild, in nsIDOMNode oldChild)  raises (DOMException)
-NS_IMETHODIMP nsOutlookHTMLImageElement::ReplaceChild(nsIDOMNode *newChild, nsIDOMNode *oldChild, nsIDOMNode **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// nsIDOMNode removeChild (in nsIDOMNode oldChild)  raises (DOMException)
-NS_IMETHODIMP nsOutlookHTMLImageElement::RemoveChild(nsIDOMNode *oldChild, nsIDOMNode **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// nsIDOMNode appendChild (in nsIDOMNode newChild)  raises (DOMException)
-NS_IMETHODIMP nsOutlookHTMLImageElement::AppendChild(nsIDOMNode *newChild, nsIDOMNode **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// boolean hasChildNodes ()
-NS_IMETHODIMP nsOutlookHTMLImageElement::HasChildNodes(bool *_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// nsIDOMNode cloneNode (in boolean deep)
-NS_IMETHODIMP nsOutlookHTMLImageElement::CloneNode(bool deep, PRUint8 aOptionalArgc, nsIDOMNode **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// void normalize ()
-NS_IMETHODIMP nsOutlookHTMLImageElement::Normalize()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// boolean isSupported (in DOMString feature, in DOMString version)
-NS_IMETHODIMP nsOutlookHTMLImageElement::IsSupported(const nsAString & feature, const nsAString & version, bool *_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute DOMString namespaceURI
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetNamespaceURI(nsAString & aNamespaceURI)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString prefix
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetPrefix(nsAString & aPrefix)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute DOMString localName
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetLocalName(nsAString & aLocalName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// boolean hasAttributes ()
-NS_IMETHODIMP nsOutlookHTMLImageElement::HasAttributes(bool *_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute DOMString tagName
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetTagName(nsAString & aTagName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// DOMString getAttribute (in DOMString name)
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetAttribute(const nsAString & name, nsAString & _retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// void setAttribute (in DOMString name, in DOMString value)  raises (DOMException)
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetAttribute(const nsAString & name, const nsAString & value)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// void removeAttribute (in DOMString name)  raises (DOMException)
-NS_IMETHODIMP nsOutlookHTMLImageElement::RemoveAttribute(const nsAString & name)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// nsIDOMAttr getAttributeNode (in DOMString name)
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetAttributeNode(const nsAString & name, nsIDOMAttr **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// nsIDOMAttr setAttributeNode (in nsIDOMAttr newAttr)  raises (DOMException)
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetAttributeNode(nsIDOMAttr *newAttr, nsIDOMAttr **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// nsIDOMAttr removeAttributeNode (in nsIDOMAttr oldAttr)  raises (DOMException)
-NS_IMETHODIMP nsOutlookHTMLImageElement::RemoveAttributeNode(nsIDOMAttr *oldAttr, nsIDOMAttr **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// nsIDOMNodeList getElementsByTagName (in DOMString name)
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetElementsByTagName(const nsAString & name, nsIDOMNodeList **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// DOMString getAttributeNS (in DOMString namespaceURI, in DOMString localName)
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetAttributeNS(const nsAString & namespaceURI, const nsAString & localName, nsAString & _retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// void setAttributeNS (in DOMString namespaceURI, in DOMString qualifiedName, in DOMString value)  raises (DOMException)
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetAttributeNS(const nsAString & namespaceURI, const nsAString & qualifiedName, const nsAString & value)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// void removeAttributeNS (in DOMString namespaceURI, in DOMString localName)  raises (DOMException)
-NS_IMETHODIMP nsOutlookHTMLImageElement::RemoveAttributeNS(const nsAString & namespaceURI, const nsAString & localName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// nsIDOMAttr getAttributeNodeNS (in DOMString namespaceURI, in DOMString localName)
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetAttributeNodeNS(const nsAString & namespaceURI, const nsAString & localName, nsIDOMAttr **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// nsIDOMAttr setAttributeNodeNS (in nsIDOMAttr newAttr)  raises (DOMException)
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetAttributeNodeNS(nsIDOMAttr *newAttr, nsIDOMAttr **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// nsIDOMNodeList getElementsByTagNameNS (in DOMString namespaceURI, in DOMString localName)
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetElementsByTagNameNS(const nsAString & namespaceURI, const nsAString & localName, nsIDOMNodeList **_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// boolean hasAttribute (in DOMString name)
-NS_IMETHODIMP nsOutlookHTMLImageElement::HasAttribute(const nsAString & name, bool *_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// boolean hasAttributeNS (in DOMString namespaceURI, in DOMString localName)
-NS_IMETHODIMP nsOutlookHTMLImageElement::HasAttributeNS(const nsAString & namespaceURI, const nsAString & localName, bool *_retval)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetOnmouseenter(JSContext *cx, JS::Value *ret)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetOnmouseenter(JSContext *cx, const JS::Value &aMouseEnter)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetOnmouseleave(JSContext *cx, JS::Value *ret)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetOnmouseleave(JSContext *cx, const JS::Value &aMouseLeave)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString id
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetId(nsAString & aId)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetId(const nsAString & aId)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString title
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetTitle(nsAString & aTitle)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetTitle(const nsAString & aTitle)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString lang
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetLang(nsAString & aLang)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetLang(const nsAString & aLang)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString dir
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetDir(nsAString & aDir)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetDir(const nsAString & aDir)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString className
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetClassName(nsAString & aClassName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetClassName(const nsAString & aClassName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute nsIDOMDOMStringMap dataset
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetDataset(nsIDOMDOMStringMap * *aDataset)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute boolean itemScope; */
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetItemScope(bool *aItemScope)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetItemScope(bool aItemScope)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute nsIVariant itemType; */
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetItemType(nsIVariant * *aItemType)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetItemType(nsIVariant *aItemType)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute DOMString itemId; */
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetItemId(nsAString & aItemId)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetItemId(const nsAString & aItemId)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* readonly attribute nsIDOMHTMLPropertiesCollection properties; */
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetProperties(nsIDOMHTMLPropertiesCollection * *aProperties)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute nsIVariant itemValue; */
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetItemValue(nsIVariant * *aItemValue)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetItemValue(nsIVariant *aItemValue)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute nsIVariant itemProp; */
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetItemProp(nsIVariant * *aItemProp)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetItemProp(nsIVariant *aItemProp)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute nsIVariant itemRef; */
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetItemRef(nsIVariant * *aItemRef)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetItemRef(nsIVariant *aItemRef)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute boolean hidden
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetHidden(bool *aHidden)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetHidden(bool aHidden)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// void click ()
-NS_IMETHODIMP nsOutlookHTMLImageElement::Click()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute long tabIndex
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetTabIndex(PRInt32 *aTabIndex)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetTabIndex(PRInt32 aTabIndex)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// void focus ()
-NS_IMETHODIMP nsOutlookHTMLImageElement::Focus()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// void blur ()
-NS_IMETHODIMP nsOutlookHTMLImageElement::Blur()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString accessKey
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetAccessKey(nsAString & aAccessKey)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetAccessKey(const nsAString & aAccessKey)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute DOMString accessKeyLabel
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetAccessKeyLabel(nsAString & aAccessKeyLabel)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute boolean draggable
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetDraggable(bool *aDraggable)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetDraggable(bool aDraggable)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString contentEditable
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetContentEditable(nsAString & aContentEditable)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetContentEditable(const nsAString & aContentEditable)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute boolean isContentEditable
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetIsContentEditable(bool *aIsContentEditable)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute nsIDOMHTMLMenuElement contextMenu
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetContextMenu(nsIDOMHTMLMenuElement * *aContextMenu)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute boolean spellcheck
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetSpellcheck(bool *aSpellcheck)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetSpellcheck(bool aSpellcheck)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString innerHTML
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetInnerHTML(nsAString & aInnerHTML)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetInnerHTML(const nsAString & aInnerHTML)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetOuterHTML(nsAString & aOuterHTML)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetOuterHTML(const nsAString & aOuterHTML)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// void insertAdjacentHTML (in DOMString position, in DOMString text)
-NS_IMETHODIMP nsOutlookHTMLImageElement::InsertAdjacentHTML(const nsAString & position, const nsAString & text)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// [optional_argc] void scrollIntoView ([optional] in boolean top)
-NS_IMETHODIMP nsOutlookHTMLImageElement::ScrollIntoView(bool top, PRUint8 _argc)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute nsIDOMElement offsetParent
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetOffsetParent(nsIDOMElement * *aOffsetParent)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute long offsetTop
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetOffsetTop(PRInt32 *aOffsetTop)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute long offsetLeft
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetOffsetLeft(PRInt32 *aOffsetLeft)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute long offsetWidth
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetOffsetWidth(PRInt32 *aOffsetWidth)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// readonly attribute long offsetHeight
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetOffsetHeight(PRInt32 *aOffsetHeight)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// void mozRequestFullScreen ()
-NS_IMETHODIMP nsOutlookHTMLImageElement::MozRequestFullScreen()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString name
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetName(nsAString & aName)
-{
-  aName.Assign(m_name);
-  return NS_OK;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetName(const nsAString & aName)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString align
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetAlign(nsAString & aAlign)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetAlign(const nsAString & aAlign)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString crossOrigin
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetCrossOrigin(nsAString & aCrossOrigin)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetCrossOrigin(const nsAString & aCrossOrigin)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString alt
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetAlt(nsAString & aAlt)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetAlt(const nsAString & aAlt)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString lowsrc
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetLowsrc(nsAString &aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetLowsrc(const nsAString &aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute DOMString complete
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetComplete(bool *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute long naturalWidth
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetNaturalWidth(PRUint32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// readonly attribute long naturalHeight
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetNaturalHeight(PRUint32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString border
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetBorder(nsAString & aBorder)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetBorder(const nsAString & aBorder)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute long height
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetHeight(PRUint32 *aHeight)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetHeight(PRUint32 aHeight)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute long hspace
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetHspace(PRInt32 *aHspace)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetHspace(PRInt32 aHspace)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute boolean isMap
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetIsMap(bool *aIsMap)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetIsMap(bool aIsMap)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString longDesc
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetLongDesc(nsAString & aLongDesc)
-{
-  return NS_OK;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetLongDesc(const nsAString & aLongDesc)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-// attribute DOMString src
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetSrc(nsAString & aSrc)
-{
-  aSrc = m_src;
-  return NS_OK;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetSrc(const nsAString & aSrc)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute DOMString useMap
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetUseMap(nsAString & aUseMap)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetUseMap(const nsAString & aUseMap)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute long vspace
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetVspace(PRInt32 *aVspace)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetVspace(PRInt32 aVspace)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-// attribute long width
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetWidth(PRUint32 *aWidth)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetWidth(PRUint32 aWidth)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetDOMBaseURI(nsAString &aBaseURI)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::CompareDocumentPosition(nsIDOMNode *other, PRUint16 *_retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetTextContent(nsAString & aTextContent)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetTextContent(const nsAString & aTextContent)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::Contains(nsIDOMNode* aOther, bool* aReturn)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::LookupPrefix(const nsAString & namespaceURI, nsAString & _retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::IsDefaultNamespace(const nsAString & namespaceURI, bool *_retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::LookupNamespaceURI(const nsAString & prefix, nsAString & _retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::IsEqualNode(nsIDOMNode *arg, bool *_retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetUserData(const nsAString & key, nsIVariant *data,
-                          nsIDOMUserDataHandler *handler, nsIVariant **_retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetUserData(const nsAString & key, nsIVariant **_retval NS_OUTPARAM)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetClientTop(PRInt32 *aClientTop)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetClassList(nsIDOMDOMTokenList **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetScrollTop(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetScrollTop(PRInt32 aScrollTop)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetScrollWidth(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetScrollHeight(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetScrollLeft(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetScrollLeft(PRInt32 aScollLeft)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetClientWidth(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetClientLeft(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetElementsByClassName(const nsAString &aClasses, nsIDOMNodeList **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetChildElements(nsIDOMNodeList **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetChildElementCount(PRUint32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::ReleaseCapture()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::SetCapture(bool aRetargetToElement)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetClientRects(nsIDOMClientRectList **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetClientHeight(PRInt32 *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetFirstElementChild(nsIDOMElement **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetLastElementChild(nsIDOMElement **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::GetBoundingClientRect(nsIDOMClientRect **aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::MozMatchesSelector(const nsAString &aSelector, bool *aResult)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP nsOutlookHTMLImageElement::MozRequestPointerLock()
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP
-nsOutlookHTMLImageElement::GetX(PRInt32* aX)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP
-nsOutlookHTMLImageElement::GetY(PRInt32* aY)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
deleted file mode 100644
--- a/mailnews/import/outlook/src/nsOutlookEditor.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- Mode: C++; 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 "nscore.h"
-#include "nsIDOMHTMLImageElement.h"
-#include "nsCOMPtr.h"
-#include "nsStringGlue.h"
-#include "nsIFile.h"
-#include "nsISupportsArray.h"
-#include "nsIURI.h"
-
-#define NS_OUTLOOKHTMLIMAGEELEMENT_IID_STR "5fb3c060-20b5-11e0-b2ba-0002a5d5c51b"
-
-#define NS_OUTLOOKHTMLIMAGEELEMENT_IID \
-  {0x5fb3c060, 0x20b5, 0x11e0, \
-    { 0xb2, 0xba, 0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b }}
-
-class nsOutlookHTMLImageElement : public nsIDOMHTMLImageElement
-{
-  public:
-    NS_DECLARE_STATIC_IID_ACCESSOR(NS_OUTLOOKHTMLIMAGEELEMENT_IID)
-
-    NS_DECL_ISUPPORTS
-    NS_DECL_NSIDOMNODE
-    NS_DECL_NSIDOMELEMENT
-    NS_DECL_NSIDOMHTMLELEMENT
-    NS_DECL_NSIDOMHTMLIMAGEELEMENT
-
-    nsOutlookHTMLImageElement(nsIURI *uri, const nsAString &cid, const nsAString &name);
-    inline const wchar_t* OrigCid() const { return m_cid_orig.get(); }
-
-  private:
-    ~nsOutlookHTMLImageElement();
-
-    nsString                    m_src;
-    nsString                    m_cid_orig;
-    nsString                    m_name;
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(nsOutlookHTMLImageElement, NS_OUTLOOKHTMLIMAGEELEMENT_IID)
--- a/mailnews/import/src/Makefile.in
+++ b/mailnews/import/src/Makefile.in
@@ -30,14 +30,15 @@ CPPSRCS		= 	\
 			ImportTranslate.cpp				\
 			nsImportTranslator.cpp			\
 			ImportCharSet.cpp				\
 			ImportOutFile.cpp				\
 			nsImportScanFile.cpp			\
 			nsImportEncodeScan.cpp			\
 			nsImportMimeEncode.cpp			\
 			nsImportFieldMap.cpp			\
+			nsImportEmbeddedImageData.cpp			\
 			$(NULL)
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/mailnews/import/src/nsImportEmbeddedImageData.cpp
@@ -0,0 +1,64 @@
+/* -*- Mode: C++; 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 "nsImportEmbeddedImageData.h"
+
+NS_IMPL_ISUPPORTS1(nsImportEmbeddedImageData, nsIMsgEmbeddedImageData)
+
+nsImportEmbeddedImageData::nsImportEmbeddedImageData()
+{
+}
+
+nsImportEmbeddedImageData::nsImportEmbeddedImageData(
+  nsIURI *aUri, const nsACString &aCid) : m_uri(aUri), m_cid(aCid)
+{
+}
+
+nsImportEmbeddedImageData::nsImportEmbeddedImageData(
+  nsIURI *aUri, const nsACString &aCid, const nsACString &aName)
+  : m_uri(aUri), m_cid(aCid), m_name(aName)
+{
+}
+
+nsImportEmbeddedImageData::~nsImportEmbeddedImageData()
+{
+}
+
+NS_IMETHODIMP nsImportEmbeddedImageData::GetUri(nsIURI **aUri)
+{
+  NS_ENSURE_ARG_POINTER(aUri);
+  NS_IF_ADDREF(*aUri = m_uri);
+  return NS_OK;
+}
+
+NS_IMETHODIMP nsImportEmbeddedImageData::SetUri(nsIURI *aUri)
+{
+  m_uri = aUri;
+  return NS_OK;
+}
+
+NS_IMETHODIMP nsImportEmbeddedImageData::GetCid(nsACString &aCid)
+{
+  aCid = m_cid;
+  return NS_OK;
+}
+
+NS_IMETHODIMP nsImportEmbeddedImageData::SetCid(const nsACString &aCid)
+{
+  m_cid = aCid;
+  return NS_OK;
+}
+
+NS_IMETHODIMP nsImportEmbeddedImageData::GetName(nsACString &aName)
+{
+  aName = m_name;
+  return NS_OK;
+}
+
+NS_IMETHODIMP nsImportEmbeddedImageData::SetName(const nsACString &aName)
+{
+  m_name = aName;
+  return NS_OK;
+}
new file mode 100644
--- /dev/null
+++ b/mailnews/import/src/nsImportEmbeddedImageData.h
@@ -0,0 +1,29 @@
+/* -*- Mode: C++; 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/. */
+
+#ifndef __IMPORTEMBEDDEDIMAGETDATA_H__
+#define __IMPORTEMBEDDEDIMAGETDATA_H__
+
+#include "nsIMsgSend.h"
+#include "nsString.h"
+#include "nsIURI.h"
+
+class nsImportEmbeddedImageData : public nsIMsgEmbeddedImageData
+{
+public:
+  nsImportEmbeddedImageData(nsIURI *aUri, const nsACString &aCID);
+  nsImportEmbeddedImageData(nsIURI *aUri, const nsACString &aCID, const nsACString &aName);
+  nsImportEmbeddedImageData();
+  ~nsImportEmbeddedImageData();
+  NS_DECL_NSIMSGEMBEDDEDIMAGEDATA
+  NS_DECL_ISUPPORTS
+
+  nsCOMPtr<nsIURI> m_uri;
+  nsCString m_cid;
+  nsCString m_name;
+};
+
+
+#endif
--- a/mailnews/mime/src/mimedrft.cpp
+++ b/mailnews/mime/src/mimedrft.cpp
@@ -31,16 +31,17 @@
 #include "nsIMsgSend.h"
 #include "nsMimeStringResources.h"
 #include "nsIIOService.h"
 #include "nsNetUtil.h"
 #include "comi18n.h"
 #include "nsIMsgCompFields.h"
 #include "nsMsgCompCID.h"
 #include "nsIMsgComposeService.h"
+#include "nsMsgAttachmentData.h"
 #include "nsMsgI18N.h"
 #include "nsNativeCharsetUtils.h"
 #include "nsDirectoryServiceDefs.h"
 #include "nsIMsgMessageService.h"
 #include "nsMsgUtils.h"
 #include "nsCExternalHandlerService.h"
 #include "nsIMIMEService.h"
 #include "nsIMsgHeaderParser.h"
--- a/mailnews/mime/src/mimemoz2.h
+++ b/mailnews/mime/src/mimemoz2.h
@@ -8,16 +8,17 @@
 
 #include "prtypes.h"
 #include "nsStreamConverter.h"
 #include "nsIMimeEmitter.h"
 #include "nsIURI.h"
 #include "mozITXTToHTMLConv.h"
 #include "nsIMsgSend.h"
 #include "nsIMimeConverter.h"
+#include "nsMsgAttachmentData.h"
 
 // SHERRY - Need to get these out of here eventually
 
 #ifdef XP_UNIX
 #undef Bool
 #endif