| Index: content/browser/tracing/tracing_controller_impl.cc
|
| diff --git a/content/browser/tracing/tracing_controller_impl.cc b/content/browser/tracing/tracing_controller_impl.cc
|
| index 34e384a343703101f1d7d82e65b3fcd33619d7b1..04d9fa4716d7e6564a6066cd6c05a5d96b5561ed 100644
|
| --- a/content/browser/tracing/tracing_controller_impl.cc
|
| +++ b/content/browser/tracing/tracing_controller_impl.cc
|
| @@ -35,127 +35,6 @@ namespace {
|
| base::LazyInstance<TracingControllerImpl>::Leaky g_controller =
|
| LAZY_INSTANCE_INITIALIZER;
|
|
|
| -class FileTraceDataSink : public TracingController::TraceDataSink {
|
| - public:
|
| - explicit FileTraceDataSink(const base::FilePath& trace_file_path,
|
| - const base::Closure& callback)
|
| - : file_path_(trace_file_path),
|
| - completion_callback_(callback),
|
| - file_(NULL) {}
|
| -
|
| - void AddTraceChunk(const std::string& chunk) override {
|
| - std::string tmp = chunk;
|
| - scoped_refptr<base::RefCountedString> chunk_ptr =
|
| - base::RefCountedString::TakeString(&tmp);
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE,
|
| - FROM_HERE,
|
| - base::Bind(
|
| - &FileTraceDataSink::AddTraceChunkOnFileThread, this, chunk_ptr));
|
| - }
|
| - void SetSystemTrace(const std::string& data) override {
|
| - system_trace_ = data;
|
| - }
|
| - void Close() override {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE,
|
| - FROM_HERE,
|
| - base::Bind(&FileTraceDataSink::CloseOnFileThread, this));
|
| - }
|
| -
|
| - private:
|
| - ~FileTraceDataSink() override { DCHECK(file_ == NULL); }
|
| -
|
| - void AddTraceChunkOnFileThread(
|
| - const scoped_refptr<base::RefCountedString> chunk) {
|
| - if (file_ != NULL)
|
| - fputc(',', file_);
|
| - else if (!OpenFileIfNeededOnFileThread())
|
| - return;
|
| - ignore_result(fwrite(chunk->data().c_str(), strlen(chunk->data().c_str()),
|
| - 1, file_));
|
| - }
|
| -
|
| - bool OpenFileIfNeededOnFileThread() {
|
| - if (file_ != NULL)
|
| - return true;
|
| - file_ = base::OpenFile(file_path_, "w");
|
| - if (file_ == NULL) {
|
| - LOG(ERROR) << "Failed to open " << file_path_.value();
|
| - return false;
|
| - }
|
| - const char preamble[] = "{\"traceEvents\": [";
|
| - ignore_result(fwrite(preamble, strlen(preamble), 1, file_));
|
| - return true;
|
| - }
|
| -
|
| - void CloseOnFileThread() {
|
| - if (OpenFileIfNeededOnFileThread()) {
|
| - fputc(']', file_);
|
| - if (!system_trace_.empty()) {
|
| - const char systemTraceEvents[] = ",\"systemTraceEvents\": ";
|
| - ignore_result(fwrite(systemTraceEvents, strlen(systemTraceEvents),
|
| - 1, file_));
|
| - ignore_result(fwrite(system_trace_.c_str(),
|
| - strlen(system_trace_.c_str()), 1, file_));
|
| - }
|
| - fputc('}', file_);
|
| - base::CloseFile(file_);
|
| - file_ = NULL;
|
| - }
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI,
|
| - FROM_HERE,
|
| - base::Bind(&FileTraceDataSink::FinalizeOnUIThread, this));
|
| - }
|
| -
|
| - void FinalizeOnUIThread() { completion_callback_.Run(); }
|
| -
|
| - base::FilePath file_path_;
|
| - base::Closure completion_callback_;
|
| - FILE* file_;
|
| - std::string system_trace_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(FileTraceDataSink);
|
| -};
|
| -
|
| -class StringTraceDataSink : public TracingController::TraceDataSink {
|
| - public:
|
| - typedef base::Callback<void(base::RefCountedString*)> CompletionCallback;
|
| -
|
| - explicit StringTraceDataSink(CompletionCallback callback)
|
| - : completion_callback_(callback) {}
|
| -
|
| - // TracingController::TraceDataSink implementation
|
| - void AddTraceChunk(const std::string& chunk) override {
|
| - if (!trace_.empty())
|
| - trace_ += ",";
|
| - trace_ += chunk;
|
| - }
|
| - void SetSystemTrace(const std::string& data) override {
|
| - system_trace_ = data;
|
| - }
|
| - void Close() override {
|
| - std::string result = "{\"traceEvents\":[" + trace_ + "]";
|
| - if (!system_trace_.empty())
|
| - result += ",\"systemTraceEvents\": " + system_trace_;
|
| - result += "}";
|
| -
|
| - scoped_refptr<base::RefCountedString> str =
|
| - base::RefCountedString::TakeString(&result);
|
| - completion_callback_.Run(str.get());
|
| - }
|
| -
|
| - private:
|
| - ~StringTraceDataSink() override {}
|
| -
|
| - std::string trace_;
|
| - std::string system_trace_;
|
| - CompletionCallback completion_callback_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(StringTraceDataSink);
|
| -};
|
| -
|
| } // namespace
|
|
|
| TracingController* TracingController::GetInstance() {
|
| @@ -427,18 +306,6 @@ bool TracingControllerImpl::DisableMonitoring(
|
| return true;
|
| }
|
|
|
| -scoped_refptr<TracingController::TraceDataSink>
|
| -TracingController::CreateStringSink(
|
| - const base::Callback<void(base::RefCountedString*)>& callback) {
|
| - return new StringTraceDataSink(callback);
|
| -}
|
| -
|
| -scoped_refptr<TracingController::TraceDataSink>
|
| -TracingController::CreateFileSink(const base::FilePath& file_path,
|
| - const base::Closure& callback) {
|
| - return new FileTraceDataSink(file_path, callback);
|
| -}
|
| -
|
| void TracingControllerImpl::OnDisableMonitoringDone(
|
| const DisableMonitoringDoneCallback& callback) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
|
|