Index: content/browser/tracing/tracing_ui.cc |
diff --git a/content/browser/tracing/tracing_ui.cc b/content/browser/tracing/tracing_ui.cc |
index 5b7e359651ddce5ca2c4108664168dc3383380e9..13f553db51d34e62eaf40a34c382b28208fa0c18 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" |
@@ -88,7 +89,8 @@ class TracingMessageHandler |
void OnGetKnownCategories(const base::ListValue* list); |
// Callbacks. |
- void LoadTraceFileComplete(string16* file_contents); |
+ void LoadTraceFileComplete(string16* file_contents, |
+ const base::FilePath &path); |
void SaveTraceFileComplete(); |
private: |
@@ -120,9 +122,10 @@ class TaskProxy : public base::RefCountedThreadSafe<TaskProxy> { |
public: |
explicit TaskProxy(const base::WeakPtr<TracingMessageHandler>& handler) |
: handler_(handler) {} |
- void LoadTraceFileCompleteProxy(string16* file_contents) { |
+ void LoadTraceFileCompleteProxy(string16* file_contents, |
+ const base::FilePath& path) { |
if (handler_) |
- handler_->LoadTraceFileComplete(file_contents); |
+ handler_->LoadTraceFileComplete(file_contents, path); |
delete file_contents; |
} |
@@ -257,7 +260,8 @@ void ReadTraceFileCallback(TaskProxy* proxy, const base::FilePath& path) { |
BrowserThread::PostTask( |
BrowserThread::UI, FROM_HERE, |
base::Bind(&TaskProxy::LoadTraceFileCompleteProxy, proxy, |
- contents16.release())); |
+ contents16.release(), |
+ path)); |
} |
// A callback used for asynchronously writing a file from a string. Calls the |
@@ -324,7 +328,8 @@ void TracingMessageHandler::OnLoadTraceFile(const base::ListValue* list) { |
NULL); |
} |
-void TracingMessageHandler::LoadTraceFileComplete(string16* contents) { |
+void TracingMessageHandler::LoadTraceFileComplete(string16* contents, |
+ const base::FilePath& path) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
// We need to pass contents to tracingController.onLoadTraceFileComplete, but |
@@ -344,8 +349,12 @@ void TracingMessageHandler::LoadTraceFileComplete(string16* contents) { |
javascript += contents->substr(i, kMaxSize) + suffix; |
rvh->ExecuteJavascriptInWebFrame(string16(), javascript); |
} |
+ |
+ // The CallJavascriptFunction is not used because we need to pass |
+ // the first param |window.traceData| through as an un-quoted string. |
rvh->ExecuteJavascriptInWebFrame(string16(), UTF8ToUTF16( |
- "tracingController.onLoadTraceFileComplete(window.traceData);" |
+ "tracingController.onLoadTraceFileComplete(window.traceData," + |
+ base::GetDoubleQuotedJson(path.value()) + ");" + |
nduca
2013/05/17 23:15:12
do you have to call path.reserve(path.lenght*2) li
|
"delete window.traceData;")); |
} |