Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: trunk/src/chrome/browser/feedback/tracing_manager.cc

Issue 89753004: Revert 237280 "Remove TraceController" (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: trunk/src/chrome/browser/feedback/tracing_manager.cc
===================================================================
--- trunk/src/chrome/browser/feedback/tracing_manager.cc (revision 237451)
+++ trunk/src/chrome/browser/feedback/tracing_manager.cc (working copy)
@@ -5,21 +5,20 @@
#include "chrome/browser/feedback/tracing_manager.h"
#include "base/bind.h"
-#include "base/file_util.h"
-#include "base/location.h"
-#include "base/memory/ref_counted_memory.h"
-#include "base/message_loop/message_loop_proxy.h"
#include "base/prefs/pref_service.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/feedback/feedback_util.h"
#include "chrome/common/pref_names.h"
-#include "content/public/browser/tracing_controller.h"
+#include "content/public/browser/trace_controller.h"
namespace {
// Only once trace manager can exist at a time.
TracingManager* g_tracing_manager = NULL;
// Trace IDs start at 1 and increase.
int g_next_trace_id = 1;
+// Name of the file to store the tracing data as.
+const base::FilePath::CharType kTracingFilename[] =
+ FILE_PATH_LITERAL("tracing.json");
}
TracingManager::TracingManager()
@@ -42,10 +41,7 @@
current_trace_id_ = g_next_trace_id;
++g_next_trace_id;
- content::TracingController::GetInstance()->DisableRecording(
- base::FilePath(),
- base::Bind(&TracingManager::OnTraceDataCollected,
- weak_ptr_factory_.GetWeakPtr()));
+ content::TraceController::GetInstance()->EndTracingAsync(this);
return current_trace_id_;
}
@@ -80,6 +76,7 @@
// If the trace is discarded before it is complete, clean up the accumulators.
if (id == current_trace_id_) {
current_trace_id_ = 0;
+ data_ = "";
// If the trace has already been requested, provide an empty string.
if (!trace_callback_.is_null()) {
@@ -90,18 +87,20 @@
}
void TracingManager::StartTracing() {
- content::TracingController::GetInstance()->EnableRecording(
- "", content::TracingController::DEFAULT_OPTIONS,
- content::TracingController::EnableRecordingDoneCallback());
+ content::TraceController::GetInstance()->BeginTracing(
+ this, "-test_*",
+ base::debug::TraceLog::RECORD_CONTINUOUSLY);
}
-void TracingManager::OnTraceDataCollected(const base::FilePath& path) {
+void TracingManager::OnEndTracingComplete() {
if (!current_trace_id_)
return;
+ data_ = std::string("[") + data_ + "]";
+
std::string output_val;
- feedback_util::ZipFile(path, &output_val);
- base::DeleteFile(path, false);
+ feedback_util::ZipString(
+ base::FilePath(kTracingFilename), data_, &output_val);
scoped_refptr<base::RefCountedString> output(
base::RefCountedString::TakeString(&output_val));
@@ -114,6 +113,7 @@
}
current_trace_id_ = 0;
+ data_ = "";
// Tracing has to be restarted asynchronous, so the TracingController can
// clean up.
@@ -123,6 +123,15 @@
weak_ptr_factory_.GetWeakPtr()));
}
+void TracingManager::OnTraceDataCollected(
+ const scoped_refptr<base::RefCountedString>& trace_fragment) {
+ if (current_trace_id_) {
+ if (!data_.empty())
+ data_ += ",";
+ data_ += trace_fragment->data();
+ }
+}
+
// static
scoped_ptr<TracingManager> TracingManager::Create() {
if (g_tracing_manager)
« no previous file with comments | « trunk/src/chrome/browser/feedback/tracing_manager.h ('k') | trunk/src/chrome/common/automation_messages_internal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698