diff --git a/mozilla/content/html/content/src/nsHTMLAnchorElement.cpp b/mozilla/content/html/content/src/nsHTMLAnchorElement.cpp index cb2e7666eeb..d84f40c0f6b 100644 --- a/mozilla/content/html/content/src/nsHTMLAnchorElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLAnchorElement.cpp @@ -567,7 +567,7 @@ nsHTMLAnchorElement::GetSearch(nsAWritableString& aSearch) nsIURL* url; result = uri->QueryInterface(NS_GET_IID(nsIURL), (void**)&url); if (NS_SUCCEEDED(result)) { - result = url->GetQuery(&search); + result = url->GetEscapedQuery(&search); NS_RELEASE(url); } if (result == NS_OK && (nsnull != search) && ('\0' != *search)) { diff --git a/mozilla/content/html/content/src/nsHTMLAreaElement.cpp b/mozilla/content/html/content/src/nsHTMLAreaElement.cpp index df969b4c353..e2575a6e021 100644 --- a/mozilla/content/html/content/src/nsHTMLAreaElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLAreaElement.cpp @@ -410,7 +410,7 @@ nsHTMLAreaElement::GetSearch(nsAWritableString& aSearch) nsIURL* url; result = uri->QueryInterface(NS_GET_IID(nsIURL), (void**)&url); if (NS_SUCCEEDED(result)) { - result = url->GetQuery(&search); + result = url->GetEscapedQuery(&search); NS_RELEASE(url); } if (result == NS_OK && (nsnull != search) && ('\0' != *search)) { diff --git a/mozilla/dom/src/base/nsLocation.cpp b/mozilla/dom/src/base/nsLocation.cpp index 5f536b5b428..5b33b22efde 100644 --- a/mozilla/dom/src/base/nsLocation.cpp +++ b/mozilla/dom/src/base/nsLocation.cpp @@ -569,7 +569,7 @@ LocationImpl::GetSearch(nsAWritableString& aSearch) nsIURL* url; result = uri->QueryInterface(NS_GET_IID(nsIURL), (void**)&url); if (NS_SUCCEEDED(result)) { - result = url->GetQuery(&search); + result = url->GetEscapedQuery(&search); NS_RELEASE(url); } if (result == NS_OK && (nsnull != search) && ('\0' != *search)) { diff --git a/mozilla/layout/html/content/src/nsHTMLAnchorElement.cpp b/mozilla/layout/html/content/src/nsHTMLAnchorElement.cpp index cb2e7666eeb..d84f40c0f6b 100644 --- a/mozilla/layout/html/content/src/nsHTMLAnchorElement.cpp +++ b/mozilla/layout/html/content/src/nsHTMLAnchorElement.cpp @@ -567,7 +567,7 @@ nsHTMLAnchorElement::GetSearch(nsAWritableString& aSearch) nsIURL* url; result = uri->QueryInterface(NS_GET_IID(nsIURL), (void**)&url); if (NS_SUCCEEDED(result)) { - result = url->GetQuery(&search); + result = url->GetEscapedQuery(&search); NS_RELEASE(url); } if (result == NS_OK && (nsnull != search) && ('\0' != *search)) { diff --git a/mozilla/layout/html/content/src/nsHTMLAreaElement.cpp b/mozilla/layout/html/content/src/nsHTMLAreaElement.cpp index df969b4c353..e2575a6e021 100644 --- a/mozilla/layout/html/content/src/nsHTMLAreaElement.cpp +++ b/mozilla/layout/html/content/src/nsHTMLAreaElement.cpp @@ -410,7 +410,7 @@ nsHTMLAreaElement::GetSearch(nsAWritableString& aSearch) nsIURL* url; result = uri->QueryInterface(NS_GET_IID(nsIURL), (void**)&url); if (NS_SUCCEEDED(result)) { - result = url->GetQuery(&search); + result = url->GetEscapedQuery(&search); NS_RELEASE(url); } if (result == NS_OK && (nsnull != search) && ('\0' != *search)) { diff --git a/mozilla/mailnews/base/util/nsMsgMailNewsUrl.cpp b/mozilla/mailnews/base/util/nsMsgMailNewsUrl.cpp index 010316ceb3b..9ae7553cc62 100644 --- a/mozilla/mailnews/base/util/nsMsgMailNewsUrl.cpp +++ b/mozilla/mailnews/base/util/nsMsgMailNewsUrl.cpp @@ -546,6 +546,11 @@ NS_IMETHODIMP nsMsgMailNewsUrl::GetQuery(char * *aQuery) return m_baseURL->GetQuery(aQuery); } +NS_IMETHODIMP nsMsgMailNewsUrl::GetEscapedQuery(char * *aQuery) +{ + return m_baseURL->GetEscapedQuery(aQuery); +} + NS_IMETHODIMP nsMsgMailNewsUrl::SetQuery(const char *aQuery) { return m_baseURL->SetQuery(aQuery); diff --git a/mozilla/netwerk/base/public/nsIURL.idl b/mozilla/netwerk/base/public/nsIURL.idl index a0a1c812e23..502800e8eb3 100644 --- a/mozilla/netwerk/base/public/nsIURL.idl +++ b/mozilla/netwerk/base/public/nsIURL.idl @@ -112,6 +112,13 @@ interface nsIURL : nsIURI * If a file extension does not exist, the empty string is returned. */ attribute string fileExtension; + + /** + * Returns the query portion (the part after the "?") of the URL + * without unescaping the string. + * If there isn't one, an empty string is returned. + */ + readonly attribute string escapedQuery; }; //////////////////////////////////////////////////////////////////////////////// diff --git a/mozilla/netwerk/base/src/nsStdURL.h b/mozilla/netwerk/base/src/nsStdURL.h index 62c0115a62b..ad0dd74a42b 100644 --- a/mozilla/netwerk/base/src/nsStdURL.h +++ b/mozilla/netwerk/base/src/nsStdURL.h @@ -168,6 +168,12 @@ nsStdURL::GetQuery(char* *o_Query) return GetString(o_Query, mQuery, UNESCAPED); } +inline NS_METHOD +nsStdURL::GetEscapedQuery(char* *o_Query) +{ + return GetString(o_Query, mQuery, ESCAPED); +} + inline NS_METHOD nsStdURL::GetRef(char* *o_Ref) {