/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * 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/ * * 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 Communicator client code. * * The Initial Developer of the Original Code is Netscape Communications * Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): */ #ifndef NS_LOGGING_SINK_H__ #define NS_LOGGING_SINK_H__ #include "nsILoggingSink.h" class nsLoggingSink : public nsILoggingSink { public: nsLoggingSink(); virtual ~nsLoggingSink(); void SetProxySink(nsIHTMLContentSink *aSink) { mSink=aSink; } void ReleaseProxySink() { NS_IF_RELEASE(mSink); mSink=0; } // nsISupports NS_DECL_ISUPPORTS // nsIContentSink NS_IMETHOD WillBuildModel(); NS_IMETHOD DidBuildModel(PRInt32 aQualityLevel); NS_IMETHOD WillInterrupt(); NS_IMETHOD WillResume(); NS_IMETHOD SetParser(nsIParser* aParser); NS_IMETHOD OpenContainer(const nsIParserNode& aNode); NS_IMETHOD CloseContainer(const nsIParserNode& aNode); NS_IMETHOD AddLeaf(const nsIParserNode& aNode); NS_IMETHOD NotifyError(const nsParserError* aError); NS_IMETHOD AddComment(const nsIParserNode& aNode); NS_IMETHOD AddProcessingInstruction(const nsIParserNode& aNode); NS_IMETHOD AddDocTypeDecl(const nsIParserNode& aNode, PRInt32 aMode=0); NS_IMETHOD FlushPendingNotifications() { return NS_OK; } // nsIHTMLContentSink NS_IMETHOD SetTitle(const nsString& aValue); NS_IMETHOD OpenHTML(const nsIParserNode& aNode); NS_IMETHOD CloseHTML(const nsIParserNode& aNode); NS_IMETHOD OpenHead(const nsIParserNode& aNode); NS_IMETHOD CloseHead(const nsIParserNode& aNode); NS_IMETHOD OpenBody(const nsIParserNode& aNode); NS_IMETHOD CloseBody(const nsIParserNode& aNode); NS_IMETHOD OpenForm(const nsIParserNode& aNode); NS_IMETHOD CloseForm(const nsIParserNode& aNode); NS_IMETHOD OpenMap(const nsIParserNode& aNode); NS_IMETHOD CloseMap(const nsIParserNode& aNode); NS_IMETHOD OpenFrameset(const nsIParserNode& aNode); NS_IMETHOD CloseFrameset(const nsIParserNode& aNode); NS_IMETHOD OpenNoscript(const nsIParserNode& aNode) { return NS_OK; } NS_IMETHOD CloseNoscript(const nsIParserNode& aNode) { return NS_OK; } NS_IMETHOD DoFragment(PRBool aFlag); NS_IMETHOD BeginContext(PRInt32 aPosition); NS_IMETHOD EndContext(PRInt32 aPosition); // nsILoggingSink NS_IMETHOD SetOutputStream(PRFileDesc *aStream,PRBool autoDelete=PR_FALSE); nsresult OpenNode(const char* aKind, const nsIParserNode& aNode); nsresult CloseNode(const char* aKind); nsresult LeafNode(const nsIParserNode& aNode); nsresult WriteAttributes(const nsIParserNode& aNode); nsresult QuoteText(const nsAReadableString& aValue, nsString& aResult); nsresult GetNewCString(const nsAReadableString& aValue, char** aResult); PRBool WillWriteAttributes(const nsIParserNode& aNode); protected: PRFileDesc *mOutput; int mLevel; nsIHTMLContentSink *mSink; PRBool mAutoDeleteOutput; }; #endif