blob: 8ea1834614a1020005ea5454589636803a5a330c [file] [log] [blame]
Etienne Pierre-doray4a3b5382025-05-20 19:56:281// Copyright 2025 The Chromium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CONTENT_BROWSER_TRACING_TEST_TRACING_SESSION_H_
6#define CONTENT_BROWSER_TRACING_TEST_TRACING_SESSION_H_
7
8#include <functional>
9
10#include "base/token.h"
11#include "third_party/perfetto/include/perfetto/tracing/tracing.h"
12
13namespace content {
14
15// Fake perfetto::TracingSession.
16class TestTracingSession : public perfetto::TracingSession {
17 public:
18 static constexpr base::Token kClonedSessionId = base::Token(0xAB, 0xCD);
19
20 TestTracingSession();
21 ~TestTracingSession() override;
22
23 void Setup(const perfetto::TraceConfig& config, int fd = -1) override;
24 void Start() override;
25 void StartBlocking() override;
26
27 void SetOnStartCallback(std::function<void()> on_start) override; // nocheck
28
29 void SetOnErrorCallback(
30 std::function<void(perfetto::TracingError)> on_error) // nocheck
31 override;
32
33 void Flush(std::function<void(bool)>, // nocheck
34 uint32_t timeout_ms = 0) override;
35
36 void Stop() override;
37
38 void CloneTrace(CloneTraceArgs args,
39 CloneTraceCallback on_session_cloned) override;
40
41 void StopBlocking() override;
42
43 void SetOnStopCallback(std::function<void()> on_stop) override; // nocheck
44
45 void ChangeTraceConfig(const perfetto::TraceConfig&) override;
46 void ReadTrace(ReadTraceCallback read_callback) override;
47 void GetTraceStats(GetTraceStatsCallback) override;
48 void QueryServiceState(QueryServiceStateCallback) override;
49
50 private:
51 std::function<void()> on_start_callback_; // nocheck
52 std::function<void()> on_stop_callback_; // nocheck
53 std::function<void(perfetto::TracingError)> on_error_callback_; // nocheck
54 bool start_should_fail_ = false;
55 bool should_spuriously_stop = false;
56};
57
58} // namespace content
59
60#endif // CONTENT_BROWSER_TRACING_TEST_TRACING_SESSION_H_