summaryrefslogtreecommitdiffstats
path: root/content/browser/tracing/tracing_ui.cc
diff options
context:
space:
mode:
authornick@chromium.org <nick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-18 09:29:01 +0000
committernick@chromium.org <nick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-18 09:29:01 +0000
commit9e5952ecac6a0d63fafcb6ed0bbb89a843214408 (patch)
tree11b281c4350ced02ff1bbb6ffec559d51b3a5d91 /content/browser/tracing/tracing_ui.cc
parent95b60a1ee9946e7c37ef1fbeb519d66943c5421a (diff)
downloadchromium_src-9e5952ecac6a0d63fafcb6ed0bbb89a843214408.zip
chromium_src-9e5952ecac6a0d63fafcb6ed0bbb89a843214408.tar.gz
chromium_src-9e5952ecac6a0d63fafcb6ed0bbb89a843214408.tar.bz2
tracing_ui.cc: fix single-quote escaping issue that caused
many tracing sources to be lost. R=nduca BUG=237481 TEST=collect about:tracing with "tasks" category enabled. Make sure the browser thread exists. Review URL: https://chromiumcodereview.appspot.com/14943011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200984 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/tracing/tracing_ui.cc')
-rw-r--r--content/browser/tracing/tracing_ui.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/content/browser/tracing/tracing_ui.cc b/content/browser/tracing/tracing_ui.cc
index 5b7e359..87f2f93 100644
--- a/content/browser/tracing/tracing_ui.cc
+++ b/content/browser/tracing/tracing_ui.cc
@@ -11,6 +11,7 @@
#include "base/command_line.h"
#include "base/debug/trace_event.h"
#include "base/file_util.h"
+#include "base/json/string_escape.h"
#include "base/memory/scoped_ptr.h"
#include "base/string_util.h"
#include "base/stringprintf.h"
@@ -487,16 +488,15 @@ void TracingMessageHandler::OnTraceDataCollected(
const scoped_refptr<base::RefCountedString>& trace_fragment) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- std::string javascript("window.traceData += '");
-
- std::string escaped_data;
- ReplaceChars(trace_fragment->data(), "\\", "\\\\", &escaped_data);
- javascript += escaped_data;
+ std::string javascript;
+ javascript.reserve(trace_fragment->size() * 2);
+ javascript.append("window.traceData += \"");
+ base::JsonDoubleQuote(trace_fragment->data(), false, &javascript);
// Intentionally append a , to the traceData. This technically causes all
// traceData that we pass back to JS to end with a comma, but that is actually
// something the JS side strips away anyway
- javascript += ",';";
+ javascript.append(",\";");
web_ui()->GetWebContents()->GetRenderViewHost()->
ExecuteJavascriptInWebFrame(string16(), UTF8ToUTF16(javascript));