Fix for 45297 r=pollmann

git-svn-id: svn://10.0.0.236/trunk@74270 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
radha%netscape.com
2000-07-14 22:42:33 +00:00
parent 1aef464ec1
commit 1ecf6739ae

View File

@@ -1235,46 +1235,29 @@ NS_IMETHODIMP nsDocShell::Reload(PRInt32 aReloadType)
{
#ifdef SH_IN_FRAMES
// XXX Honor the reload type
NS_ENSURE_STATE(mCurrentURI);
//NS_ENSURE_STATE(mCurrentURI);
// XXXTAB Convert reload type to our type
nsDocShellInfoLoadType type = nsIDocShellLoadInfo::loadReloadNormal;
if ( aReloadType == nsIWebNavigation::loadReloadBypassProxyAndCache )
type = nsIDocShellLoadInfo::loadReloadBypassProxyAndCache;
// XXX: Why does reload fail if session history is not available?
// Won't this break reloading framesets?
if (mSessionHistory == nsnull) {
return NS_OK;
}
nsCOMPtr<nsIDocShellTreeItem> root;
GetSameTypeRootTreeItem(getter_AddRefs(root));
if(root.get() != NS_STATIC_CAST(nsIDocShellTreeItem*, this))
{
nsCOMPtr<nsIWebNavigation> rootAsNav(do_QueryInterface(root));
return rootAsNav->Reload(aReloadType);
}
NS_ENSURE_STATE(mSessionHistory);
UpdateCurrentSessionHistory();
nsCOMPtr<nsISHEntry> entry;
PRInt32 index = -1;
NS_ENSURE_SUCCESS(mSessionHistory->GetIndex(&index), NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(mSessionHistory->GetEntryAtIndex(index, PR_FALSE,
getter_AddRefs(entry)), NS_ERROR_FAILURE);
NS_ENSURE_TRUE(entry, NS_ERROR_FAILURE);
nsCOMPtr<nsIURI> uri;
nsCOMPtr<nsIInputStream> postdata;
entry->GetURI(getter_AddRefs(uri));
entry->GetPostData(getter_AddRefs(postdata));
NS_ENSURE_SUCCESS(InternalLoad(uri, mReferrerURI, nsnull, nsnull,
postdata, type, entry), NS_ERROR_FAILURE);
if (OSHE) {
/* We should fall here in most cases including subframes & refreshes */
entry = OSHE;
} else if (mSessionHistory) {
/* In case we fail above, as a last ditch effort, we
* reload the whole page.
*/
PRInt32 index = -1;
NS_ENSURE_SUCCESS(mSessionHistory->GetIndex(&index), NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(mSessionHistory->GetEntryAtIndex(index, PR_FALSE,
getter_AddRefs(entry)), NS_ERROR_FAILURE);
NS_ENSURE_TRUE(entry, NS_ERROR_FAILURE);
}
return LoadHistoryEntry(entry, type);
#else
@@ -1291,8 +1274,9 @@ NS_IMETHODIMP nsDocShell::Reload(PRInt32 aReloadType)
NS_ENSURE_SUCCESS(InternalLoad(mCurrentURI, mReferrerURI, nsnull, nsnull,
nsnull, type), NS_ERROR_FAILURE);
#endif /* SH_IN_FRAMES */
return NS_OK;
#endif /* SH_IN_FRAMES */
}
NS_IMETHODIMP nsDocShell::Stop()
@@ -3338,6 +3322,7 @@ nsresult nsDocShell::AddToSessionHistory(nsIURI *aURI,
if (mSessionHistory) {
if (mLoadType != nsIDocShellLoadInfo::loadNormalReplace)
rv = mSessionHistory->AddEntry(entry, shouldPersist);
} else {
rv = AddChildSHEntry(nsnull, entry, mChildOffset);
}