blob: 8ea1834614a1020005ea5454589636803a5a330c [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_BROWSER_TRACING_TEST_TRACING_SESSION_H_
#define CONTENT_BROWSER_TRACING_TEST_TRACING_SESSION_H_
#include <functional>
#include "base/token.h"
#include "third_party/perfetto/include/perfetto/tracing/tracing.h"
namespace content {
// Fake perfetto::TracingSession.
class TestTracingSession : public perfetto::TracingSession {
public:
static constexpr base::Token kClonedSessionId = base::Token(0xAB, 0xCD);
TestTracingSession();
~TestTracingSession() override;
void Setup(const perfetto::TraceConfig& config, int fd = -1) override;
void Start() override;
void StartBlocking() override;
void SetOnStartCallback(std::function<void()> on_start) override; // nocheck
void SetOnErrorCallback(
std::function<void(perfetto::TracingError)> on_error) // nocheck
override;
void Flush(std::function<void(bool)>, // nocheck
uint32_t timeout_ms = 0) override;
void Stop() override;
void CloneTrace(CloneTraceArgs args,
CloneTraceCallback on_session_cloned) override;
void StopBlocking() override;
void SetOnStopCallback(std::function<void()> on_stop) override; // nocheck
void ChangeTraceConfig(const perfetto::TraceConfig&) override;
void ReadTrace(ReadTraceCallback read_callback) override;
void GetTraceStats(GetTraceStatsCallback) override;
void QueryServiceState(QueryServiceStateCallback) override;
private:
std::function<void()> on_start_callback_; // nocheck
std::function<void()> on_stop_callback_; // nocheck
std::function<void(perfetto::TracingError)> on_error_callback_; // nocheck
bool start_should_fail_ = false;
bool should_spuriously_stop = false;
};
} // namespace content
#endif // CONTENT_BROWSER_TRACING_TEST_TRACING_SESSION_H_