Back to index

lightning-sunbird  0.9+nobinonly
mimethsa.h
Go to the documentation of this file.
00001 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is mozilla.org libmime code.
00016  *
00017  * The Initial Developer of the Original Code is
00018  * Ben Bucksch <http://www.bucksch.org/1/projects/mozilla/>.
00019  * Portions created by the Initial Developer are Copyright (C) 2002
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *
00024  * Alternatively, the contents of this file may be used under the terms of
00025  * either the GNU General Public License Version 2 or later (the "GPL"), or
00026  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00027  * in which case the provisions of the GPL or the LGPL are applicable instead
00028  * of those above. If you wish to allow use of your version of this file only
00029  * under the terms of either the GPL or the LGPL, and not to allow others to
00030  * use your version of this file under the terms of the MPL, indicate your
00031  * decision by deleting the provisions above and replace them with the notice
00032  * and other provisions required by the GPL or the LGPL. If you do not delete
00033  * the provisions above, a recipient may use your version of this file under
00034  * the terms of any one of the MPL, the GPL or the LGPL.
00035  *
00036  * ***** END LICENSE BLOCK ***** */
00037 
00038 /* The MimeInlineTextHTMLSanitized class cleans up HTML
00039 
00040    This class pushes the HTML that we get from the
00041    sender of the message through a sanitizer (mozISanitizingHTMLSerializer),
00042    which lets only allowed tags through. With the appropriate configuration,
00043    this protects from most of the security and visual-formatting problems
00044    that otherwise usually come with HTML (and which partly gave HTML in email
00045    the bad reputation that it has).
00046 
00047    However, due to the parsing and serializing (and later parsing again)
00048    required, there is an inherent, significant performance hit, when doing the
00049    santinizing here at the MIME / HTML source level. But users of this class
00050    will most likely find it worth the cost. See also the comment in
00051    mozISanitizingHTMLSerializer.h.
00052  */
00053 
00054 #ifndef _MIMETHSA_H_
00055 #define _MIMETHSA_H_
00056 
00057 #include "mimethtm.h"
00058 #include "nsString.h"
00059 #include "nsReadableUtils.h"
00060 
00061 typedef struct MimeInlineTextHTMLSanitizedClass MimeInlineTextHTMLSanitizedClass;
00062 typedef struct MimeInlineTextHTMLSanitized      MimeInlineTextHTMLSanitized;
00063 
00064 struct MimeInlineTextHTMLSanitizedClass {
00065   MimeInlineTextHTMLClass html;
00066 };
00067 
00068 extern MimeInlineTextHTMLSanitizedClass mimeInlineTextHTMLSanitizedClass;
00069 
00070 struct MimeInlineTextHTMLSanitized {
00071   MimeInlineTextHTML    html;
00072   nsString             *complete_buffer;  // Gecko parser expects wide strings
00073 };
00074 
00075 #endif /* _MIMETHPL_H_ */