From bebc77fffa5a570ce3f8ff29792e9b5d722b2a53 Mon Sep 17 00:00:00 2001 From: "akkana%netscape.com" Date: Thu, 24 Jun 1999 20:16:36 +0000 Subject: [PATCH] Use new document encoding service from nsTextEditor, and make nsHTMLEditor methods call nsTextEditor methods git-svn-id: svn://10.0.0.236/trunk@36698 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/editor/base/nsHTMLEditor.cpp | 110 +------- mozilla/editor/base/nsTextEditor.cpp | 241 +++++++++--------- mozilla/editor/base/nsTextEditor.h | 2 - .../editor/libeditor/html/nsHTMLEditor.cpp | 110 +------- 4 files changed, 127 insertions(+), 336 deletions(-) diff --git a/mozilla/editor/base/nsHTMLEditor.cpp b/mozilla/editor/base/nsHTMLEditor.cpp index ddb2a74e6a4..597bdc8ab9b 100644 --- a/mozilla/editor/base/nsHTMLEditor.cpp +++ b/mozilla/editor/base/nsHTMLEditor.cpp @@ -664,31 +664,7 @@ NS_IMETHODIMP nsHTMLEditor::InsertHTML(const nsString& aInputString) NS_IMETHODIMP nsHTMLEditor::OutputTextToString(nsString& aOutputString) { - nsCOMPtr encoder; - nsresult rv = nsComponentManager::CreateInstance(kTextEncoderCID, - nsnull, - nsIDocumentEncoder::GetIID(), - getter_AddRefs(encoder)); - if (NS_FAILED(rv)) - return rv; - - nsCOMPtr domdoc; - rv = GetDocument(getter_AddRefs(domdoc)); - if (NS_FAILED(rv)) - return rv; - nsCOMPtr doc = do_QueryInterface(domdoc); - nsString mimetype ("text/plain"); - - nsCOMPtr shell; - - rv = GetPresShell(getter_AddRefs(shell)); - if (NS_SUCCEEDED(rv)) { - rv = encoder->Init(shell,doc, mimetype); - if (NS_FAILED(rv)) - return rv; - } - - return encoder->EncodeToString(aOutputString); + return nsTextEditor::OutputTextToString(aOutputString); } NS_IMETHODIMP nsHTMLEditor::OutputHTMLToString(nsString& aOutputString) @@ -711,95 +687,17 @@ NS_IMETHODIMP nsHTMLEditor::OutputHTMLToString(nsString& aOutputString) } #endif - nsCOMPtr encoder; - nsresult rv = nsComponentManager::CreateInstance(kHTMLEncoderCID, - nsnull, - nsIDocumentEncoder::GetIID(), - getter_AddRefs(encoder)); - if (NS_FAILED(rv)) - return rv; - - nsCOMPtr domdoc; - rv = GetDocument(getter_AddRefs(domdoc)); - if (NS_FAILED(rv)) - return rv; - nsCOMPtr doc = do_QueryInterface(domdoc); - nsString mimetype ("text/html"); - - nsCOMPtr shell; - - rv = GetPresShell(getter_AddRefs(shell)); - if (NS_SUCCEEDED(rv)) { - rv = encoder->Init(shell,doc, mimetype); - if (NS_FAILED(rv)) - return rv; - } - - return encoder->EncodeToString(aOutputString); + return nsTextEditor::OutputHTMLToString(aOutputString); } NS_IMETHODIMP nsHTMLEditor::OutputTextToStream(nsIOutputStream* aOutputStream, nsString* aCharset) { - nsCOMPtr encoder; - nsresult rv = nsComponentManager::CreateInstance(kTextEncoderCID, - nsnull, - nsIDocumentEncoder::GetIID(), - getter_AddRefs(encoder)); - if (NS_FAILED(rv)) - return rv; - - nsCOMPtr domdoc; - rv = GetDocument(getter_AddRefs(domdoc)); - if (NS_FAILED(rv)) - return rv; - nsCOMPtr doc = do_QueryInterface(domdoc); - nsString mimetype ("text/plain"); - - if (aCharset && aCharset->Length() != 0 && aCharset->Equals("null")==PR_FALSE) - encoder->SetCharset(*aCharset); - - nsCOMPtr shell; - - rv = GetPresShell(getter_AddRefs(shell)); - if (NS_SUCCEEDED(rv)) { - rv = encoder->Init(shell,doc, mimetype); - if (NS_FAILED(rv)) - return rv; - } - - return encoder->EncodeToStream(aOutputStream); + return nsTextEditor::OutputTextToStream(aOutputStream, aCharset); } NS_IMETHODIMP nsHTMLEditor::OutputHTMLToStream(nsIOutputStream* aOutputStream,nsString* aCharset) { - nsCOMPtr encoder; - nsresult rv = nsComponentManager::CreateInstance(kHTMLEncoderCID, - nsnull, - nsIDocumentEncoder::GetIID(), - getter_AddRefs(encoder)); - if (NS_FAILED(rv)) - return rv; - - nsCOMPtr domdoc; - rv = GetDocument(getter_AddRefs(domdoc)); - if (NS_FAILED(rv)) - return rv; - nsCOMPtr doc = do_QueryInterface(domdoc); - nsString mimetype ("text/html"); - - nsCOMPtr shell; - - if (aCharset && aCharset->Length() != 0 && aCharset->Equals("null")==PR_FALSE) - encoder->SetCharset(*aCharset); - - rv = GetPresShell(getter_AddRefs(shell)); - if (NS_SUCCEEDED(rv)) { - rv = encoder->Init(shell,doc, mimetype); - if (NS_FAILED(rv)) - return rv; - } - - return encoder->EncodeToStream(aOutputStream); + return nsTextEditor::OutputHTMLToStream(aOutputStream, aCharset); } diff --git a/mozilla/editor/base/nsTextEditor.cpp b/mozilla/editor/base/nsTextEditor.cpp index b9892b76462..8a9429bcb39 100644 --- a/mozilla/editor/base/nsTextEditor.cpp +++ b/mozilla/editor/base/nsTextEditor.cpp @@ -42,6 +42,7 @@ #include "nsIDOMElement.h" #include "nsIDOMTextListener.h" #include "nsIDiskDocument.h" +#include "nsIDocumentEncoder.h" #include "nsEditorCID.h" #include "nsISupportsArray.h" #include "nsIEnumerator.h" @@ -80,6 +81,9 @@ static NS_DEFINE_CID(kCClipboardCID, NS_CLIPBOARD_CID); static NS_DEFINE_CID(kCTransferableCID, NS_TRANSFERABLE_CID); static NS_DEFINE_IID(kCXIFFormatConverterCID, NS_XIFFORMATCONVERTER_CID); +// Document encoders +static NS_DEFINE_CID(kHTMLEncoderCID, NS_HTML_ENCODER_CID); +static NS_DEFINE_CID(kTextEncoderCID, NS_TEXT_ENCODER_CID); #include "nsIComponentManager.h" #include "nsIServiceManager.h" @@ -1540,149 +1544,142 @@ NS_IMETHODIMP nsTextEditor::SetBodyWrapWidth(PRInt32 aWrapColumn) NS_IMETHODIMP nsTextEditor::OutputTextToString(nsString& aOutputString) { - return OutputTextInternal(nsnull,&aOutputString,nsnull); -} + nsCOMPtr encoder; + nsresult rv = nsComponentManager::CreateInstance(kTextEncoderCID, + nsnull, + nsIDocumentEncoder::GetIID(), + getter_AddRefs(encoder)); + if (NS_FAILED(rv)) + return rv; -NS_IMETHODIMP nsTextEditor::OutputTextToStream(nsIOutputStream* aOutputStream, nsString* aCharsetOverride) -{ - return OutputTextInternal(aOutputStream,nsnull,aCharsetOverride); -} - - -NS_IMETHODIMP nsTextEditor::OutputTextInternal(nsIOutputStream* aOutputStream, nsString* aOutputString, nsString* aCharsetOverride) -{ - nsresult rv = NS_ERROR_FAILURE; + nsCOMPtr domdoc; + rv = GetDocument(getter_AddRefs(domdoc)); + if (NS_FAILED(rv)) + return rv; + nsCOMPtr doc = do_QueryInterface(domdoc); + nsString mimetype ("text/plain"); nsCOMPtr shell; - GetPresShell(getter_AddRefs(shell)); - if (shell) { - nsCOMPtr doc; - shell->GetDocument(getter_AddRefs(doc)); - if (doc) { - nsString buffer; - doc->CreateXIF(buffer); - - nsAutoString charset; - rv = doc->GetDocumentCharacterSet(charset); - if(NS_FAILED(rv)) { - charset = "ISO-8859-1"; - } - nsIParser* parser; - - static NS_DEFINE_IID(kCParserIID, NS_IPARSER_IID); - static NS_DEFINE_IID(kCParserCID, NS_PARSER_IID); - - rv = nsComponentManager::CreateInstance(kCParserCID, - nsnull, - kCParserIID, - (void **)&parser); - - if (NS_SUCCEEDED(rv)) { - nsIHTMLContentSink* sink = nsnull; - - if (NS_SUCCEEDED(rv)) - { - - if (aOutputString != nsnull) - rv = NS_New_HTMLToTXT_SinkStream(&sink,aOutputString); - else if (aOutputStream != nsnull) - rv = NS_New_HTMLToTXT_SinkStream(&sink,aOutputStream,aCharsetOverride); - - if (sink && NS_SUCCEEDED(rv)) - { - parser->SetContentSink(sink); - parser->SetDocumentCharset(charset, kCharsetFromPreviousLoading); - nsIDTD* dtd = nsnull; - rv = NS_NewXIFDTD(&dtd); - if (NS_OK == rv) { - parser->RegisterDTD(dtd); - parser->Parse(buffer, 0, "text/xif",PR_FALSE,PR_TRUE); - } - - NS_IF_RELEASE(dtd); - NS_IF_RELEASE(sink); - NS_IF_RELEASE(parser); - } - - } - } - } + rv = GetPresShell(getter_AddRefs(shell)); + if (NS_SUCCEEDED(rv)) { + rv = encoder->Init(shell,doc, mimetype); + if (NS_FAILED(rv)) + return rv; } - return rv; -} + return encoder->EncodeToString(aOutputString); +} NS_IMETHODIMP nsTextEditor::OutputHTMLToString(nsString& aOutputString) { - return OutputHTMLInternal(nsnull,&aOutputString,nsnull); -} +#if defined(DEBUG_akkana) + printf("============Content dump:===========\n"); -NS_IMETHODIMP nsTextEditor::OutputHTMLToStream(nsIOutputStream* aOutputStream,nsString* aCharsetOverride) -{ - return OutputHTMLInternal(aOutputStream,nsnull,aCharsetOverride); -} + nsCOMPtr thedoc; + nsCOMPtr presShell; + if (NS_SUCCEEDED(GetPresShell(getter_AddRefs(presShell)))) + { + presShell->GetDocument(getter_AddRefs(thedoc)); + if (thedoc) { + nsIContent* root = thedoc->GetRootContent(); + if (nsnull != root) { + root->List(stdout); + NS_RELEASE(root); + } + } + } +#endif + nsCOMPtr encoder; + nsresult rv = nsComponentManager::CreateInstance(kHTMLEncoderCID, + nsnull, + nsIDocumentEncoder::GetIID(), + getter_AddRefs(encoder)); + if (NS_FAILED(rv)) + return rv; + + nsCOMPtr domdoc; + rv = GetDocument(getter_AddRefs(domdoc)); + if (NS_FAILED(rv)) + return rv; + nsCOMPtr doc = do_QueryInterface(domdoc); + nsString mimetype ("text/html"); -NS_IMETHODIMP nsTextEditor::OutputHTMLInternal(nsIOutputStream* aOutputStream, nsString* aOutputString, nsString* aCharsetOverride) -{ - - nsresult rv = NS_ERROR_FAILURE; nsCOMPtr shell; - GetPresShell(getter_AddRefs(shell)); - if (shell) { - nsCOMPtr doc; - shell->GetDocument(getter_AddRefs(doc)); - if (doc) { - nsString buffer; - doc->CreateXIF(buffer); + rv = GetPresShell(getter_AddRefs(shell)); + if (NS_SUCCEEDED(rv)) { + rv = encoder->Init(shell,doc, mimetype); + if (NS_FAILED(rv)) + return rv; + } - nsAutoString charset; - rv = doc->GetDocumentCharacterSet(charset); - if(NS_FAILED(rv)) { - charset = "ISO-8859-1"; - } - nsIParser* parser; + return encoder->EncodeToString(aOutputString); +} - static NS_DEFINE_IID(kCParserIID, NS_IPARSER_IID); - static NS_DEFINE_IID(kCParserCID, NS_PARSER_IID); +NS_IMETHODIMP nsTextEditor::OutputTextToStream(nsIOutputStream* aOutputStream, nsString* aCharset) +{ + nsCOMPtr encoder; + nsresult rv = nsComponentManager::CreateInstance(kTextEncoderCID, + nsnull, + nsIDocumentEncoder::GetIID(), + getter_AddRefs(encoder)); + if (NS_FAILED(rv)) + return rv; - rv = nsComponentManager::CreateInstance(kCParserCID, - nsnull, - kCParserIID, - (void **)&parser); + nsCOMPtr domdoc; + rv = GetDocument(getter_AddRefs(domdoc)); + if (NS_FAILED(rv)) + return rv; + nsCOMPtr doc = do_QueryInterface(domdoc); + nsString mimetype ("text/plain"); - if (NS_OK == rv) { - nsIHTMLContentSink* sink = nsnull; + if (aCharset && aCharset->Length() != 0 && aCharset->Equals("null")==PR_FALSE) + encoder->SetCharset(*aCharset); - if (aOutputStream) - rv = NS_New_HTML_ContentSinkStream(&sink,aOutputStream,aCharsetOverride); - else if (aOutputString) - rv = NS_New_HTML_ContentSinkStream(&sink,aOutputString); - - if (sink && NS_SUCCEEDED(rv)) { + nsCOMPtr shell; - if (NS_OK == rv) { - parser->SetContentSink(sink); - - parser->SetDocumentCharset(charset, kCharsetFromPreviousLoading); + rv = GetPresShell(getter_AddRefs(shell)); + if (NS_SUCCEEDED(rv)) { + rv = encoder->Init(shell,doc, mimetype); + if (NS_FAILED(rv)) + return rv; + } - nsIDTD* dtd = nsnull; - rv = NS_NewXIFDTD(&dtd); - if (NS_OK == rv) { - parser->RegisterDTD(dtd); - parser->Parse(buffer, 0, "text/xif",PR_FALSE,PR_TRUE); - } - NS_IF_RELEASE(dtd); - NS_IF_RELEASE(sink); - } - } - NS_RELEASE(parser); - } - } - } - return rv; + return encoder->EncodeToStream(aOutputStream); +} + +NS_IMETHODIMP nsTextEditor::OutputHTMLToStream(nsIOutputStream* aOutputStream,nsString* aCharset) +{ + nsCOMPtr encoder; + nsresult rv = nsComponentManager::CreateInstance(kHTMLEncoderCID, + nsnull, + nsIDocumentEncoder::GetIID(), + getter_AddRefs(encoder)); + if (NS_FAILED(rv)) + return rv; + + nsCOMPtr domdoc; + rv = GetDocument(getter_AddRefs(domdoc)); + if (NS_FAILED(rv)) + return rv; + nsCOMPtr doc = do_QueryInterface(domdoc); + nsString mimetype ("text/html"); + + nsCOMPtr shell; + + if (aCharset && aCharset->Length() != 0 && aCharset->Equals("null")==PR_FALSE) + encoder->SetCharset(*aCharset); + + rv = GetPresShell(getter_AddRefs(shell)); + if (NS_SUCCEEDED(rv)) { + rv = encoder->Init(shell,doc, mimetype); + if (NS_FAILED(rv)) + return rv; + } + + return encoder->EncodeToStream(aOutputStream); } diff --git a/mozilla/editor/base/nsTextEditor.h b/mozilla/editor/base/nsTextEditor.h index ee51779ddf3..3e051ba0889 100644 --- a/mozilla/editor/base/nsTextEditor.h +++ b/mozilla/editor/base/nsTextEditor.h @@ -276,8 +276,6 @@ protected: TypeInState *GetTypeInState(); - NS_IMETHOD OutputTextInternal(nsIOutputStream* aOutputStream, nsString* aOutputString, nsString* aCharsetOverride); - NS_IMETHOD OutputHTMLInternal(nsIOutputStream* aOutputStream, nsString* aOutputString, nsString* aCharsetOverride); /** simple utility to handle any error with event listener allocation or registration */ void HandleEventListenerError(); diff --git a/mozilla/editor/libeditor/html/nsHTMLEditor.cpp b/mozilla/editor/libeditor/html/nsHTMLEditor.cpp index ddb2a74e6a4..597bdc8ab9b 100644 --- a/mozilla/editor/libeditor/html/nsHTMLEditor.cpp +++ b/mozilla/editor/libeditor/html/nsHTMLEditor.cpp @@ -664,31 +664,7 @@ NS_IMETHODIMP nsHTMLEditor::InsertHTML(const nsString& aInputString) NS_IMETHODIMP nsHTMLEditor::OutputTextToString(nsString& aOutputString) { - nsCOMPtr encoder; - nsresult rv = nsComponentManager::CreateInstance(kTextEncoderCID, - nsnull, - nsIDocumentEncoder::GetIID(), - getter_AddRefs(encoder)); - if (NS_FAILED(rv)) - return rv; - - nsCOMPtr domdoc; - rv = GetDocument(getter_AddRefs(domdoc)); - if (NS_FAILED(rv)) - return rv; - nsCOMPtr doc = do_QueryInterface(domdoc); - nsString mimetype ("text/plain"); - - nsCOMPtr shell; - - rv = GetPresShell(getter_AddRefs(shell)); - if (NS_SUCCEEDED(rv)) { - rv = encoder->Init(shell,doc, mimetype); - if (NS_FAILED(rv)) - return rv; - } - - return encoder->EncodeToString(aOutputString); + return nsTextEditor::OutputTextToString(aOutputString); } NS_IMETHODIMP nsHTMLEditor::OutputHTMLToString(nsString& aOutputString) @@ -711,95 +687,17 @@ NS_IMETHODIMP nsHTMLEditor::OutputHTMLToString(nsString& aOutputString) } #endif - nsCOMPtr encoder; - nsresult rv = nsComponentManager::CreateInstance(kHTMLEncoderCID, - nsnull, - nsIDocumentEncoder::GetIID(), - getter_AddRefs(encoder)); - if (NS_FAILED(rv)) - return rv; - - nsCOMPtr domdoc; - rv = GetDocument(getter_AddRefs(domdoc)); - if (NS_FAILED(rv)) - return rv; - nsCOMPtr doc = do_QueryInterface(domdoc); - nsString mimetype ("text/html"); - - nsCOMPtr shell; - - rv = GetPresShell(getter_AddRefs(shell)); - if (NS_SUCCEEDED(rv)) { - rv = encoder->Init(shell,doc, mimetype); - if (NS_FAILED(rv)) - return rv; - } - - return encoder->EncodeToString(aOutputString); + return nsTextEditor::OutputHTMLToString(aOutputString); } NS_IMETHODIMP nsHTMLEditor::OutputTextToStream(nsIOutputStream* aOutputStream, nsString* aCharset) { - nsCOMPtr encoder; - nsresult rv = nsComponentManager::CreateInstance(kTextEncoderCID, - nsnull, - nsIDocumentEncoder::GetIID(), - getter_AddRefs(encoder)); - if (NS_FAILED(rv)) - return rv; - - nsCOMPtr domdoc; - rv = GetDocument(getter_AddRefs(domdoc)); - if (NS_FAILED(rv)) - return rv; - nsCOMPtr doc = do_QueryInterface(domdoc); - nsString mimetype ("text/plain"); - - if (aCharset && aCharset->Length() != 0 && aCharset->Equals("null")==PR_FALSE) - encoder->SetCharset(*aCharset); - - nsCOMPtr shell; - - rv = GetPresShell(getter_AddRefs(shell)); - if (NS_SUCCEEDED(rv)) { - rv = encoder->Init(shell,doc, mimetype); - if (NS_FAILED(rv)) - return rv; - } - - return encoder->EncodeToStream(aOutputStream); + return nsTextEditor::OutputTextToStream(aOutputStream, aCharset); } NS_IMETHODIMP nsHTMLEditor::OutputHTMLToStream(nsIOutputStream* aOutputStream,nsString* aCharset) { - nsCOMPtr encoder; - nsresult rv = nsComponentManager::CreateInstance(kHTMLEncoderCID, - nsnull, - nsIDocumentEncoder::GetIID(), - getter_AddRefs(encoder)); - if (NS_FAILED(rv)) - return rv; - - nsCOMPtr domdoc; - rv = GetDocument(getter_AddRefs(domdoc)); - if (NS_FAILED(rv)) - return rv; - nsCOMPtr doc = do_QueryInterface(domdoc); - nsString mimetype ("text/html"); - - nsCOMPtr shell; - - if (aCharset && aCharset->Length() != 0 && aCharset->Equals("null")==PR_FALSE) - encoder->SetCharset(*aCharset); - - rv = GetPresShell(getter_AddRefs(shell)); - if (NS_SUCCEEDED(rv)) { - rv = encoder->Init(shell,doc, mimetype); - if (NS_FAILED(rv)) - return rv; - } - - return encoder->EncodeToStream(aOutputStream); + return nsTextEditor::OutputHTMLToStream(aOutputStream, aCharset); }