Commit b3c8a155 authored by jbates@chromium.org's avatar jbates@chromium.org

Fix trace_event code to accept double-quote and backslash characters in string values

BUG=95602
TEST=base_unittests

Review URL: http://codereview.chromium.org/7840017

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99882 0039d316-1c4b-4281-b951-d872f2087c98
parent 0548c535
...@@ -87,10 +87,13 @@ void TraceValue::AppendAsJSON(std::string* out) const { ...@@ -87,10 +87,13 @@ void TraceValue::AppendAsJSON(std::string* out) const {
*out += "\""; *out += "\"";
start_pos = out->size(); start_pos = out->size();
*out += as_string() ? as_string() : "NULL"; *out += as_string() ? as_string() : "NULL";
// replace " character with ' // insert backslash before special characters for proper json format.
while ((start_pos = out->find_first_of('\"', start_pos)) != while ((start_pos = out->find_first_of("\\\"", start_pos)) !=
std::string::npos) std::string::npos) {
(*out)[start_pos] = '\''; out->insert(start_pos, 1, '\\');
// skip inserted escape character and following character.
start_pos += 2;
}
*out += "\""; *out += "\"";
break; break;
default: default:
......
...@@ -206,8 +206,8 @@ void TraceWithAllMacroVariants(WaitableEvent* task_complete_event) { ...@@ -206,8 +206,8 @@ void TraceWithAllMacroVariants(WaitableEvent* task_complete_event) {
TRACE_EVENT0("all", "TRACE_EVENT0 call"); TRACE_EVENT0("all", "TRACE_EVENT0 call");
TRACE_EVENT1("all", "TRACE_EVENT1 call", "name1", "value1"); TRACE_EVENT1("all", "TRACE_EVENT1 call", "name1", "value1");
TRACE_EVENT2("all", "TRACE_EVENT2 call", TRACE_EVENT2("all", "TRACE_EVENT2 call",
"name1", "value1", "name1", "\"value1\"",
"name2", "value2"); "name2", "value\\2");
TRACE_EVENT_INSTANT0("all", "TRACE_EVENT_INSTANT0 call"); TRACE_EVENT_INSTANT0("all", "TRACE_EVENT_INSTANT0 call");
TRACE_EVENT_INSTANT1("all", "TRACE_EVENT_INSTANT1 call", "name1", "value1"); TRACE_EVENT_INSTANT1("all", "TRACE_EVENT_INSTANT1 call", "name1", "value1");
...@@ -269,9 +269,9 @@ void ValidateAllTraceMacrosCreatedData(const ListValue& trace_parsed, ...@@ -269,9 +269,9 @@ void ValidateAllTraceMacrosCreatedData(const ListValue& trace_parsed,
EXPECT_FIND_("TRACE_EVENT1 call"); EXPECT_FIND_("TRACE_EVENT1 call");
EXPECT_FIND_("TRACE_EVENT2 call"); EXPECT_FIND_("TRACE_EVENT2 call");
EXPECT_SUB_FIND_("name1"); EXPECT_SUB_FIND_("name1");
EXPECT_SUB_FIND_("value1"); EXPECT_SUB_FIND_("\"value1\"");
EXPECT_SUB_FIND_("name2"); EXPECT_SUB_FIND_("name2");
EXPECT_SUB_FIND_("value2"); EXPECT_SUB_FIND_("value\\2");
EXPECT_FIND_("TRACE_EVENT_INSTANT0 call"); EXPECT_FIND_("TRACE_EVENT_INSTANT0 call");
EXPECT_FIND_("TRACE_EVENT_INSTANT1 call"); EXPECT_FIND_("TRACE_EVENT_INSTANT1 call");
EXPECT_FIND_("TRACE_EVENT_INSTANT2 call"); EXPECT_FIND_("TRACE_EVENT_INSTANT2 call");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment