It now implements nsIDocumentLoaderObserver

This commit is contained in:
rods%netscape.com 1999-02-10 16:32:55 +00:00
parent d5b2fe1ce5
commit f66bb4bc53
2 changed files with 62 additions and 18 deletions

View File

@ -64,6 +64,7 @@ static NS_DEFINE_IID(kXULCommandCID, NS_XULCOMMAND_CID);
/* Define Interface IDs */
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIWebShellWindowIID, NS_IWEBSHELL_WINDOW_IID);
static NS_DEFINE_IID(kIWidgetIID, NS_IWIDGET_IID);
static NS_DEFINE_IID(kIWebShellIID, NS_IWEB_SHELL_IID);
static NS_DEFINE_IID(kIWebShellContainerIID, NS_IWEB_SHELL_CONTAINER_IID);
@ -83,7 +84,7 @@ static NS_DEFINE_IID(kIMenuIID, NS_IMENU_IID);
static NS_DEFINE_IID(kIMenuBarIID, NS_IMENUBAR_IID);
static NS_DEFINE_IID(kIMenuItemIID, NS_IMENUITEM_IID);
#define DEBUGCMDS 0
#define DEBUGCMDS 1
#include "nsIWebShell.h"
@ -129,6 +130,11 @@ nsWebShellWindow::QueryInterface(REFNSIID aIID, void** aInstancePtr)
if (NULL == aInstancePtr) {
return NS_ERROR_NULL_POINTER;
}
if ( aIID.Equals(kIWebShellWindowIID) ) {
*aInstancePtr = (void*) ((nsIWebShellWindow*)this);
NS_ADDREF_THIS();
return NS_OK;
}
if (aIID.Equals(kIWebShellContainerIID)) {
*aInstancePtr = (void*)(nsIWebShellContainer*)this;
NS_ADDREF_THIS();
@ -149,7 +155,14 @@ nsWebShellWindow::QueryInterface(REFNSIID aIID, void** aInstancePtr)
nsresult nsWebShellWindow::Initialize(nsIAppShell* aShell, nsIURL* aUrl,
nsString& aControllerIID)
nsString& aControllerIID, nsIStreamObserver* anObserver)
{
return Initialize(nsnull, aShell, aUrl, aControllerIID, anObserver);
}
nsresult nsWebShellWindow::Initialize(nsIWidget* aParent,
nsIAppShell* aShell, nsIURL* aUrl,
nsString& aControllerIID, nsIStreamObserver* anObserver)
{
nsresult rv;
@ -158,8 +171,6 @@ nsresult nsWebShellWindow::Initialize(nsIAppShell* aShell, nsIURL* aUrl,
nsIID iid;
char str[40];
aUrl->GetSpec(&tmpStr);
urlString = tmpStr;
// XXX: need to get the default window size from prefs...
nsRect r(0, 0, 650, 618);
@ -167,9 +178,13 @@ nsresult nsWebShellWindow::Initialize(nsIAppShell* aShell, nsIURL* aUrl,
nsWidgetInitData initData;
if (nsnull == aUrl) {
rv = NS_ERROR_NULL_POINTER;
goto done;
//if (nsnull == aUrl) {
// rv = NS_ERROR_NULL_POINTER;
// goto done;
//}
if (nsnull != aUrl) {
aUrl->GetSpec(&tmpStr);
urlString = tmpStr;
}
// Create top level window
@ -182,7 +197,7 @@ nsresult nsWebShellWindow::Initialize(nsIAppShell* aShell, nsIURL* aUrl,
initData.mBorderStyle = eBorderStyle_dialog;
mWindow->SetClientData(this);
mWindow->Create((nsIWidget*)nsnull, // Parent nsIWidget
mWindow->Create((nsIWidget*)aParent, // Parent nsIWidget
r, // Widget dimensions
nsWebShellWindow::HandleEvent, // Event handler function
nsnull, // Device context
@ -207,7 +222,7 @@ nsresult nsWebShellWindow::Initialize(nsIAppShell* aShell, nsIURL* aUrl,
PR_TRUE, // Allow Plugins
PR_TRUE);
mWebShell->SetContainer(this);
//mWebShell->SetObserver((nsIStreamObserver*)this);
mWebShell->SetObserver((nsIStreamObserver*)anObserver);
nsIDocumentLoader * docLoader;
mWebShell->GetDocumentLoader(docLoader);
@ -216,7 +231,9 @@ nsresult nsWebShellWindow::Initialize(nsIAppShell* aShell, nsIURL* aUrl,
}
/// webShell->SetPrefs(aPrefs);
mWebShell->LoadURL(urlString);
if (nsnull != aUrl) {
mWebShell->LoadURL(urlString);
}
mWebShell->Show();
mWindow->Show(PR_TRUE);
@ -226,9 +243,9 @@ nsresult nsWebShellWindow::Initialize(nsIAppShell* aShell, nsIURL* aUrl,
aControllerIID.ToCString(str, sizeof(str));
iid.Parse(str);
rv = nsRepository::CreateInstance(iid, nsnull,
kIWidgetControllerIID,
(void**)&mController);
//rv = nsRepository::CreateInstance(iid, nsnull,
// kIWidgetControllerIID,
// (void**)&mController);
done:
return rv;
}
@ -367,7 +384,7 @@ nsWebShellWindow::ProgressLoadURL(nsIWebShell* aShell, const PRUnichar* aURL,
}
NS_IMETHODIMP
nsWebShellWindow::EndLoadURL(nsIWebShell* aShell, const PRUnichar* aURL,
nsWebShellWindow::EndLoadURL(nsIWebShell* aWebShell, const PRUnichar* aURL,
PRInt32 aStatus)
{
if (nsnull != mThrobber) {
@ -380,6 +397,7 @@ nsWebShellWindow::EndLoadURL(nsIWebShell* aShell, const PRUnichar* aURL,
msg.Append(" :Stop");
mStatusText->SetData(msg);
}
return NS_OK;
}
@ -710,6 +728,24 @@ nsWebShellWindow::FocusAvailable(nsIWebShell* aFocusedWebShell)
return NS_OK;
}
//----------------------------------------
// nsIWebShellWindow methods...
//----------------------------------------
NS_IMETHODIMP
nsWebShellWindow::GetWebShell(nsIWebShell *& aWebShell)
{
aWebShell = mWebShell;
NS_ADDREF(mWebShell);
return NS_OK;
}
NS_IMETHODIMP
nsWebShellWindow::GetWidget(nsIWidget *& aWidget)
{
aWidget = mWindow;
NS_ADDREF(mWindow); // XXX Why?
return NS_OK;
}
//----------------------------------------
//----------------------------------------
@ -717,7 +753,8 @@ nsWebShellWindow::FocusAvailable(nsIWebShell* aFocusedWebShell)
//----------------------------------------
// nsIDocumentLoaderObserver implementation
//----------------------------------------
NS_IMETHODIMP nsWebShellWindow::OnStartURLLoad(nsIURL* aURL, const char* aContentType, nsIContentViewer* aViewer)
NS_IMETHODIMP
nsWebShellWindow::OnStartURLLoad(nsIURL* aURL, const char* aContentType, nsIContentViewer* aViewer)
{
return NS_OK;
}

View File

@ -21,6 +21,7 @@
#define nsWebShellWindow_h__
#include "nsISupports.h"
#include "nsIWebShellWindow.h"
#include "nsGUIEvent.h"
#include "nsIWebShell.h"
#include "nsIDocumentLoaderObserver.h"
@ -42,8 +43,10 @@ class nsIDOMCharacterData;
class nsIDOMHTMLInputElement;
class nsIDOMHTMLImageElement;
class nsIDOMElement;
class nsIStreamObserver;
class nsWebShellWindow : public nsIWebShellContainer,
class nsWebShellWindow : public nsIWebShellWindow,
public nsIWebShellContainer,
public nsIDocumentLoaderObserver
{
public:
@ -79,9 +82,13 @@ public:
NS_IMETHOD FocusAvailable(nsIWebShell* aFocusedWebShell);
// nsIWebShellWindow methods...
NS_IMETHOD GetWebShell(nsIWebShell *& aWebShell);
NS_IMETHOD GetWidget(nsIWidget *& aWidget);
// nsWebShellWindow methods...
nsresult Initialize(nsIAppShell* aShell, nsIURL* aUrl, nsString& aControllerIID);
nsresult Initialize(nsIAppShell* aShell, nsIURL* aUrl, nsString& aControllerIID, nsIStreamObserver* anObserver);
nsresult Initialize(nsIWidget * aParent, nsIAppShell* aShell, nsIURL* aUrl, nsString& aControllerIID, nsIStreamObserver* anObserver);
nsIWidget* GetWidget(void) { return mWindow; }
// nsIDocumentLoaderObserver