diff --git a/mozilla/docshell/base/nsWebShell.cpp b/mozilla/docshell/base/nsWebShell.cpp index 3bb228ff2da..2b413c045a5 100644 --- a/mozilla/docshell/base/nsWebShell.cpp +++ b/mozilla/docshell/base/nsWebShell.cpp @@ -42,6 +42,7 @@ #include "nsIPref.h" #include "nsIRefreshUrl.h" #include "nsITimer.h" +#include "jsurl.h" #include "prlog.h" @@ -1714,11 +1715,29 @@ public: NS_IMETHOD LockFactory(PRBool aLock); private: + // XXX TEMPORARY placeholder for starting up some + // services in lieu of a service manager. + static void StartServices(); + + static PRBool mStartedServices; nsrefcnt mRefCnt; }; +PRBool nsWebShellFactory::mStartedServices = PR_FALSE; + +void +nsWebShellFactory::StartServices() +{ + // XXX TEMPORARY Till we have real pluggable protocol handlers + NET_InitJavaScriptProtocol(); + mStartedServices = PR_TRUE; +} + nsWebShellFactory::nsWebShellFactory() { + if (!mStartedServices) { + StartServices(); + } mRefCnt = 0; } diff --git a/mozilla/uriloader/base/nsDocLoader.cpp b/mozilla/uriloader/base/nsDocLoader.cpp index 74cc7968c3b..5b592658c09 100644 --- a/mozilla/uriloader/base/nsDocLoader.cpp +++ b/mozilla/uriloader/base/nsDocLoader.cpp @@ -36,6 +36,7 @@ #include "nsIRefreshUrl.h" #include "nsITimer.h" #include "nsIDocumentLoaderObserver.h" +#include "nsIDocumentLoadInfo.h" #include "nsVoidArray.h" #include "nsIHttpUrl.h" @@ -65,6 +66,7 @@ NS_DEFINE_IID(kIDocumentLoaderIID, NS_IDOCUMENTLOADER_IID); NS_DEFINE_IID(kIDocumentLoaderFactoryIID, NS_IDOCUMENTLOADERFACTORY_IID); NS_DEFINE_IID(kDocLoaderImplIID, NS_DOCLOADERIMPL_IID); NS_DEFINE_IID(kDocumentBindInfoIID, NS_DOCUMENTBINDINFO_IID); +NS_DEFINE_IID(kIDocumentLoadInfoIID, NS_IDOCUMENTLOADINFO_IID); NS_DEFINE_IID(kRefreshURLIID, NS_IREFRESHURL_IID); NS_DEFINE_IID(kHTTPURLIID, NS_IHTTPURL_IID); NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); @@ -81,7 +83,8 @@ NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); */ class nsDocumentBindInfo : public nsIStreamListener, public nsINetSupport, - public nsIRefreshUrl + public nsIRefreshUrl, + public nsIDocumentLoadInfo { public: nsDocumentBindInfo(nsDocLoaderImpl* aDocLoader, @@ -119,12 +122,18 @@ public: NS_IMETHOD_(PRBool) PromptPassword(const nsString &aText, nsString &aPassword); + nsresult GetStatus(void) { return mStatus; } + + /* nsIDocumentLoadInfo interface methods */ + NS_IMETHOD GetCommand(nsString &aCommand); + NS_IMETHOD GetURL(nsIURL **aURL); + NS_IMETHOD GetContainer(nsIContentViewerContainer **aContainer); + NS_IMETHOD GetExtraInfo(nsISupports **aExtraInfo); + /* nsIRefreshURL interface methods... */ NS_IMETHOD RefreshURL(nsIURL* aURL, PRInt32 millis, PRBool repeat); NS_IMETHOD CancelRefreshURLTimers(void); - nsresult GetStatus(void) { return mStatus; } - protected: virtual ~nsDocumentBindInfo(); @@ -758,6 +767,11 @@ nsDocumentBindInfo::QueryInterface(const nsIID& aIID, AddRef(); return NS_OK; } + if (aIID.Equals(kIDocumentLoadInfoIID)) { + *aInstancePtrResult = (void*) ((nsIDocumentLoadInfo*)this); + AddRef(); + return NS_OK; + } if (aIID.Equals(kDocumentBindInfoIID)) { *aInstancePtrResult = (void*) this; AddRef(); @@ -1062,6 +1076,40 @@ nsDocumentBindInfo::PromptPassword(const nsString &aText, return PR_FALSE; } +NS_IMETHODIMP +nsDocumentBindInfo::GetCommand(nsString &aCommand) +{ + aCommand.SetString(m_Command); + return NS_OK; +} + +NS_IMETHODIMP +nsDocumentBindInfo::GetURL(nsIURL **aURL) +{ + *aURL = m_Url; + NS_IF_ADDREF(m_Url); + + return NS_OK; +} + +NS_IMETHODIMP +nsDocumentBindInfo::GetContainer(nsIContentViewerContainer **aContainer) +{ + *aContainer = m_Container; + NS_IF_ADDREF(m_Container); + + return NS_OK; +} + +NS_IMETHODIMP +nsDocumentBindInfo::GetExtraInfo(nsISupports **aExtraInfo) +{ + *aExtraInfo = m_ExtraInfo; + NS_IF_ADDREF(m_ExtraInfo); + + return NS_OK; +} + NS_METHOD nsDocumentBindInfo::RefreshURL(nsIURL* aURL, PRInt32 millis, PRBool repeat) { diff --git a/mozilla/webshell/public/MANIFEST b/mozilla/webshell/public/MANIFEST index 58a9046cfc2..8445374c518 100644 --- a/mozilla/webshell/public/MANIFEST +++ b/mozilla/webshell/public/MANIFEST @@ -7,6 +7,7 @@ nsIContentViewer.h nsIContentViewerContainer.h nsIDocumentLoader.h nsIDocumentLoaderObserver.h +nsIDocumentLoadInfo.h nsIDocumentViewer.h nsILinkHandler.h nsIThrobber.h diff --git a/mozilla/webshell/public/Makefile b/mozilla/webshell/public/Makefile index 0b8f3b933ab..1664566cc5a 100644 --- a/mozilla/webshell/public/Makefile +++ b/mozilla/webshell/public/Makefile @@ -25,6 +25,7 @@ EXPORTS = \ nsIContentViewerContainer.h \ nsIDocumentLoader.h \ nsIDocumentLoaderObserver.h \ + nsIDocumentLoadInfo.h \ nsIDocumentViewer.h \ nsILinkHandler.h \ nsIThrobber.h \ diff --git a/mozilla/webshell/public/makefile.win b/mozilla/webshell/public/makefile.win index 2a0e6a9688d..491e694da1a 100644 --- a/mozilla/webshell/public/makefile.win +++ b/mozilla/webshell/public/makefile.win @@ -27,6 +27,7 @@ EXPORTS = \ nsIContentViewerContainer.h \ nsIDocumentLoader.h \ nsIDocumentLoaderObserver.h \ + nsIDocumentLoadInfo.h \ nsIDocumentViewer.h \ nsILinkHandler.h \ nsIThrobber.h \ diff --git a/mozilla/webshell/public/nsIDocumentLoadInfo.h b/mozilla/webshell/public/nsIDocumentLoadInfo.h new file mode 100644 index 00000000000..7d6b1f60218 --- /dev/null +++ b/mozilla/webshell/public/nsIDocumentLoadInfo.h @@ -0,0 +1,67 @@ +/* -*- Mode: C++; tab-width: 4; 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 nsIDocumentLoadInfo_h__ +#define nsIDocumentLoadInfo_h__ + +#include "nsISupports.h" +#include "nsString.h" + +#define NS_IDOCUMENTLOADINFO_IID \ +{ 0xa6cf9063, 0x15b3, 0x11d2, \ + {0x93, 0x2e, 0x00, 0x80, 0x5f, 0x8a, 0xdd, 0x32} } + +class nsIURL; +class nsIContentViewerContainer; + +class nsIDocumentLoadInfo : public nsISupports { +public: + /** + * Get the command associated with this document load + * + * @param aCommand out parameter for command + * @result NS_OK if successful + */ + NS_IMETHOD GetCommand(nsString &aCommand)=0; + + /** + * Get the URL associated with this document load + * + * @param aURL out parameter for url + * @result NS_OK if successful + */ + NS_IMETHOD GetURL(nsIURL **aURL)=0; + + /** + * Get the container associated with this document load + * + * @param aContainer out parameter for container + * @result NS_OK if successful + */ + NS_IMETHOD GetContainer(nsIContentViewerContainer **aContainer)=0; + + /** + * Get the extra information associated with this document load + * + * @param aExtraInfo out parameter for extra information + * @result NS_OK if successful + */ + NS_IMETHOD GetExtraInfo(nsISupports **aExtraInfo)=0; +}; + +#endif // nsIDocumentLoadInfo_h__ diff --git a/mozilla/webshell/src/Makefile b/mozilla/webshell/src/Makefile index 397b4d6071d..00fe748ea93 100644 --- a/mozilla/webshell/src/Makefile +++ b/mozilla/webshell/src/Makefile @@ -26,7 +26,7 @@ REQUIRES=xpcom raptor dom js plugin java netlib pref EXTRA_DSO_LDOPTS += -lm -INCLUDES += -I../public -I$(PUBLIC)/raptor -I$(PUBLIC)/xpcom -I$(PUBLIC)/dom -I$(PUBLIC)/js -I$(PUBLIC)/netlib -I$(PUBLIC)/plugin -I$(PUBLIC)/java +INCLUDES += -I../public -I$(PUBLIC)/raptor -I$(PUBLIC)/xpcom -I$(PUBLIC)/dom -I$(PUBLIC)/js -I$(PUBLIC)/netlib -I$(PUBLIC)/plugin -I$(PUBLIC)/java -I$(PUBLIC)\jsurl DEFINES = -D_IMPL_NS_WEB diff --git a/mozilla/webshell/src/makefile.win b/mozilla/webshell/src/makefile.win index e723bcd025f..274a8070d34 100644 --- a/mozilla/webshell/src/makefile.win +++ b/mozilla/webshell/src/makefile.win @@ -42,7 +42,7 @@ CPP_OBJS= \ LINCS=-I..\public -I$(PUBLIC)\xpcom -I$(PUBLIC)\raptor \ -I$(PUBLIC)\dom -I$(PUBLIC)\js -I$(PUBLIC)\netlib \ -I$(PUBLIC)\plugin -I$(PUBLIC)\java -I$(PUBLIC)\pref \ - -I$(PUBLIC)\js -I$(DEPTH)\include + -I$(PUBLIC)\js -I$(DEPTH)\include -I$(PUBLIC)\jsurl MAKE_OBJ_TYPE = DLL DLLNAME = raptorweb diff --git a/mozilla/webshell/src/nsDocLoader.cpp b/mozilla/webshell/src/nsDocLoader.cpp index 74cc7968c3b..5b592658c09 100644 --- a/mozilla/webshell/src/nsDocLoader.cpp +++ b/mozilla/webshell/src/nsDocLoader.cpp @@ -36,6 +36,7 @@ #include "nsIRefreshUrl.h" #include "nsITimer.h" #include "nsIDocumentLoaderObserver.h" +#include "nsIDocumentLoadInfo.h" #include "nsVoidArray.h" #include "nsIHttpUrl.h" @@ -65,6 +66,7 @@ NS_DEFINE_IID(kIDocumentLoaderIID, NS_IDOCUMENTLOADER_IID); NS_DEFINE_IID(kIDocumentLoaderFactoryIID, NS_IDOCUMENTLOADERFACTORY_IID); NS_DEFINE_IID(kDocLoaderImplIID, NS_DOCLOADERIMPL_IID); NS_DEFINE_IID(kDocumentBindInfoIID, NS_DOCUMENTBINDINFO_IID); +NS_DEFINE_IID(kIDocumentLoadInfoIID, NS_IDOCUMENTLOADINFO_IID); NS_DEFINE_IID(kRefreshURLIID, NS_IREFRESHURL_IID); NS_DEFINE_IID(kHTTPURLIID, NS_IHTTPURL_IID); NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); @@ -81,7 +83,8 @@ NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); */ class nsDocumentBindInfo : public nsIStreamListener, public nsINetSupport, - public nsIRefreshUrl + public nsIRefreshUrl, + public nsIDocumentLoadInfo { public: nsDocumentBindInfo(nsDocLoaderImpl* aDocLoader, @@ -119,12 +122,18 @@ public: NS_IMETHOD_(PRBool) PromptPassword(const nsString &aText, nsString &aPassword); + nsresult GetStatus(void) { return mStatus; } + + /* nsIDocumentLoadInfo interface methods */ + NS_IMETHOD GetCommand(nsString &aCommand); + NS_IMETHOD GetURL(nsIURL **aURL); + NS_IMETHOD GetContainer(nsIContentViewerContainer **aContainer); + NS_IMETHOD GetExtraInfo(nsISupports **aExtraInfo); + /* nsIRefreshURL interface methods... */ NS_IMETHOD RefreshURL(nsIURL* aURL, PRInt32 millis, PRBool repeat); NS_IMETHOD CancelRefreshURLTimers(void); - nsresult GetStatus(void) { return mStatus; } - protected: virtual ~nsDocumentBindInfo(); @@ -758,6 +767,11 @@ nsDocumentBindInfo::QueryInterface(const nsIID& aIID, AddRef(); return NS_OK; } + if (aIID.Equals(kIDocumentLoadInfoIID)) { + *aInstancePtrResult = (void*) ((nsIDocumentLoadInfo*)this); + AddRef(); + return NS_OK; + } if (aIID.Equals(kDocumentBindInfoIID)) { *aInstancePtrResult = (void*) this; AddRef(); @@ -1062,6 +1076,40 @@ nsDocumentBindInfo::PromptPassword(const nsString &aText, return PR_FALSE; } +NS_IMETHODIMP +nsDocumentBindInfo::GetCommand(nsString &aCommand) +{ + aCommand.SetString(m_Command); + return NS_OK; +} + +NS_IMETHODIMP +nsDocumentBindInfo::GetURL(nsIURL **aURL) +{ + *aURL = m_Url; + NS_IF_ADDREF(m_Url); + + return NS_OK; +} + +NS_IMETHODIMP +nsDocumentBindInfo::GetContainer(nsIContentViewerContainer **aContainer) +{ + *aContainer = m_Container; + NS_IF_ADDREF(m_Container); + + return NS_OK; +} + +NS_IMETHODIMP +nsDocumentBindInfo::GetExtraInfo(nsISupports **aExtraInfo) +{ + *aExtraInfo = m_ExtraInfo; + NS_IF_ADDREF(m_ExtraInfo); + + return NS_OK; +} + NS_METHOD nsDocumentBindInfo::RefreshURL(nsIURL* aURL, PRInt32 millis, PRBool repeat) { diff --git a/mozilla/webshell/src/nsWebShell.cpp b/mozilla/webshell/src/nsWebShell.cpp index 3bb228ff2da..2b413c045a5 100644 --- a/mozilla/webshell/src/nsWebShell.cpp +++ b/mozilla/webshell/src/nsWebShell.cpp @@ -42,6 +42,7 @@ #include "nsIPref.h" #include "nsIRefreshUrl.h" #include "nsITimer.h" +#include "jsurl.h" #include "prlog.h" @@ -1714,11 +1715,29 @@ public: NS_IMETHOD LockFactory(PRBool aLock); private: + // XXX TEMPORARY placeholder for starting up some + // services in lieu of a service manager. + static void StartServices(); + + static PRBool mStartedServices; nsrefcnt mRefCnt; }; +PRBool nsWebShellFactory::mStartedServices = PR_FALSE; + +void +nsWebShellFactory::StartServices() +{ + // XXX TEMPORARY Till we have real pluggable protocol handlers + NET_InitJavaScriptProtocol(); + mStartedServices = PR_TRUE; +} + nsWebShellFactory::nsWebShellFactory() { + if (!mStartedServices) { + StartServices(); + } mRefCnt = 0; }