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)
{