| Index: content/browser/trace_subscriber_stdio.cc
|
| ===================================================================
|
| --- content/browser/trace_subscriber_stdio.cc (revision 0)
|
| +++ content/browser/trace_subscriber_stdio.cc (revision 0)
|
| @@ -0,0 +1,56 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "content/browser/trace_subscriber_stdio.h"
|
| +
|
| +#include "base/logging.h"
|
| +
|
| +TraceSubscriberStdio::TraceSubscriberStdio(const FilePath& path) {
|
| + LOG(INFO) << "Logging performance trace to file: " << path.value();
|
| + m_file = file_util::OpenFile(path, "w+");
|
| + if (IsValid()) {
|
| + // FIXME: the file format expects it to start with "[".
|
| + fputc('[', m_file);
|
| + } else {
|
| + LOG(ERROR) << "Failed to open performance trace file: " << path.value();
|
| + }
|
| +}
|
| +
|
| +TraceSubscriberStdio::~TraceSubscriberStdio() {
|
| + OnEndTracingComplete();
|
| +}
|
| +
|
| +bool TraceSubscriberStdio::IsValid() {
|
| + return m_file && (0 == ferror(m_file));
|
| +}
|
| +
|
| +void TraceSubscriberStdio::OnEndTracingComplete() {
|
| + if (m_file) {
|
| + // FIXME: the file format expects it to end with "]".
|
| + fputc(']', m_file);
|
| + fclose(m_file);
|
| + m_file = 0;
|
| + }
|
| +}
|
| +
|
| +void TraceSubscriberStdio::OnTraceDataCollected(
|
| + const std::string& json_events) {
|
| + if (!IsValid()) {
|
| + return;
|
| + }
|
| +
|
| + // FIXME: "json_events" currently comes with "[" and "]". But the file doesn't
|
| + // expect them. So remove them when writing to the file.
|
| + CHECK_GE(json_events.size(), 2u);
|
| + const char* data = json_events.data() + 1;
|
| + size_t size = json_events.size() - 2;
|
| +
|
| + size_t written = fwrite(data, 1, size, m_file);
|
| + if (written != size) {
|
| + LOG(ERROR) << "Error " << ferror(m_file) << " when writing to trace file";
|
| + fclose(m_file);
|
| + m_file = 0;
|
| + }
|
| + fputc(',', m_file);
|
| +}
|
|
|
| Property changes on: content/browser/trace_subscriber_stdio.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|