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 |