From 6a06f69242d597a19267dfc7e810076c3084abec Mon Sep 17 00:00:00 2001 From: "tbogard%aol.net" Date: Thu, 30 Mar 2000 05:02:28 +0000 Subject: [PATCH] the RefreshURI code now talks in terms of nsIURI instead of strings. Removed unused member variable mScrollPref. Cleaned refreshData up to follow xpcom rules better and to deal with nsIURI instead of strings. It also now talks in terms of docshells instead of webshells. --- docshell/base/nsWebShell.cpp | 93 +++++++++--------------------------- webshell/src/nsWebShell.cpp | 93 +++++++++--------------------------- 2 files changed, 46 insertions(+), 140 deletions(-) diff --git a/docshell/base/nsWebShell.cpp b/docshell/base/nsWebShell.cpp index ca978f018c9..49ebbb4543d 100644 --- a/docshell/base/nsWebShell.cpp +++ b/docshell/base/nsWebShell.cpp @@ -300,8 +300,6 @@ public: const PRUnichar* aTargetSpec); NS_IMETHOD GetLinkState(const PRUnichar* aURLSpec, nsLinkState& aState); - NS_IMETHOD RefreshURL(const char* aURL, PRInt32 millis, PRBool repeat); - // nsIRefreshURL interface methods... NS_IMETHOD RefreshURI(nsIURI* aURI, PRInt32 aMillis, PRBool aRepeat); NS_IMETHOD CancelRefreshURITimers(void); @@ -344,8 +342,6 @@ public: void ShowHistory(); - static void RefreshURLCallback(nsITimer* aTimer, void* aClosure); - static nsEventStatus PR_CALLBACK HandleEvent(nsGUIEvent *aEvent); nsresult CreatePluginHost(PRBool aAllowPlugins); @@ -389,8 +385,6 @@ protected: PRPackedBool mIsInSHist; PRPackedBool mFailedToLoadHistoryService; - nsScrollPreference mScrollPref; - nsVoidArray mRefreshments; eCharsetReloadState mCharsetReloadState; @@ -551,7 +545,6 @@ nsWebShell::nsWebShell() : nsDocShell() NS_INIT_REFCNT(); mHistoryIndex = -1; - mScrollPref = nsScrollPreference_kAuto; mThreadEventQueue = nsnull; InitFrameData(); mItemType = typeContent; @@ -2702,8 +2695,8 @@ public: // nsITimerCallback interface NS_IMETHOD_(void) Notify(nsITimer *timer); - nsIWebShell* mShell; - nsString mUrlSpec; + nsCOMPtr mDocShell; + nsCOMPtr mURI; PRBool mRepeat; PRInt32 mDelay; @@ -2714,13 +2707,10 @@ protected: refreshData::refreshData() { NS_INIT_REFCNT(); - - mShell = nsnull; } refreshData::~refreshData() { - NS_IF_RELEASE(mShell); } @@ -2728,10 +2718,10 @@ NS_IMPL_ISUPPORTS(refreshData, kITimerCallbackIID); NS_IMETHODIMP_(void) refreshData::Notify(nsITimer *aTimer) { - NS_PRECONDITION((nsnull != mShell), "Null pointer..."); - if (nsnull != mShell) { - mShell->LoadURL(mUrlSpec.GetUnicode(), nsnull, PR_TRUE, nsIChannel::LOAD_NORMAL); - } + NS_ASSERTION(mDocShell, "DocShell is somehow null"); + + if(mDocShell) + mDocShell->LoadURI(mURI, nsnull); /* * LoadURL(...) will cancel all refresh timers... This causes the Timer and * its refreshData instance to be released... @@ -2739,68 +2729,31 @@ NS_IMETHODIMP_(void) refreshData::Notify(nsITimer *aTimer) } -NS_IMETHODIMP -nsWebShell::RefreshURI(nsIURI* aURI, PRInt32 millis, PRBool repeat) +NS_IMETHODIMP nsWebShell::RefreshURI(nsIURI* aURI, PRInt32 aDelay, PRBool aRepeat) { + NS_ENSURE_ARG(aURI); - nsresult rv = NS_OK; - if (nsnull == aURI) { - NS_PRECONDITION((aURI != nsnull), "Null pointer"); - rv = NS_ERROR_NULL_POINTER; - goto done; - } + refreshData* data = new refreshData(); + NS_ENSURE_TRUE(data, NS_ERROR_OUT_OF_MEMORY); - char* spec; - aURI->GetSpec(&spec); - rv = RefreshURL(spec, millis, repeat); - nsCRT::free(spec); + nsCOMPtr dataRef = data; // Get the ref count to 1 -done: - return rv; -} + data->mDocShell = this; + data->mURI = aURI; + data->mDelay = aDelay; + data->mRepeat = aRepeat; -NS_IMETHODIMP -nsWebShell::RefreshURL(const char* aURI, PRInt32 millis, PRBool repeat) -{ - nsresult rv = NS_OK; - nsITimer *timer=nsnull; - refreshData *data; + nsITimer* timer = nsnull; - if (nsnull == aURI) { - NS_PRECONDITION((aURI != nsnull), "Null pointer"); - rv = NS_ERROR_NULL_POINTER; - goto done; - } + NS_NewTimer(&timer); + NS_ENSURE_TRUE(timer, NS_ERROR_FAILURE); - NS_NEWXPCOM(data, refreshData); - if (nsnull == data) { - rv = NS_ERROR_OUT_OF_MEMORY; - goto done; - } + NS_LOCK_INSTANCE(); // XXX What is this for? + mRefreshments.AppendElement(timer); + timer->Init(data, aDelay); + NS_UNLOCK_INSTANCE(); - // Set the reference count to one... - NS_ADDREF(data); - - data->mShell = this; - NS_ADDREF(data->mShell); - - data->mUrlSpec = aURI; - data->mDelay = millis; - data->mRepeat = repeat; - - /* Create the timer. */ - if (NS_OK == NS_NewTimer(&timer)) { - /* Add the timer to our array. */ - NS_LOCK_INSTANCE(); - mRefreshments.AppendElement(timer); - timer->Init(data, millis); - NS_UNLOCK_INSTANCE(); - } - - NS_RELEASE(data); - -done: - return rv; + return NS_OK; } NS_IMETHODIMP diff --git a/webshell/src/nsWebShell.cpp b/webshell/src/nsWebShell.cpp index ca978f018c9..49ebbb4543d 100644 --- a/webshell/src/nsWebShell.cpp +++ b/webshell/src/nsWebShell.cpp @@ -300,8 +300,6 @@ public: const PRUnichar* aTargetSpec); NS_IMETHOD GetLinkState(const PRUnichar* aURLSpec, nsLinkState& aState); - NS_IMETHOD RefreshURL(const char* aURL, PRInt32 millis, PRBool repeat); - // nsIRefreshURL interface methods... NS_IMETHOD RefreshURI(nsIURI* aURI, PRInt32 aMillis, PRBool aRepeat); NS_IMETHOD CancelRefreshURITimers(void); @@ -344,8 +342,6 @@ public: void ShowHistory(); - static void RefreshURLCallback(nsITimer* aTimer, void* aClosure); - static nsEventStatus PR_CALLBACK HandleEvent(nsGUIEvent *aEvent); nsresult CreatePluginHost(PRBool aAllowPlugins); @@ -389,8 +385,6 @@ protected: PRPackedBool mIsInSHist; PRPackedBool mFailedToLoadHistoryService; - nsScrollPreference mScrollPref; - nsVoidArray mRefreshments; eCharsetReloadState mCharsetReloadState; @@ -551,7 +545,6 @@ nsWebShell::nsWebShell() : nsDocShell() NS_INIT_REFCNT(); mHistoryIndex = -1; - mScrollPref = nsScrollPreference_kAuto; mThreadEventQueue = nsnull; InitFrameData(); mItemType = typeContent; @@ -2702,8 +2695,8 @@ public: // nsITimerCallback interface NS_IMETHOD_(void) Notify(nsITimer *timer); - nsIWebShell* mShell; - nsString mUrlSpec; + nsCOMPtr mDocShell; + nsCOMPtr mURI; PRBool mRepeat; PRInt32 mDelay; @@ -2714,13 +2707,10 @@ protected: refreshData::refreshData() { NS_INIT_REFCNT(); - - mShell = nsnull; } refreshData::~refreshData() { - NS_IF_RELEASE(mShell); } @@ -2728,10 +2718,10 @@ NS_IMPL_ISUPPORTS(refreshData, kITimerCallbackIID); NS_IMETHODIMP_(void) refreshData::Notify(nsITimer *aTimer) { - NS_PRECONDITION((nsnull != mShell), "Null pointer..."); - if (nsnull != mShell) { - mShell->LoadURL(mUrlSpec.GetUnicode(), nsnull, PR_TRUE, nsIChannel::LOAD_NORMAL); - } + NS_ASSERTION(mDocShell, "DocShell is somehow null"); + + if(mDocShell) + mDocShell->LoadURI(mURI, nsnull); /* * LoadURL(...) will cancel all refresh timers... This causes the Timer and * its refreshData instance to be released... @@ -2739,68 +2729,31 @@ NS_IMETHODIMP_(void) refreshData::Notify(nsITimer *aTimer) } -NS_IMETHODIMP -nsWebShell::RefreshURI(nsIURI* aURI, PRInt32 millis, PRBool repeat) +NS_IMETHODIMP nsWebShell::RefreshURI(nsIURI* aURI, PRInt32 aDelay, PRBool aRepeat) { + NS_ENSURE_ARG(aURI); - nsresult rv = NS_OK; - if (nsnull == aURI) { - NS_PRECONDITION((aURI != nsnull), "Null pointer"); - rv = NS_ERROR_NULL_POINTER; - goto done; - } + refreshData* data = new refreshData(); + NS_ENSURE_TRUE(data, NS_ERROR_OUT_OF_MEMORY); - char* spec; - aURI->GetSpec(&spec); - rv = RefreshURL(spec, millis, repeat); - nsCRT::free(spec); + nsCOMPtr dataRef = data; // Get the ref count to 1 -done: - return rv; -} + data->mDocShell = this; + data->mURI = aURI; + data->mDelay = aDelay; + data->mRepeat = aRepeat; -NS_IMETHODIMP -nsWebShell::RefreshURL(const char* aURI, PRInt32 millis, PRBool repeat) -{ - nsresult rv = NS_OK; - nsITimer *timer=nsnull; - refreshData *data; + nsITimer* timer = nsnull; - if (nsnull == aURI) { - NS_PRECONDITION((aURI != nsnull), "Null pointer"); - rv = NS_ERROR_NULL_POINTER; - goto done; - } + NS_NewTimer(&timer); + NS_ENSURE_TRUE(timer, NS_ERROR_FAILURE); - NS_NEWXPCOM(data, refreshData); - if (nsnull == data) { - rv = NS_ERROR_OUT_OF_MEMORY; - goto done; - } + NS_LOCK_INSTANCE(); // XXX What is this for? + mRefreshments.AppendElement(timer); + timer->Init(data, aDelay); + NS_UNLOCK_INSTANCE(); - // Set the reference count to one... - NS_ADDREF(data); - - data->mShell = this; - NS_ADDREF(data->mShell); - - data->mUrlSpec = aURI; - data->mDelay = millis; - data->mRepeat = repeat; - - /* Create the timer. */ - if (NS_OK == NS_NewTimer(&timer)) { - /* Add the timer to our array. */ - NS_LOCK_INSTANCE(); - mRefreshments.AppendElement(timer); - timer->Init(data, millis); - NS_UNLOCK_INSTANCE(); - } - - NS_RELEASE(data); - -done: - return rv; + return NS_OK; } NS_IMETHODIMP