blob: 8d59d1ca6cb5dc2b3c2e54510d99cd582a155c18 [file] [log] [blame]
// Copyright 2017 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.
#ifndef CONTENT_BROWSER_TRACING_CAST_TRACING_AGENT_H_
#define CONTENT_BROWSER_TRACING_CAST_TRACING_AGENT_H_
#include <memory>
#include <string>
#include "chromecast/tracing/system_tracer.h"
#include "services/tracing/public/cpp/base_agent.h"
#include "services/tracing/public/mojom/tracing.mojom.h"
namespace chromecast {
class SystemTracer;
}
namespace content {
class CastSystemTracingSession;
// TODO(crbug.com/839086): Remove once we have replaced the legacy tracing
// service with perfetto.
class CastTracingAgent : public tracing::BaseAgent {
public:
CastTracingAgent();
~CastTracingAgent() override;
private:
// tracing::BaseAgent implementation.
void GetCategories(std::set<std::string>* category_set) override;
// tracing::mojom::Agent. Called by Mojo internals on the UI thread.
void StartTracing(const std::string& config,
base::TimeTicks coordinator_time) override;
void StopAndFlush(tracing::mojom::RecorderPtr recorder) override;
void StartTracingCallbackProxy(bool success);
void HandleTraceData(chromecast::SystemTracer::Status status,
std::string trace_data);
tracing::mojom::RecorderPtr recorder_;
// Task runner for collecting traces in a worker thread.
scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
std::unique_ptr<CastSystemTracingSession> session_;
DISALLOW_COPY_AND_ASSIGN(CastTracingAgent);
};
} // namespace content
#endif // CONTENT_BROWSER_TRACING_CAST_TRACING_AGENT_H_