From 15fd435da75ea151a8b9a88a55ea14a13c7e5dbf Mon Sep 17 00:00:00 2001 From: "jsun%netscape.com" Date: Tue, 10 Nov 1998 20:04:01 +0000 Subject: [PATCH] Modified nsStreamManager::LoadURL so that nsIXPFCCanvas parameter is replaced by generic nsISupports. Added nsIXPFCContentSink interface to implement the SetContentSinkContainer method. git-svn-id: svn://10.0.0.236/trunk@14361 18797224-902f-48f8-a5cc-f745e15eee43 --- .../xpfc/parser/inc/nsXPFCXMLContentSink.h | 5 ++- mozilla/xpfc/parser/public/manifest.mn | 4 +- .../xpfc/parser/public/nsIXPFCContentSink.h | 42 ++++++++++++++++++ .../parser/public/nsIXPFCICalContentSink.h | 44 +++++++++++++++++++ .../xpfc/parser/src/nsXPFCXMLContentSink.cpp | 20 +++++++++ mozilla/xpfc/shell/inc/nsStreamManager.h | 13 +++++- mozilla/xpfc/shell/public/nsIStreamManager.h | 15 +++++++ mozilla/xpfc/shell/src/nsStreamManager.cpp | 35 +++++++-------- 8 files changed, 156 insertions(+), 22 deletions(-) create mode 100644 mozilla/xpfc/parser/public/nsIXPFCContentSink.h create mode 100644 mozilla/xpfc/parser/public/nsIXPFCICalContentSink.h diff --git a/mozilla/xpfc/parser/inc/nsXPFCXMLContentSink.h b/mozilla/xpfc/parser/inc/nsXPFCXMLContentSink.h index 099c35b9bc1..5d13130b19f 100644 --- a/mozilla/xpfc/parser/inc/nsXPFCXMLContentSink.h +++ b/mozilla/xpfc/parser/inc/nsXPFCXMLContentSink.h @@ -32,9 +32,11 @@ #include "nsXPFCXMLDTD.h" #include "nsIXMLParserObject.h" #include "nsIXPFCXMLContentSink.h" +#include "nsIXPFCContentSink.h" class nsXPFCXMLContentSink : public nsIHTMLContentSink, - public nsIXPFCXMLContentSink + public nsIXPFCXMLContentSink, + public nsIXPFCContentSink { public: @@ -47,6 +49,7 @@ public: NS_IMETHOD Init(); NS_IMETHOD SetViewerContainer(nsIWebViewerContainer * aViewerContainer); NS_IMETHOD SetRootCanvas(nsIXPFCCanvas * aCanvas); + NS_IMETHOD SetContentSinkContainer(nsISupports * aContentSinkContainer); // nsIContentSink NS_IMETHOD OpenContainer(const nsIParserNode& aNode); diff --git a/mozilla/xpfc/parser/public/manifest.mn b/mozilla/xpfc/parser/public/manifest.mn index 36f80b496ed..5adee3c2812 100644 --- a/mozilla/xpfc/parser/public/manifest.mn +++ b/mozilla/xpfc/parser/public/manifest.mn @@ -15,7 +15,9 @@ EXPORTS = \ nsIMenuManager.h \ nsIXPFCToolbarManager.h \ nsIXPFCXMLContentSink.h \ - $(NULL) + nsIXPFCICalContentSink.h \ + nsIXPFCContentSink.h \ + $(NULL) PRIVATE_EXPORTS = \ $(NULL) diff --git a/mozilla/xpfc/parser/public/nsIXPFCContentSink.h b/mozilla/xpfc/parser/public/nsIXPFCContentSink.h new file mode 100644 index 00000000000..37b8c1828ca --- /dev/null +++ b/mozilla/xpfc/parser/public/nsIXPFCContentSink.h @@ -0,0 +1,42 @@ +/* -*- 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.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#ifndef nsIXPFCContentSink_h___ +#define nsIXPFCContentSink_h___ + +#include "nsISupports.h" +#include "nsIWebViewerContainer.h" +//#include "nsIXPFCContentSinkContainer.h" + +// c0718b70-7515-11d2-943f-006008268c31 +#define NS_IXPFC_CONTENT_SINK_IID \ +{ 0xc0c10130, 0x7515, 0x11d2, \ +{ 0x94, 0x3f, 0x00, 0x60, 0x08, 0x26, 0x8c, 0x31 } } + +class nsIXPFCContentSink : public nsISupports +{ +public: + NS_IMETHOD Init() = 0; + NS_IMETHOD SetViewerContainer(nsIWebViewerContainer * aViewerContainer) = 0; + //NS_IMETHOD SetContentSinkContainer(nsIXPFCContentSinkContainer * aContentSinkContainer) = 0; + NS_IMETHOD SetContentSinkContainer(nsISupports * aContentSinkContainer) = 0; +}; + +#endif + + diff --git a/mozilla/xpfc/parser/public/nsIXPFCICalContentSink.h b/mozilla/xpfc/parser/public/nsIXPFCICalContentSink.h new file mode 100644 index 00000000000..db31f42df42 --- /dev/null +++ b/mozilla/xpfc/parser/public/nsIXPFCICalContentSink.h @@ -0,0 +1,44 @@ +/* -*- 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.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#ifndef nsIXPFCICalContentSink_h___ +#define nsIXPFCICalContentSink_h___ + +#include "nsISupports.h" +#include "nsIArray.h" + +//ca581fe0-743f-11d2-943f-006008268c31 +#define NS_IXPFC_ICAL_CONTENT_SINK_IID \ +{ 0xca581fe0, 0x743f, 0x11d2, \ +{ 0x94, 0x3f, 0x00, 0x60, 0x08, 0x26, 0x8c, 0x31 } } + +class nsIXPFCICalContentSink : public nsISupports +{ + +public: + + NS_IMETHOD Init() = 0 ; + NS_IMETHOD SetCalendarList(nsIArray * aCalendarList) = 0; + +}; + +#endif /* nsIXPFCICalContentSink_h___ */ + + + + diff --git a/mozilla/xpfc/parser/src/nsXPFCXMLContentSink.cpp b/mozilla/xpfc/parser/src/nsXPFCXMLContentSink.cpp index e3dc448a381..81a0c408761 100644 --- a/mozilla/xpfc/parser/src/nsXPFCXMLContentSink.cpp +++ b/mozilla/xpfc/parser/src/nsXPFCXMLContentSink.cpp @@ -31,6 +31,7 @@ #include "nsWidgetsCID.h" #include "nsXPFCToolkit.h" + static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); static NS_DEFINE_IID(kIContentSinkIID, NS_ICONTENT_SINK_IID); static NS_DEFINE_IID(kClassIID, NS_XPFCXMLCONTENTSINK_IID); @@ -56,6 +57,7 @@ static NS_DEFINE_IID(kCXPButtonCID, NS_XP_BUTTON_CID); static NS_DEFINE_IID(kCXPFCTabWidgetCID, NS_XPFC_TABWIDGET_CID); static NS_DEFINE_IID(kCXPFCTextWidgetCID, NS_XPFC_TEXTWIDGET_CID); static NS_DEFINE_IID(kIXPFCXMLContentSinkIID, NS_IXPFC_XML_CONTENT_SINK_IID); +static NS_DEFINE_IID(kIXPFCContentSinkIID, NS_IXPFC_CONTENT_SINK_IID); #define XPFC_PARSING_STATE_UNKNOWN 0 #define XPFC_PARSING_STATE_TOOLBAR 1 @@ -182,6 +184,9 @@ nsresult nsXPFCXMLContentSink::QueryInterface(const nsIID& aIID, void** aInstanc else if(aIID.Equals(kIXPFCXMLContentSinkIID)) { //do this class... *aInstancePtr = (nsIXPFCXMLContentSink*)(this); } + else if(aIID.Equals(kIXPFCContentSinkIID)) { //do this class... + *aInstancePtr = (nsIXPFCContentSink*)(this); + } else { *aInstancePtr=0; return NS_NOINTERFACE; @@ -947,6 +952,21 @@ NS_IMETHODIMP nsXPFCXMLContentSink::AddToHierarchy(nsIXMLParserObject& aObject, } +nsresult nsXPFCXMLContentSink::SetContentSinkContainer(nsISupports * + aContentSinkContainer) +{ + nsresult res; + nsIXPFCCanvas * canvas; + static NS_DEFINE_IID(kIXPFCCanvasIID, NS_IXPFC_CANVAS_IID); + res = aContentSinkContainer->QueryInterface(kIXPFCCanvasIID, (void **)&canvas); + if (NS_OK == res) + { + res = SetRootCanvas(canvas); + NS_RELEASE(canvas); + } + return res; +} + nsresult nsXPFCXMLContentSink::SetRootCanvas(nsIXPFCCanvas * aCanvas) { PushComponent(aCanvas); diff --git a/mozilla/xpfc/shell/inc/nsStreamManager.h b/mozilla/xpfc/shell/inc/nsStreamManager.h index e3e8003b51d..c8e175d2990 100644 --- a/mozilla/xpfc/shell/inc/nsStreamManager.h +++ b/mozilla/xpfc/shell/inc/nsStreamManager.h @@ -21,7 +21,8 @@ #include "nsIArray.h" #include "nsIIterator.h" #include "nsIStreamManager.h" -#include "nsIXPFCCanvas.h" +#include "nsIXPFCContentSinkContainer.h" +//#include "nsIXPFCCanvas.h" class nsStreamManager : public nsIStreamManager { @@ -45,10 +46,20 @@ public: */ NS_IMETHOD Init(); +#if 0 NS_IMETHOD LoadURL(nsIWebViewerContainer * aWebViewerContainer, nsIXPFCCanvas * aParentCanvas, const nsString& aURLSpec, nsIPostData * aPostData, + nsIArray * aCalendarVector, + nsIID *aDTDIID = nsnull, + nsIID *aSinkIID = nsnull); +#endif + + NS_IMETHOD LoadURL(nsIWebViewerContainer * aWebViewerContainer, + nsISupports * aContentSinkContainer, + const nsString& aURLSpec, + nsIPostData * aPostData, nsIID *aDTDIID = nsnull, nsIID *aSinkIID = nsnull); diff --git a/mozilla/xpfc/shell/public/nsIStreamManager.h b/mozilla/xpfc/shell/public/nsIStreamManager.h index 6d14e4f83e9..03c8062507f 100644 --- a/mozilla/xpfc/shell/public/nsIStreamManager.h +++ b/mozilla/xpfc/shell/public/nsIStreamManager.h @@ -25,6 +25,7 @@ #include "nsIWebViewerContainer.h" #include "nsIURL.h" #include "nsIStreamListener.h" +#include "nsIXPFCContentSinkContainer.h" class nsIXPFCCanvas; @@ -44,10 +45,24 @@ public: */ NS_IMETHOD Init() = 0; +#if 0 NS_IMETHOD LoadURL(nsIWebViewerContainer * aWebViewerContainer, nsIXPFCCanvas * aParentCanvas, const nsString& aURLSpec, nsIPostData * aPostData, + nsIArray * aCalendarVector, + nsIID *aDTDIID = nsnull, + nsIID *aSinkIID = nsnull) = 0; +#endif + + /** + * aContainer is generic variable used to pass information to sink variable. + * replaces aParentCanvas. + */ + NS_IMETHOD LoadURL(nsIWebViewerContainer * aWebViewerContainer, + nsISupports * aContentSinkContainer, + const nsString& aURLSpec, + nsIPostData * aPostData, nsIID *aDTDIID = nsnull, nsIID *aSinkIID = nsnull) = 0; diff --git a/mozilla/xpfc/shell/src/nsStreamManager.cpp b/mozilla/xpfc/shell/src/nsStreamManager.cpp index ca72be6e5e7..10dd26d9f59 100644 --- a/mozilla/xpfc/shell/src/nsStreamManager.cpp +++ b/mozilla/xpfc/shell/src/nsStreamManager.cpp @@ -27,6 +27,7 @@ #include "nspr.h" #include "nsParserCIID.h" #include "nsXPFCXMLContentSink.h" +#include "nsIXPFCICalContentSink.h" #include "nsStreamObject.h" static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); @@ -77,11 +78,11 @@ NS_IMPL_ISUPPORTS(nsStreamManager,kIStreamManagerIID); nsresult nsStreamManager::Init() { - static NS_DEFINE_IID(kCVectorCID, NS_ARRAY_CID); + static NS_DEFINE_IID(kCArrayCID, NS_ARRAY_CID); - nsresult res = nsRepository::CreateInstance(kCVectorCID, + nsresult res = nsRepository::CreateInstance(kCArrayCID, nsnull, - kCVectorCID, + kCArrayCID, (void **)&mStreamObjects); if (NS_OK != res) @@ -93,7 +94,7 @@ nsresult nsStreamManager::Init() } nsresult nsStreamManager::LoadURL(nsIWebViewerContainer * aWebViewerContainer, - nsIXPFCCanvas * aParentCanvas, + nsISupports * aContentSinkContainer, const nsString& aURLSpec, nsIPostData * aPostData, nsIID *aDTDIID, @@ -184,27 +185,23 @@ nsresult nsStreamManager::LoadURL(nsIWebViewerContainer * aWebViewerContainer, return res; } - nsIXPFCXMLContentSink * sink ; - - static NS_DEFINE_IID(kIXPFCXMLContentSinkIID, NS_IXPFC_XML_CONTENT_SINK_IID); - - res = stream_object->mSink->QueryInterface(kIXPFCXMLContentSinkIID,(void**)&sink); - + nsIXPFCContentSink * xpfc_sink; + static NS_DEFINE_IID(kIXPFCContentSinkIID, NS_IXPFC_CONTENT_SINK_IID); + static NS_DEFINE_IID(kIXPFCContentSinkContainerIID, NS_IXPFC_CONTENT_SINK_CONTAINER_IID); + + res = stream_object->mSink->QueryInterface(kIXPFCContentSinkIID, (void**)&xpfc_sink); if (NS_OK == res) { - sink->SetViewerContainer(aWebViewerContainer); - + xpfc_sink->SetViewerContainer(aWebViewerContainer); + /* * Push Top of stack */ - - if (nsnull != aParentCanvas) + if (nsnull != aContentSinkContainer) { - sink->SetRootCanvas(aParentCanvas); - + xpfc_sink->SetContentSinkContainer(aContentSinkContainer); } - - NS_RELEASE(sink); + NS_RELEASE(xpfc_sink); } /* @@ -241,4 +238,4 @@ nsresult nsStreamManager::LoadURL(nsIWebViewerContainer * aWebViewerContainer, return res; -} \ No newline at end of file +}