Index: chrome/common/net/url_util.cc |
diff --git a/chrome/common/net/url_util.cc b/chrome/common/net/url_util.cc |
index c72c2087abf9ae2f1e65821e146f2fe920ce8da1..9d58317d09fd12dad126ad84bedd7ede083f4c75 100644 |
--- a/chrome/common/net/url_util.cc |
+++ b/chrome/common/net/url_util.cc |
@@ -47,7 +47,6 @@ GURL AppendQueryParameter(const GURL& url, |
return url.ReplaceComponents(replacements); |
} |
- |
GURL AppendOrReplaceQueryParameter(const GURL& url, |
const std::string& name, |
const std::string& value) { |
@@ -91,4 +90,30 @@ GURL AppendOrReplaceQueryParameter(const GURL& url, |
return url.ReplaceComponents(replacements); |
} |
+bool GetValueForKeyInQuery(const GURL& url, |
+ const std::string& search_key, |
+ std::string* out_value) { |
+ url_parse::Component query = url.parsed_for_possibly_invalid_spec().query; |
+ url_parse::Component key, value; |
+ while (url_parse::ExtractQueryKeyValue( |
+ url.spec().c_str(), &query, &key, &value)) { |
+ if (key.is_nonempty()) { |
+ std::string key_string = url.spec().substr(key.begin, key.len); |
+ if (key_string == search_key) { |
+ if (value.is_nonempty()) { |
+ *out_value = net::UnescapeURLComponent( |
+ url.spec().substr(value.begin, value.len), |
+ net::UnescapeRule::SPACES | |
+ net::UnescapeRule::URL_SPECIAL_CHARS | |
+ net::UnescapeRule::REPLACE_PLUS_WITH_SPACE); |
+ } else { |
+ *out_value = ""; |
+ } |
+ return true; |
+ } |
+ } |
+ } |
+ return false; |
+} |
+ |
} // namespace chrome_common_net |