diff --git a/mozilla/content/base/src/nsDocument.cpp b/mozilla/content/base/src/nsDocument.cpp index c725496b5d9..fa018378918 100644 --- a/mozilla/content/base/src/nsDocument.cpp +++ b/mozilla/content/base/src/nsDocument.cpp @@ -773,6 +773,7 @@ nsDocument::ResetToURI(nsIURI *aURI, nsILoadGroup *aLoadGroup) mContentType.Truncate(); mContentLanguage.Truncate(); mBaseTarget.Truncate(); + mReferrer.Truncate(); mXMLDeclarationBits = 0; } @@ -925,6 +926,13 @@ nsDocument::SetContentType(const nsAString& aContentType) CopyUTF16toUTF8(aContentType, mContentType); } +NS_IMETHODIMP +nsDocument::GetReferrer(nsAString& aReferrer) +{ + CopyUTF8toUTF16(mReferrer, aReferrer); + return NS_OK; +} + nsresult nsDocument::SetBaseURI(nsIURI* aURI) { @@ -4093,6 +4101,13 @@ nsDocument::RetrieveRelevantHeaders(nsIChannel *aChannel) mLastModified.Truncate(); } + // The misspelled key 'referer' is as per the HTTP spec + rv = httpChannel->GetRequestHeader(NS_LITERAL_CSTRING("referer"), + mReferrer); + if (NS_FAILED(rv)) { + mReferrer.Truncate(); + } + rv = httpChannel->GetResponseHeader(NS_LITERAL_CSTRING("Content-Language"), mContentLanguage); diff --git a/mozilla/content/base/src/nsDocument.h b/mozilla/content/base/src/nsDocument.h index 1559fd27e96..e01b2cb3a0d 100644 --- a/mozilla/content/base/src/nsDocument.h +++ b/mozilla/content/base/src/nsDocument.h @@ -512,6 +512,7 @@ protected: nsDocument(); virtual ~nsDocument(); + nsCString mReferrer; nsCString mLastModified; nsCOMPtr mPrincipal; diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp index adf8c153243..962b5d57210 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp @@ -712,29 +712,6 @@ nsHTMLDocument::StartAutodetection(nsIDocShell *aDocShell, nsACString& aCharset, } } -void -nsHTMLDocument::RetrieveRelevantHeaders(nsIChannel *aChannel) -{ - mChannel = aChannel; - mHttpChannel = do_QueryInterface(aChannel); - - nsDocument::RetrieveRelevantHeaders(aChannel); - - if (mHttpChannel) { - nsCAutoString header; - nsresult rv; - - // The misspelled key 'referer' is as per the HTTP spec - rv = mHttpChannel->GetRequestHeader(NS_LITERAL_CSTRING("referer"), - header); - if (NS_SUCCEEDED(rv)) { - SetReferrer(NS_ConvertASCIItoUCS2(header)); - } - } - - return; -} - nsresult nsHTMLDocument::StartDocumentLoad(const char* aCommand, nsIChannel* aChannel, @@ -1198,14 +1175,6 @@ nsHTMLDocument::InternalGetNumberOfStyleSheets() const return count; } -NS_IMETHODIMP -nsHTMLDocument::SetReferrer(const nsAString& aReferrer) -{ - mReferrer.Assign(aReferrer); - - return NS_OK; -} - nsICSSLoader* nsHTMLDocument::GetCSSLoader() { @@ -1805,9 +1774,7 @@ nsHTMLDocument::GetTitle(nsAString& aTitle) NS_IMETHODIMP nsHTMLDocument::GetReferrer(nsAString& aReferrer) { - aReferrer.Assign(mReferrer); - - return NS_OK; + return nsDocument::GetReferrer(aReferrer); } void diff --git a/mozilla/content/html/document/src/nsHTMLDocument.h b/mozilla/content/html/document/src/nsHTMLDocument.h index 41bfaf60170..de19ae15758 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.h +++ b/mozilla/content/html/document/src/nsHTMLDocument.h @@ -113,8 +113,6 @@ public: virtual nsICSSLoader* GetCSSLoader(); - NS_IMETHOD SetReferrer(const nsAString& aReferrer); - NS_IMETHOD GetCompatibilityMode(nsCompatibility& aMode); NS_IMETHOD SetCompatibilityMode(nsCompatibility aMode); @@ -256,10 +254,6 @@ protected: nsresult CreateAndAddWyciwygChannel(void); nsresult RemoveWyciwygChannel(void); - virtual void RetrieveRelevantHeaders(nsIChannel *aChannel); - - nsString mReferrer; - nsCOMPtr mChannel; nsCOMPtr mHttpChannel; diff --git a/mozilla/content/html/document/src/nsIHTMLDocument.h b/mozilla/content/html/document/src/nsIHTMLDocument.h index 29f2a39e685..b7cf6a54658 100644 --- a/mozilla/content/html/document/src/nsIHTMLDocument.h +++ b/mozilla/content/html/document/src/nsIHTMLDocument.h @@ -72,8 +72,6 @@ public: NS_IMETHOD RemoveImageMap(nsIDOMHTMLMapElement* aMap) = 0; - NS_IMETHOD SetReferrer(const nsAString& aReferrer) = 0; - /** * Access compatibility mode for this document */