Bug 625712. Make useGlobalHistory work again on docshells. r=sdwilsh

This commit is contained in:
Boris Zbarsky 2011-01-28 09:29:01 -05:00
parent 1c8c38fe26
commit eb8fce667c
2 changed files with 18 additions and 11 deletions

View File

@ -712,6 +712,7 @@ nsDocShell::nsDocShell():
mIsOffScreenBrowser(PR_FALSE),
mIsActive(PR_TRUE),
mIsAppTab(PR_FALSE),
mUseGlobalHistory(PR_FALSE),
mFiredUnloadEvent(PR_FALSE),
mEODForCurrentDocument(PR_FALSE),
mURIResultedInDocument(PR_FALSE),
@ -3090,7 +3091,7 @@ nsDocShell::AddChild(nsIDocShellTreeItem * aChild)
childDocShell->SetChildOffset(dynamic ? -1 : mChildList.Count() - 1);
/* Set the child's global history if the parent has one */
if (mGlobalHistory) {
if (mUseGlobalHistory) {
nsCOMPtr<nsIDocShellHistory>
dsHistoryChild(do_QueryInterface(aChild));
if (dsHistoryChild)
@ -3432,6 +3433,8 @@ nsDocShell::SetUseGlobalHistory(PRBool aUseGlobalHistory)
{
nsresult rv;
mUseGlobalHistory = aUseGlobalHistory;
if (!aUseGlobalHistory) {
mGlobalHistory = nsnull;
return NS_OK;
@ -3448,7 +3451,7 @@ nsDocShell::SetUseGlobalHistory(PRBool aUseGlobalHistory)
NS_IMETHODIMP
nsDocShell::GetUseGlobalHistory(PRBool *aUseGlobalHistory)
{
*aUseGlobalHistory = (mGlobalHistory != nsnull);
*aUseGlobalHistory = mUseGlobalHistory;
return NS_OK;
}
@ -4949,7 +4952,7 @@ nsDocShell::SetTitle(const PRUnichar * aTitle)
treeOwnerAsWin->SetTitle(aTitle);
}
if (mCurrentURI && mLoadType != LOAD_ERROR_PAGE) {
if (mCurrentURI && mLoadType != LOAD_ERROR_PAGE && mUseGlobalHistory) {
nsCOMPtr<IHistory> history = services::GetHistoryService();
if (history) {
history->SetURITitle(mCurrentURI, mTitle);
@ -8352,12 +8355,14 @@ nsDocShell::InternalLoad(nsIURI * aURI,
/* Set the title for the Global History entry for this anchor url.
*/
nsCOMPtr<IHistory> history = services::GetHistoryService();
if (history) {
history->SetURITitle(aURI, mTitle);
}
else if (mGlobalHistory) {
mGlobalHistory->SetPageTitle(aURI, mTitle);
if (mUseGlobalHistory) {
nsCOMPtr<IHistory> history = services::GetHistoryService();
if (history) {
history->SetURITitle(aURI, mTitle);
}
else if (mGlobalHistory) {
mGlobalHistory->SetPageTitle(aURI, mTitle);
}
}
if (sameDocIdent) {
@ -10526,8 +10531,9 @@ nsDocShell::AddURIVisit(nsIURI* aURI,
{
NS_ASSERTION(aURI, "Visited URI is null!");
// Only content-type docshells save URI visits.
if (mItemType != typeContent) {
// Only content-type docshells save URI visits. Also don't do
// anything here if we're not supposed to use global history.
if (mItemType != typeContent || !mUseGlobalHistory) {
return;
}

View File

@ -792,6 +792,7 @@ protected:
PRPackedBool mIsOffScreenBrowser;
PRPackedBool mIsActive;
PRPackedBool mIsAppTab;
PRPackedBool mUseGlobalHistory;
// This boolean is set to true right before we fire pagehide and generally
// unset when we embed a new content viewer. While it's true no navigation