зеркало из https://github.com/mozilla/gecko-dev.git
Bug 650784 part 2 - Make nsPlainTextSerializer not be a content sink. r=smaug.
This commit is contained in:
Родитель
f0516a6bba
Коммит
36e9d25a16
|
@ -65,7 +65,6 @@ nsINodeList.h \
|
|||
nsIScriptElement.h \
|
||||
nsIStyleSheetLinkingElement.h \
|
||||
nsIContentSerializer.h \
|
||||
nsIHTMLToTextSink.h \
|
||||
nsIXPathEvaluatorInternal.h \
|
||||
mozISanitizingSerializer.h \
|
||||
nsCaseTreatment.h \
|
||||
|
|
|
@ -1,66 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either of 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 MPL, 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 MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef _nsIPlainTextSink_h__
|
||||
#define _nsIPlainTextSink_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsStringGlue.h"
|
||||
|
||||
#define NS_PLAINTEXTSINK_CONTRACTID "@mozilla.org/layout/plaintextsink;1"
|
||||
|
||||
/* starting interface: nsIContentSerializer */
|
||||
#define NS_IHTMLTOTEXTSINK_IID_STR "b12b5643-07cb-401e-aabb-64b2dcd2717f"
|
||||
|
||||
#define NS_IHTMLTOTEXTSINK_IID \
|
||||
{0xb12b5643, 0x07cb, 0x401e, \
|
||||
{ 0xaa, 0xbb, 0x64, 0xb2, 0xdc, 0xd2, 0x71, 0x7f }}
|
||||
|
||||
|
||||
class nsIHTMLToTextSink : public nsISupports {
|
||||
public:
|
||||
|
||||
NS_DECLARE_STATIC_IID_ACCESSOR(NS_IHTMLTOTEXTSINK_IID)
|
||||
|
||||
NS_IMETHOD Initialize(nsAString* aOutString,
|
||||
PRUint32 aFlags, PRUint32 aWrapCol) = 0;
|
||||
// This function violates string ownership rules, see impl.
|
||||
};
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(nsIHTMLToTextSink, NS_IHTMLTOTEXTSINK_IID)
|
||||
|
||||
#endif
|
|
@ -144,11 +144,8 @@ nsPlainTextSerializer::~nsPlainTextSerializer()
|
|||
NS_WARN_IF_FALSE(mHeadLevel == 0, "Wrong head level!");
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS4(nsPlainTextSerializer,
|
||||
nsIContentSerializer,
|
||||
nsIContentSink,
|
||||
nsIHTMLContentSink,
|
||||
nsIHTMLToTextSink)
|
||||
NS_IMPL_ISUPPORTS1(nsPlainTextSerializer,
|
||||
nsIContentSerializer)
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -170,8 +167,6 @@ nsPlainTextSerializer::Init(PRUint32 aFlags, PRUint32 aWrapColumn,
|
|||
}
|
||||
#endif
|
||||
|
||||
NS_ENSURE_TRUE(nsContentUtils::GetParserService(), NS_ERROR_UNEXPECTED);
|
||||
|
||||
mFlags = aFlags;
|
||||
mWrapColumn = aWrapColumn;
|
||||
|
||||
|
@ -457,83 +452,6 @@ nsPlainTextSerializer::AppendDocumentStart(nsIDocument *aDocument,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPlainTextSerializer::OpenContainer(const nsIParserNode& aNode)
|
||||
{
|
||||
PRInt32 type = aNode.GetNodeType();
|
||||
|
||||
if (type == eHTMLTag_head) {
|
||||
++mHeadLevel;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return DoOpenContainer(&aNode, type);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPlainTextSerializer::CloseContainer(const nsHTMLTag aTag)
|
||||
{
|
||||
if (aTag == eHTMLTag_head) {
|
||||
--mHeadLevel;
|
||||
NS_ASSERTION(mHeadLevel >= 0, "mHeadLevel < 0");
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return DoCloseContainer(aTag);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPlainTextSerializer::AddLeaf(const nsIParserNode& aNode)
|
||||
{
|
||||
if (mIgnoreAboveIndex != (PRUint32)kNotFound) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
eHTMLTags type = (eHTMLTags)aNode.GetNodeType();
|
||||
const nsAString& text = aNode.GetText();
|
||||
|
||||
if ((type == eHTMLTag_text) ||
|
||||
(type == eHTMLTag_whitespace) ||
|
||||
(type == eHTMLTag_newline)) {
|
||||
// Copy the text out, stripping out CRs
|
||||
nsAutoString str;
|
||||
PRUint32 length;
|
||||
str.SetCapacity(text.Length());
|
||||
nsReadingIterator<PRUnichar> srcStart, srcEnd;
|
||||
length = nsContentUtils::CopyNewlineNormalizedUnicodeTo(text.BeginReading(srcStart), text.EndReading(srcEnd), str);
|
||||
str.SetLength(length);
|
||||
return DoAddLeaf(&aNode, type, str);
|
||||
}
|
||||
else {
|
||||
return DoAddLeaf(&aNode, type, text);
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPlainTextSerializer::OpenHead()
|
||||
{
|
||||
++mHeadLevel;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPlainTextSerializer::IsEnabled(PRInt32 aTag, bool* aReturn)
|
||||
{
|
||||
nsHTMLTag theHTMLTag = nsHTMLTag(aTag);
|
||||
|
||||
if (theHTMLTag == eHTMLTag_script) {
|
||||
*aReturn = !(mFlags & nsIDocumentEncoder::OutputNoScriptContent);
|
||||
}
|
||||
else if (theHTMLTag == eHTMLTag_frameset) {
|
||||
*aReturn = !(mFlags & nsIDocumentEncoder::OutputNoFramesContent);
|
||||
}
|
||||
else {
|
||||
*aReturn = false;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* aNode may be null when we're working with the DOM, but then mElement is
|
||||
* useable instead.
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
#include "nsILineBreaker.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIAtom.h"
|
||||
#include "nsIHTMLToTextSink.h"
|
||||
#include "nsIDocumentEncoder.h"
|
||||
#include "nsTArray.h"
|
||||
|
||||
|
@ -62,9 +61,7 @@ class Element;
|
|||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
||||
class nsPlainTextSerializer : public nsIContentSerializer,
|
||||
public nsIHTMLContentSink,
|
||||
public nsIHTMLToTextSink
|
||||
class nsPlainTextSerializer : public nsIContentSerializer
|
||||
{
|
||||
public:
|
||||
nsPlainTextSerializer();
|
||||
|
@ -100,29 +97,6 @@ public:
|
|||
NS_IMETHOD AppendDocumentStart(nsIDocument *aDocument,
|
||||
nsAString& aStr);
|
||||
|
||||
// nsIContentSink
|
||||
NS_IMETHOD WillParse(void) { return NS_OK; }
|
||||
NS_IMETHOD WillInterrupt(void) { return NS_OK; }
|
||||
NS_IMETHOD WillResume(void) { return NS_OK; }
|
||||
NS_IMETHOD SetParser(nsParserBase* aParser) { return NS_OK; }
|
||||
NS_IMETHOD OpenContainer(const nsIParserNode& aNode);
|
||||
NS_IMETHOD CloseContainer(const nsHTMLTag aTag);
|
||||
NS_IMETHOD AddLeaf(const nsIParserNode& aNode);
|
||||
virtual void FlushPendingNotifications(mozFlushType aType) { }
|
||||
NS_IMETHOD SetDocumentCharset(nsACString& aCharset) { return NS_OK; }
|
||||
virtual nsISupports *GetTarget() { return nsnull; }
|
||||
|
||||
// nsIHTMLContentSink
|
||||
NS_IMETHOD OpenHead();
|
||||
NS_IMETHOD IsEnabled(PRInt32 aTag, bool* aReturn);
|
||||
NS_IMETHOD NotifyTagObservers(nsIParserNode* aNode) { return NS_OK; }
|
||||
|
||||
NS_IMETHOD BeginContext(PRInt32 aPosition) { return NS_OK; }
|
||||
NS_IMETHOD EndContext(PRInt32 aPosition) { return NS_OK; }
|
||||
NS_IMETHOD DidProcessTokens(void) { return NS_OK; }
|
||||
NS_IMETHOD WillProcessAToken(void) { return NS_OK; }
|
||||
NS_IMETHOD DidProcessAToken(void) { return NS_OK; }
|
||||
|
||||
// nsIHTMLToTextSink
|
||||
NS_IMETHOD Initialize(nsAString* aOutString,
|
||||
PRUint32 aFlags, PRUint32 aWrapCol);
|
||||
|
|
|
@ -62,7 +62,6 @@
|
|||
#include "nsIFactory.h"
|
||||
#include "nsIFrameUtil.h"
|
||||
#include "nsHTMLStyleSheet.h"
|
||||
#include "nsIHTMLToTextSink.h"
|
||||
#include "nsILayoutDebugger.h"
|
||||
#include "nsINameSpaceManager.h"
|
||||
#include "nsINodeInfo.h"
|
||||
|
@ -1136,7 +1135,6 @@ static const mozilla::Module::ContractIDEntry kLayoutContracts[] = {
|
|||
{ NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/html", &kNS_HTMLCONTENTSERIALIZER_CID },
|
||||
{ NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/vnd.mozilla.xul+xml", &kNS_XMLCONTENTSERIALIZER_CID },
|
||||
{ NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/plain", &kNS_PLAINTEXTSERIALIZER_CID },
|
||||
{ NS_PLAINTEXTSINK_CONTRACTID, &kNS_PLAINTEXTSERIALIZER_CID },
|
||||
{ MOZ_SANITIZINGHTMLSERIALIZER_CONTRACTID, &kMOZ_SANITIZINGHTMLSERIALIZER_CID },
|
||||
{ NS_PARSERUTILS_CONTRACTID, &kNS_PARSERUTILS_CID },
|
||||
{ NS_SCRIPTABLEUNESCAPEHTML_CONTRACTID, &kNS_SCRIPTABLEUNESCAPEHTML_CID },
|
||||
|
|
Загрузка…
Ссылка в новой задаче