diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index 8c76769b718..aaddc841eb4 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -207,7 +207,6 @@ nsDocShell::nsDocShell(): mAllowImages(PR_TRUE), mFocusDocFirst(PR_FALSE), mCreatingDocument(PR_FALSE), - mUseErrorPages(PR_FALSE), mAppType(nsIDocShell::APP_TYPE_UNKNOWN), mBusyFlags(BUSY_FLAGS_NONE), mFiredUnloadEvent(PR_FALSE), @@ -216,6 +215,7 @@ nsDocShell::nsDocShell(): mUseExternalProtocolHandler(PR_FALSE), mDisallowPopupWindows(PR_FALSE), mIsBeingDestroyed(PR_FALSE), + mUseErrorPages(PR_FALSE), mParent(nsnull), mTreeOwner(nsnull), mChromeEventHandler(nsnull) @@ -1967,7 +1967,41 @@ nsDocShell::AddChild(nsIDocShellTreeItem * aChild) if (!childAsDocShell) return NS_OK; - // charset and zoom will be inherited in SetupNewViewer() + // Do some docShell Specific stuff. + nsXPIDLString defaultCharset; + nsXPIDLString forceCharset; + float textZoom = 1.0; + NS_ENSURE_TRUE(mContentViewer, NS_ERROR_FAILURE); + + nsCOMPtr muDV = + do_QueryInterface(mContentViewer); + if (muDV) { + NS_ENSURE_SUCCESS(muDV-> + GetDefaultCharacterSet(getter_Copies(defaultCharset)), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(muDV-> + GetForceCharacterSet(getter_Copies(forceCharset)), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(muDV-> + GetTextZoom(&textZoom), + NS_ERROR_FAILURE); + } + nsCOMPtr childCV; + NS_ENSURE_SUCCESS(childAsDocShell-> + GetContentViewer(getter_AddRefs(childCV)), + NS_ERROR_FAILURE); + if (childCV) { + nsCOMPtr childmuDV = + do_QueryInterface(childCV); + if (childmuDV) { + NS_ENSURE_SUCCESS(childmuDV->SetDefaultCharacterSet(defaultCharset), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(childmuDV->SetForceCharacterSet(forceCharset), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(childmuDV->SetTextZoom(textZoom), + NS_ERROR_FAILURE); + } + } // Now take this document's charset and set the parentCharset field of the // child's DocumentCharsetInfo to it. We'll later use that field, in the @@ -4371,15 +4405,6 @@ nsDocShell::SetupNewViewer(nsIContentViewer * aNewViewer) NS_ERROR_FAILURE); nsCOMPtr parent(do_QueryInterface(parentAsItem)); - nsXPIDLString defaultCharset; - nsXPIDLString forceCharset; - nsXPIDLString hintCharset; - PRInt32 hintCharsetSource; - nsXPIDLString prevDocCharset; - float textZoom; - // |newMUDV| also serves as a flag to set the data from the above vars - nsCOMPtr newMUDV; - if (mContentViewer || parent) { nsCOMPtr oldMUDV; if (mContentViewer) { @@ -4395,32 +4420,44 @@ nsDocShell::SetupNewViewer(nsIContentViewer * aNewViewer) oldMUDV = do_QueryInterface(parentContentViewer); } - if (oldMUDV) - { - nsresult rv; + nsXPIDLString defaultCharset; + nsXPIDLString forceCharset; + nsXPIDLString hintCharset; + PRInt32 hintCharsetSource; + nsXPIDLString prevDocCharset; - newMUDV = do_QueryInterface(aNewViewer,&rv); - if (NS_SUCCEEDED(rv) && newMUDV) { - NS_ENSURE_SUCCESS(oldMUDV-> - GetDefaultCharacterSet(getter_Copies - (defaultCharset)), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(oldMUDV-> - GetForceCharacterSet(getter_Copies(forceCharset)), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(oldMUDV-> - GetHintCharacterSet(getter_Copies(hintCharset)), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(oldMUDV-> - GetHintCharacterSetSource(&hintCharsetSource), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(oldMUDV-> - GetTextZoom(&textZoom), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(oldMUDV-> - GetPrevDocCharacterSet(getter_Copies(prevDocCharset)), - NS_ERROR_FAILURE); - } + nsCOMPtr + newMUDV(do_QueryInterface(aNewViewer)); + if (oldMUDV && newMUDV) { + NS_ENSURE_SUCCESS(oldMUDV-> + GetDefaultCharacterSet(getter_Copies + (defaultCharset)), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(oldMUDV-> + GetForceCharacterSet(getter_Copies(forceCharset)), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(oldMUDV-> + GetHintCharacterSet(getter_Copies(hintCharset)), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(oldMUDV-> + GetHintCharacterSetSource(&hintCharsetSource), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(oldMUDV-> + GetPrevDocCharacterSet(getter_Copies(prevDocCharset)), + NS_ERROR_FAILURE); + + // set the old state onto the new content viewer + NS_ENSURE_SUCCESS(newMUDV->SetDefaultCharacterSet(defaultCharset), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(newMUDV->SetForceCharacterSet(forceCharset), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(newMUDV->SetHintCharacterSet(hintCharset), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(newMUDV-> + SetHintCharacterSetSource(hintCharsetSource), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(newMUDV->SetPrevDocCharacterSet(prevDocCharset), + NS_ERROR_FAILURE); } } @@ -4533,27 +4570,6 @@ nsDocShell::SetupNewViewer(nsIContentViewer * aNewViewer) return NS_ERROR_FAILURE; } - // If we have old state to copy, set the old state onto the new content - // viewer - if (newMUDV) - { - NS_ENSURE_SUCCESS(newMUDV->SetDefaultCharacterSet(defaultCharset), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(newMUDV->SetForceCharacterSet(forceCharset), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(newMUDV->SetHintCharacterSet(hintCharset), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(newMUDV-> - SetHintCharacterSetSource(hintCharsetSource), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(newMUDV->SetPrevDocCharacterSet(prevDocCharset), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(newMUDV->SetTextZoom(textZoom), - NS_ERROR_FAILURE); - // Drop the reference now just in case anyone cares (they may not). - newMUDV = nsnull; - } - // End copying block (Don't mess with the old content/document viewer // beyond here!!)