1*6777b538SAndroid Build Coastguard Worker // Copyright 2021 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef BASE_TEST_TRACE_TEST_UTILS_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_TEST_TRACE_TEST_UTILS_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include "base/memory/raw_ptr.h" 9*6777b538SAndroid Build Coastguard Worker #include "base/task/thread_pool.h" 10*6777b538SAndroid Build Coastguard Worker #include "base/test/task_environment.h" 11*6777b538SAndroid Build Coastguard Worker #include "base/trace_event/trace_log.h" 12*6777b538SAndroid Build Coastguard Worker #include "third_party/perfetto/protos/perfetto/config/trace_config.gen.h" 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker namespace base { 15*6777b538SAndroid Build Coastguard Worker namespace tracing { 16*6777b538SAndroid Build Coastguard Worker class PerfettoPlatform; 17*6777b538SAndroid Build Coastguard Worker } 18*6777b538SAndroid Build Coastguard Worker 19*6777b538SAndroid Build Coastguard Worker namespace test { 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Worker // A scoped class that sets up and tears down tracing support for unit tests. 22*6777b538SAndroid Build Coastguard Worker // Note that only in-process tracing is supported by this harness. See 23*6777b538SAndroid Build Coastguard Worker // //services/tracing for recording traces in multiprocess configurations. 24*6777b538SAndroid Build Coastguard Worker class TracingEnvironment { 25*6777b538SAndroid Build Coastguard Worker public: 26*6777b538SAndroid Build Coastguard Worker // Construct a tracing environment using the default Perfetto tracing 27*6777b538SAndroid Build Coastguard Worker // platform. 28*6777b538SAndroid Build Coastguard Worker TracingEnvironment(); 29*6777b538SAndroid Build Coastguard Worker 30*6777b538SAndroid Build Coastguard Worker // Constructs a tracing environment with the given task runner and Perfetto 31*6777b538SAndroid Build Coastguard Worker // tracing platform. 32*6777b538SAndroid Build Coastguard Worker explicit TracingEnvironment(TaskEnvironment&, 33*6777b538SAndroid Build Coastguard Worker scoped_refptr<SequencedTaskRunner> = 34*6777b538SAndroid Build Coastguard Worker ThreadPool::CreateSequencedTaskRunner({}), 35*6777b538SAndroid Build Coastguard Worker base::tracing::PerfettoPlatform* = nullptr); 36*6777b538SAndroid Build Coastguard Worker ~TracingEnvironment(); 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker // Builds a default Perfetto trace config with track events enabled. 39*6777b538SAndroid Build Coastguard Worker static perfetto::protos::gen::TraceConfig GetDefaultTraceConfig(); 40*6777b538SAndroid Build Coastguard Worker 41*6777b538SAndroid Build Coastguard Worker private: 42*6777b538SAndroid Build Coastguard Worker raw_ptr<TaskEnvironment> task_environment_ = nullptr; 43*6777b538SAndroid Build Coastguard Worker }; 44*6777b538SAndroid Build Coastguard Worker 45*6777b538SAndroid Build Coastguard Worker } // namespace test 46*6777b538SAndroid Build Coastguard Worker } // namespace base 47*6777b538SAndroid Build Coastguard Worker 48*6777b538SAndroid Build Coastguard Worker #endif // BASE_TEST_TRACE_TEST_UTILS_H_ 49