2001-09-25 01:32:19 +00:00
|
|
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* ***** BEGIN LICENSE BLOCK *****
|
|
|
|
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
2000-09-11 05:10:32 +00:00
|
|
|
*
|
2001-09-25 01:32:19 +00:00
|
|
|
* The contents of this file are subject to the Netscape Public License
|
|
|
|
* Version 1.1 (the "License"); you may not use this file except in
|
|
|
|
* compliance with the License. You may obtain a copy of the License at
|
|
|
|
* http://www.mozilla.org/NPL/
|
2000-09-11 05:10:32 +00:00
|
|
|
*
|
2001-09-25 01:32:19 +00:00
|
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
|
|
* for the specific language governing rights and limitations under the
|
|
|
|
* License.
|
2000-09-11 05:10:32 +00:00
|
|
|
*
|
|
|
|
* The Original Code is mozilla.org code.
|
|
|
|
*
|
2001-09-25 01:32:19 +00:00
|
|
|
* The Initial Developer of the Original Code is
|
|
|
|
* Netscape Communications Corporation.
|
|
|
|
* Portions created by the Initial Developer are Copyright (C) 1998
|
|
|
|
* the Initial Developer. All Rights Reserved.
|
2000-09-11 05:10:32 +00:00
|
|
|
*
|
2001-09-25 01:32:19 +00:00
|
|
|
* Contributor(s):
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
|
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
|
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
|
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
|
|
* of those above. If you wish to allow use of your version of this file only
|
|
|
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
|
|
* use your version of this file under the terms of the NPL, indicate your
|
|
|
|
* decision by deleting the provisions above and replace them with the notice
|
|
|
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
|
|
* the provisions above, a recipient may use your version of this file under
|
|
|
|
* the terms of any one of the NPL, the GPL or the LGPL.
|
|
|
|
*
|
|
|
|
* ***** END LICENSE BLOCK ***** */
|
2000-09-11 05:10:32 +00:00
|
|
|
|
|
|
|
#ifndef nsPlainTextSerializer_h__
|
|
|
|
#define nsPlainTextSerializer_h__
|
|
|
|
|
|
|
|
#include "nsIContentSerializer.h"
|
|
|
|
#include "nsIHTMLContentSink.h"
|
|
|
|
#include "nsHTMLTags.h"
|
|
|
|
#include "nsCOMPtr.h"
|
|
|
|
#include "nsString.h"
|
|
|
|
#include "nsILineBreaker.h"
|
|
|
|
#include "nsIContent.h"
|
|
|
|
#include "nsIAtom.h"
|
Checking in for bug 50742, this change removes the use of XIF in mozilla and replaces the XIF converter with a HTML (and XML) serializer.
Contextual information added to HTML copy and intelligence added to HTML paste in the editor (fixes bugs 47014, 50568 and 46554, and partly (at least) fixes bug 53188).
Code written by vidur, jfrancis, jst, akkana. Tested by jfrancis, akkana, vidur, jst, kin. Reviwed (and super reviewed) by waterson, vidur, kin, jfrancis, jst
2000-10-07 10:57:30 +00:00
|
|
|
#include "nsIHTMLToTextSink.h"
|
2001-01-12 07:26:39 +00:00
|
|
|
#include "nsIDocumentEncoder.h"
|
2002-12-14 06:16:56 +00:00
|
|
|
#include "nsVoidArray.h"
|
Checking in for bug 50742, this change removes the use of XIF in mozilla and replaces the XIF converter with a HTML (and XML) serializer.
Contextual information added to HTML copy and intelligence added to HTML paste in the editor (fixes bugs 47014, 50568 and 46554, and partly (at least) fixes bug 53188).
Code written by vidur, jfrancis, jst, akkana. Tested by jfrancis, akkana, vidur, jst, kin. Reviwed (and super reviewed) by waterson, vidur, kin, jfrancis, jst
2000-10-07 10:57:30 +00:00
|
|
|
|
2000-09-11 05:10:32 +00:00
|
|
|
|
|
|
|
class nsPlainTextSerializer : public nsIContentSerializer,
|
Checking in for bug 50742, this change removes the use of XIF in mozilla and replaces the XIF converter with a HTML (and XML) serializer.
Contextual information added to HTML copy and intelligence added to HTML paste in the editor (fixes bugs 47014, 50568 and 46554, and partly (at least) fixes bug 53188).
Code written by vidur, jfrancis, jst, akkana. Tested by jfrancis, akkana, vidur, jst, kin. Reviwed (and super reviewed) by waterson, vidur, kin, jfrancis, jst
2000-10-07 10:57:30 +00:00
|
|
|
public nsIHTMLContentSink,
|
|
|
|
public nsIHTMLToTextSink
|
2000-09-11 05:10:32 +00:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
nsPlainTextSerializer();
|
|
|
|
virtual ~nsPlainTextSerializer();
|
|
|
|
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
|
|
|
|
// nsIContentSerializer
|
2001-02-13 01:00:14 +00:00
|
|
|
NS_IMETHOD Init(PRUint32 flags, PRUint32 aWrapColumn,
|
2002-03-12 08:21:51 +00:00
|
|
|
nsIAtom* aCharSet, PRBool aIsCopying);
|
2000-09-11 05:10:32 +00:00
|
|
|
|
|
|
|
NS_IMETHOD AppendText(nsIDOMText* aText, PRInt32 aStartOffset,
|
2002-03-23 23:54:46 +00:00
|
|
|
PRInt32 aEndOffset, nsAString& aStr);
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD AppendCDATASection(nsIDOMCDATASection* aCDATASection,
|
|
|
|
PRInt32 aStartOffset, PRInt32 aEndOffset,
|
2002-03-23 23:54:46 +00:00
|
|
|
nsAString& aStr) { return NS_OK; }
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD AppendProcessingInstruction(nsIDOMProcessingInstruction* aPI,
|
|
|
|
PRInt32 aStartOffset,
|
|
|
|
PRInt32 aEndOffset,
|
2002-03-23 23:54:46 +00:00
|
|
|
nsAString& aStr) { return NS_OK; }
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD AppendComment(nsIDOMComment* aComment, PRInt32 aStartOffset,
|
2002-03-23 23:54:46 +00:00
|
|
|
PRInt32 aEndOffset, nsAString& aStr) { return NS_OK; }
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD AppendDoctype(nsIDOMDocumentType *aDoctype,
|
2002-03-23 23:54:46 +00:00
|
|
|
nsAString& aStr) { return NS_OK; }
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD AppendElementStart(nsIDOMElement *aElement,
|
2002-04-02 21:12:51 +00:00
|
|
|
PRBool aHasChildren,
|
2002-03-23 23:54:46 +00:00
|
|
|
nsAString& aStr);
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD AppendElementEnd(nsIDOMElement *aElement,
|
2002-03-23 23:54:46 +00:00
|
|
|
nsAString& aStr);
|
|
|
|
NS_IMETHOD Flush(nsAString& aStr);
|
2002-08-13 18:41:16 +00:00
|
|
|
|
|
|
|
NS_IMETHOD AppendDocumentStart(nsIDOMDocument *aDocument,
|
|
|
|
nsAString& aStr);
|
2000-09-11 05:10:32 +00:00
|
|
|
|
|
|
|
// nsIContentSink
|
|
|
|
NS_IMETHOD WillBuildModel(void) { return NS_OK; }
|
|
|
|
NS_IMETHOD DidBuildModel(PRInt32 aQualityLevel) { return NS_OK; }
|
|
|
|
NS_IMETHOD WillInterrupt(void) { return NS_OK; }
|
|
|
|
NS_IMETHOD WillResume(void) { return NS_OK; }
|
|
|
|
NS_IMETHOD SetParser(nsIParser* aParser) { return NS_OK; }
|
|
|
|
NS_IMETHOD OpenContainer(const nsIParserNode& aNode);
|
2002-11-19 18:29:35 +00:00
|
|
|
NS_IMETHOD CloseContainer(const nsHTMLTag aTag);
|
2003-01-03 23:17:22 +00:00
|
|
|
NS_IMETHOD AddHeadContent(const nsIParserNode& aNode);
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD AddLeaf(const nsIParserNode& aNode);
|
|
|
|
NS_IMETHOD AddComment(const nsIParserNode& aNode) { return NS_OK; }
|
|
|
|
NS_IMETHOD AddProcessingInstruction(const nsIParserNode& aNode) { return NS_OK; }
|
2002-06-25 21:16:17 +00:00
|
|
|
NS_IMETHOD AddDocTypeDecl(const nsIParserNode& aNode) { return NS_OK; }
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD FlushPendingNotifications() { return NS_OK; }
|
2002-03-23 23:54:46 +00:00
|
|
|
NS_IMETHOD SetDocumentCharset(nsAString& aCharset) { return NS_OK; }
|
2001-09-28 23:08:17 +00:00
|
|
|
NS_IMETHOD NotifyTagObservers(nsIParserNode* aNode) { return NS_OK; }
|
2000-09-11 05:10:32 +00:00
|
|
|
|
|
|
|
// nsIHTMLContentSink
|
|
|
|
NS_IMETHOD SetTitle(const nsString& aValue) { return NS_OK; }
|
|
|
|
NS_IMETHOD OpenHTML(const nsIParserNode& aNode);
|
2002-11-19 18:29:35 +00:00
|
|
|
NS_IMETHOD CloseHTML();
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD OpenHead(const nsIParserNode& aNode);
|
2002-11-19 18:29:35 +00:00
|
|
|
NS_IMETHOD CloseHead();
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD OpenBody(const nsIParserNode& aNode);
|
2002-11-19 18:29:35 +00:00
|
|
|
NS_IMETHOD CloseBody();
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD OpenForm(const nsIParserNode& aNode);
|
2002-11-19 18:29:35 +00:00
|
|
|
NS_IMETHOD CloseForm();
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD OpenMap(const nsIParserNode& aNode);
|
2002-11-19 18:29:35 +00:00
|
|
|
NS_IMETHOD CloseMap();
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD OpenFrameset(const nsIParserNode& aNode);
|
2002-11-19 18:29:35 +00:00
|
|
|
NS_IMETHOD CloseFrameset();
|
2003-01-16 20:24:03 +00:00
|
|
|
NS_IMETHOD IsEnabled(PRInt32 aTag, PRBool* aReturn);
|
2002-04-12 00:39:05 +00:00
|
|
|
NS_IMETHOD_(PRBool) IsFormOnStack() { return PR_FALSE; }
|
|
|
|
|
2000-09-11 05:10:32 +00:00
|
|
|
NS_IMETHOD DoFragment(PRBool aFlag);
|
|
|
|
NS_IMETHOD BeginContext(PRInt32 aPosition) { return NS_OK; }
|
|
|
|
NS_IMETHOD EndContext(PRInt32 aPosition) { return NS_OK; }
|
2001-06-21 02:06:23 +00:00
|
|
|
NS_IMETHOD WillProcessTokens(void) { return NS_OK; }
|
|
|
|
NS_IMETHOD DidProcessTokens(void) { return NS_OK; }
|
|
|
|
NS_IMETHOD WillProcessAToken(void) { return NS_OK; }
|
|
|
|
NS_IMETHOD DidProcessAToken(void) { return NS_OK; }
|
2000-09-11 05:10:32 +00:00
|
|
|
|
Checking in for bug 50742, this change removes the use of XIF in mozilla and replaces the XIF converter with a HTML (and XML) serializer.
Contextual information added to HTML copy and intelligence added to HTML paste in the editor (fixes bugs 47014, 50568 and 46554, and partly (at least) fixes bug 53188).
Code written by vidur, jfrancis, jst, akkana. Tested by jfrancis, akkana, vidur, jst, kin. Reviwed (and super reviewed) by waterson, vidur, kin, jfrancis, jst
2000-10-07 10:57:30 +00:00
|
|
|
// nsIHTMLToTextSink
|
2002-03-23 23:54:46 +00:00
|
|
|
NS_IMETHOD Initialize(nsAString* aOutString,
|
Checking in for bug 50742, this change removes the use of XIF in mozilla and replaces the XIF converter with a HTML (and XML) serializer.
Contextual information added to HTML copy and intelligence added to HTML paste in the editor (fixes bugs 47014, 50568 and 46554, and partly (at least) fixes bug 53188).
Code written by vidur, jfrancis, jst, akkana. Tested by jfrancis, akkana, vidur, jst, kin. Reviwed (and super reviewed) by waterson, vidur, kin, jfrancis, jst
2000-10-07 10:57:30 +00:00
|
|
|
PRUint32 aFlags, PRUint32 aWrapCol);
|
|
|
|
|
2000-09-11 05:10:32 +00:00
|
|
|
protected:
|
2002-12-14 06:16:56 +00:00
|
|
|
nsresult GetAttributeValue(const nsIParserNode* node, nsIAtom* aName, nsString& aValueRet);
|
2000-09-11 05:10:32 +00:00
|
|
|
void AddToLine(const PRUnichar* aStringToAdd, PRInt32 aLength);
|
|
|
|
void EndLine(PRBool softlinebreak);
|
|
|
|
void EnsureVerticalSpace(PRInt32 noOfRows);
|
|
|
|
void FlushLine();
|
2001-04-10 01:11:39 +00:00
|
|
|
void OutputQuotesAndIndent(PRBool stripTrailingSpaces=PR_FALSE);
|
2001-01-12 07:26:39 +00:00
|
|
|
void Output(nsString& aString);
|
2002-03-23 23:54:46 +00:00
|
|
|
void Write(const nsAString& aString);
|
Checking in for bug 50742, this change removes the use of XIF in mozilla and replaces the XIF converter with a HTML (and XML) serializer.
Contextual information added to HTML copy and intelligence added to HTML paste in the editor (fixes bugs 47014, 50568 and 46554, and partly (at least) fixes bug 53188).
Code written by vidur, jfrancis, jst, akkana. Tested by jfrancis, akkana, vidur, jst, kin. Reviwed (and super reviewed) by waterson, vidur, kin, jfrancis, jst
2000-10-07 10:57:30 +00:00
|
|
|
PRBool IsBlockLevel(PRInt32 aId);
|
|
|
|
PRBool IsContainer(PRInt32 aId);
|
2000-11-04 20:51:33 +00:00
|
|
|
PRBool IsInPre();
|
2002-09-15 13:14:14 +00:00
|
|
|
PRBool IsInOL();
|
2002-12-14 06:16:56 +00:00
|
|
|
PRBool IsCurrentNodeConverted(const nsIParserNode* aNode);
|
2000-09-11 05:10:32 +00:00
|
|
|
nsresult GetIdForContent(nsIContent* aContent, PRInt32* aID);
|
2002-12-14 06:16:56 +00:00
|
|
|
nsresult DoOpenContainer(const nsIParserNode* aNode, PRInt32 aTag);
|
Checking in for bug 50742, this change removes the use of XIF in mozilla and replaces the XIF converter with a HTML (and XML) serializer.
Contextual information added to HTML copy and intelligence added to HTML paste in the editor (fixes bugs 47014, 50568 and 46554, and partly (at least) fixes bug 53188).
Code written by vidur, jfrancis, jst, akkana. Tested by jfrancis, akkana, vidur, jst, kin. Reviwed (and super reviewed) by waterson, vidur, kin, jfrancis, jst
2000-10-07 10:57:30 +00:00
|
|
|
nsresult DoCloseContainer(PRInt32 aTag);
|
2002-12-14 06:16:56 +00:00
|
|
|
nsresult DoAddLeaf(const nsIParserNode* aNode,
|
|
|
|
PRInt32 aTag,
|
|
|
|
const nsAString& aText);
|
2000-09-11 05:10:32 +00:00
|
|
|
|
2001-01-12 07:26:39 +00:00
|
|
|
// Inlined functions
|
|
|
|
inline PRBool MayWrap()
|
|
|
|
{
|
|
|
|
return mWrapColumn &&
|
|
|
|
((mFlags & nsIDocumentEncoder::OutputFormatted) ||
|
|
|
|
(mFlags & nsIDocumentEncoder::OutputWrap));
|
|
|
|
}
|
|
|
|
|
|
|
|
inline PRBool DoOutput()
|
|
|
|
{
|
|
|
|
return !mInHead;
|
|
|
|
}
|
2002-12-19 06:22:55 +00:00
|
|
|
|
|
|
|
// Stack handling functions
|
|
|
|
PRBool GetLastBool(const nsVoidArray& aStack);
|
|
|
|
void SetLastBool(nsVoidArray& aStack, PRBool aValue);
|
|
|
|
void PushBool(nsVoidArray& aStack, PRBool aValue);
|
|
|
|
PRBool PopBool(nsVoidArray& aStack);
|
2001-01-12 07:26:39 +00:00
|
|
|
|
2000-09-11 05:10:32 +00:00
|
|
|
protected:
|
|
|
|
nsString mCurrentLine;
|
|
|
|
|
2001-12-14 23:10:42 +00:00
|
|
|
PRPackedBool mInHead;
|
|
|
|
PRPackedBool mAtFirstColumn;
|
2002-04-16 23:11:33 +00:00
|
|
|
|
|
|
|
// Handling of quoted text (for mail):
|
|
|
|
// Quotes need to be wrapped differently from non-quoted text,
|
|
|
|
// because quoted text has a few extra characters (e.g. ">> ")
|
|
|
|
// which makes the line length longer.
|
|
|
|
// Mail can represent quotes in different ways: it can wrap
|
|
|
|
// quotes in a <pre> (if editor.quotesPreformatted is set),
|
|
|
|
// or not wrapped in any special tag (if mail.compose.wrap_to_window_width)
|
|
|
|
// or in a <span> (if neither of the above are set).
|
|
|
|
PRPackedBool mQuotesPreformatted; // expect quotes wrapped in <pre>
|
|
|
|
PRPackedBool mDontWrapAnyQuotes; // no special quote markers
|
|
|
|
|
2001-12-14 23:10:42 +00:00
|
|
|
PRPackedBool mStructs; // Output structs (pref)
|
|
|
|
|
2000-09-11 05:10:32 +00:00
|
|
|
PRInt32 mIndent;
|
|
|
|
// mInIndentString keeps a header that has to be written in the indent.
|
|
|
|
// That could be, for instance, the bullet in a bulleted list.
|
|
|
|
nsString mInIndentString;
|
|
|
|
PRInt32 mCiteQuoteLevel;
|
|
|
|
PRInt32 mFlags;
|
2002-03-04 10:47:19 +00:00
|
|
|
PRInt32 mFloatingLines; // To store the number of lazy line breaks
|
2000-09-11 05:10:32 +00:00
|
|
|
|
|
|
|
// The wrap column is how many standard sized chars (western languages)
|
|
|
|
// should be allowed on a line. There could be less chars if the chars
|
|
|
|
// are wider than latin chars of more if the chars are more narrow.
|
|
|
|
PRUint32 mWrapColumn;
|
|
|
|
|
|
|
|
// The width of the line as it will appear on the screen (approx.)
|
|
|
|
PRUint32 mCurrentLineWidth;
|
|
|
|
|
2001-07-13 18:45:53 +00:00
|
|
|
// Treat quoted text as though it's preformatted -- don't wrap it.
|
|
|
|
// Having it on a pref is a temporary measure, See bug 69638.
|
|
|
|
PRInt32 mSpanLevel;
|
|
|
|
|
2001-12-14 23:10:42 +00:00
|
|
|
|
2000-09-11 05:10:32 +00:00
|
|
|
PRInt32 mEmptyLines; // Will be the number of empty lines before
|
|
|
|
// the current. 0 if we are starting a new
|
|
|
|
// line and -1 if we are in a line.
|
2001-12-14 23:10:42 +00:00
|
|
|
|
|
|
|
PRPackedBool mInWhitespace;
|
|
|
|
PRPackedBool mPreFormatted;
|
|
|
|
PRPackedBool mStartedOutput; // we've produced at least a character
|
2000-09-11 05:10:32 +00:00
|
|
|
|
2002-03-04 10:47:19 +00:00
|
|
|
// While handling a new tag, this variable should remind if any line break
|
|
|
|
// is due because of a closing tag. Setting it to "TRUE" while closing the tags.
|
|
|
|
// Hence opening tags are guaranteed to start with appropriate line breaks.
|
|
|
|
PRPackedBool mLineBreakDue;
|
|
|
|
|
2000-09-11 05:10:32 +00:00
|
|
|
nsString mURL;
|
|
|
|
PRInt32 mHeaderStrategy; /* Header strategy (pref)
|
|
|
|
0 = no indention
|
|
|
|
1 = indention, increased with
|
|
|
|
header level (default)
|
|
|
|
2 = numbering and slight indention */
|
|
|
|
PRInt32 mHeaderCounter[7]; /* For header-numbering:
|
|
|
|
Number of previous headers of
|
|
|
|
the same depth and in the same
|
|
|
|
section.
|
|
|
|
mHeaderCounter[1] for <h1> etc. */
|
|
|
|
|
|
|
|
nsCOMPtr<nsIContent> mContent;
|
|
|
|
|
2002-12-19 06:22:55 +00:00
|
|
|
// For handling table rows
|
|
|
|
nsAutoVoidArray mHasWrittenCellsForRow; // really an array of bools
|
|
|
|
|
2002-12-14 06:16:56 +00:00
|
|
|
// Values gotten in OpenContainer that is (also) needed in CloseContainer
|
|
|
|
nsAutoVoidArray mCurrentNodeIsConverted; // really an array of bools
|
|
|
|
nsAutoVoidArray mIsInCiteBlockquote; // really an array of bools
|
|
|
|
|
|
|
|
// The output data
|
2002-03-23 23:54:46 +00:00
|
|
|
nsAString* mOutputString;
|
2000-09-11 05:10:32 +00:00
|
|
|
|
|
|
|
// The tag stack: the stack of tags we're operating on, so we can nest:
|
|
|
|
nsHTMLTag *mTagStack;
|
|
|
|
PRUint32 mTagStackIndex;
|
|
|
|
|
2001-11-30 09:19:33 +00:00
|
|
|
// Content in the stack above this index should be ignored:
|
|
|
|
PRUint32 mIgnoreAboveIndex;
|
|
|
|
|
2000-09-11 05:10:32 +00:00
|
|
|
// The stack for ordered lists:
|
|
|
|
PRInt32 *mOLStack;
|
|
|
|
PRUint32 mOLStackIndex;
|
|
|
|
|
2001-04-10 01:11:39 +00:00
|
|
|
PRUint32 mULCount;
|
|
|
|
|
2000-09-11 05:10:32 +00:00
|
|
|
nsString mLineBreak;
|
|
|
|
nsCOMPtr<nsILineBreaker> mLineBreaker;
|
2001-01-12 07:26:39 +00:00
|
|
|
|
|
|
|
// Conveniance constant. It would be nice to have it as a const static
|
|
|
|
// variable, but that causes issues with OpenBSD and module unloading.
|
|
|
|
const nsString kSpace;
|
2000-09-11 05:10:32 +00:00
|
|
|
};
|
|
|
|
|
Checking in for bug 50742, this change removes the use of XIF in mozilla and replaces the XIF converter with a HTML (and XML) serializer.
Contextual information added to HTML copy and intelligence added to HTML paste in the editor (fixes bugs 47014, 50568 and 46554, and partly (at least) fixes bug 53188).
Code written by vidur, jfrancis, jst, akkana. Tested by jfrancis, akkana, vidur, jst, kin. Reviwed (and super reviewed) by waterson, vidur, kin, jfrancis, jst
2000-10-07 10:57:30 +00:00
|
|
|
extern nsresult NS_NewPlainTextSerializer(nsIContentSerializer** aSerializer);
|
|
|
|
|
2000-09-11 05:10:32 +00:00
|
|
|
#endif
|