Chromium Code Reviews| Index: chrome/browser/devtools/devtools_window.cc |
| diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc |
| index 7875ce06d8b2d1f2fc4ab5d300c0b3b378c5d356..eb680c9344546b5aabf53f79286f16cf36af4609 100644 |
| --- a/chrome/browser/devtools/devtools_window.cc |
| +++ b/chrome/browser/devtools/devtools_window.cc |
| @@ -105,6 +105,30 @@ void SetPreferencesFromJson(Profile* profile, const std::string& json) { |
| } |
| } |
| +std::string ConvertFlagsToQueryParams(const std::string flags) { |
|
pfeldman
2016/10/11 20:51:34
Lets assume it is already of the target form.
dgozman
2016/10/11 21:09:14
Done.
|
| + std::vector<std::string> query; |
| + std::unique_ptr<base::Value> json = base::JSONReader::Read(flags); |
| + if (!json) |
| + return std::string(); |
| + base::DictionaryValue* dict; |
| + json->GetAsDictionary(&dict); |
| + if (!dict) |
| + return std::string(); |
| + base::DictionaryValue result; |
| + for (base::DictionaryValue::Iterator it(*dict); !it.IsAtEnd(); |
| + it.Advance()) { |
| + if (!it.value().IsType(base::Value::TYPE_STRING)) |
| + return std::string(); |
| + std::string value; |
| + it.value().GetAsString(&value); |
| + query.push_back( |
| + base::StringPrintf("%s=%s", it.key().c_str(), value.c_str())); |
| + } |
| + if (query.empty()) |
| + return std::string(); |
| + return base::JoinString(query, "&"); |
| +} |
| + |
| // DevToolsToolboxDelegate ---------------------------------------------------- |
| class DevToolsToolboxDelegate |
| @@ -206,8 +230,9 @@ GURL DecorateFrontendURL(const GURL& base_url) { |
| if (command_line->HasSwitch(switches::kDevToolsFlags)) { |
| std::string flags = command_line->GetSwitchValueASCII( |
| switches::kDevToolsFlags); |
| - flags = net::EscapeQueryParamValue(flags, false); |
| - url_string += "&flags=" + flags; |
| + flags = ConvertFlagsToQueryParams(flags); |
| + if (!flags.empty()) |
| + url_string += "&" + flags; |
| } |
| #if defined(DEBUG_DEVTOOLS) |
| @@ -902,7 +927,7 @@ GURL DevToolsWindow::GetDevToolsURL(Profile* profile, |
| } |
| if (can_dock) |
| url_string += "&can_dock=true"; |
| - return GURL(url_string); |
| + return DevToolsUI::SanitizeFrontendURL(GURL(url_string)); |
| } |
| // static |