diff --git a/webshell/tests/viewer/nsBrowserWindow.cpp b/webshell/tests/viewer/nsBrowserWindow.cpp index 25316657209f..abb01ccab413 100644 --- a/webshell/tests/viewer/nsBrowserWindow.cpp +++ b/webshell/tests/viewer/nsBrowserWindow.cpp @@ -315,9 +315,8 @@ HandleBrowserEvent(nsGUIEvent *aEvent) case NS_DESTROY: { nsViewerApp* app = bw->mApp; + app->CloseWindow(bw); result = nsEventStatus_eConsumeDoDefault; - bw->Close(); - NS_RELEASE(bw); #ifndef XP_MAC // XXX Really shouldn't just exit, we should just notify somebody... diff --git a/webshell/tests/viewer/nsViewerApp.cpp b/webshell/tests/viewer/nsViewerApp.cpp index 34ef1cdb6a6f..d168d8d115ed 100644 --- a/webshell/tests/viewer/nsViewerApp.cpp +++ b/webshell/tests/viewer/nsViewerApp.cpp @@ -614,6 +614,16 @@ nsViewerApp::OpenWindow() return NS_OK; } +NS_IMETHODIMP +nsViewerApp::CloseWindow(nsBrowserWindow* aBrowserWindow) +{ + aBrowserWindow->Close(); + NS_RELEASE(aBrowserWindow); + mCrawler->SetBrowserWindow(nsnull); + + return NS_OK; +} + NS_IMETHODIMP nsViewerApp::ViewSource(nsString& aURL) { diff --git a/webshell/tests/viewer/nsViewerApp.h b/webshell/tests/viewer/nsViewerApp.h index 281066b0b74f..cc18b56ea337 100644 --- a/webshell/tests/viewer/nsViewerApp.h +++ b/webshell/tests/viewer/nsViewerApp.h @@ -52,6 +52,7 @@ public: NS_IMETHOD Initialize(int argc, char** argv); NS_IMETHOD ProcessArguments(int argc, char** argv); NS_IMETHOD OpenWindow(); + NS_IMETHOD CloseWindow(nsBrowserWindow* aBrowserWindow); NS_IMETHOD ViewSource(nsString& aURL); NS_IMETHOD OpenWindow(PRUint32 aNewChromeMask, nsIBrowserWindow*& aNewWindow); NS_IMETHOD CreateRobot(nsBrowserWindow* aWindow); diff --git a/webshell/tests/viewer/nsWebCrawler.cpp b/webshell/tests/viewer/nsWebCrawler.cpp index 66c5c6eba917..71e353b9dc98 100644 --- a/webshell/tests/viewer/nsWebCrawler.cpp +++ b/webshell/tests/viewer/nsWebCrawler.cpp @@ -657,8 +657,9 @@ nsWebCrawler::FindMoreURLs() void nsWebCrawler::SetBrowserWindow(nsIBrowserWindow* aWindow) { + NS_IF_RELEASE(mBrowser); mBrowser = aWindow; - NS_ADDREF(mBrowser); + NS_IF_ADDREF(mBrowser); } static void