1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // Copyright 2021 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 ASH_HUD_DISPLAY_ASH_TRACING_HANDLER_H_
- #define ASH_HUD_DISPLAY_ASH_TRACING_HANDLER_H_
- #include <memory>
- #include "ash/ash_export.h"
- #include "base/files/platform_file.h"
- #include "base/memory/weak_ptr.h"
- #include "base/sequence_checker.h"
- #include "base/trace_event/trace_config.h"
- namespace perfetto {
- class TracingSession;
- }
- namespace ash {
- namespace hud_display {
- class AshTracingRequest;
- // Only one instance of this object can exist at a time.
- class ASH_EXPORT AshTracingHandler {
- public:
- AshTracingHandler();
- AshTracingHandler(const AshTracingHandler&) = delete;
- AshTracingHandler& operator=(const AshTracingHandler&) = delete;
- ~AshTracingHandler();
- // Initiates tracing start. Observer will be notified with the result.
- void Start(AshTracingRequest* request);
- // Initiates tracing stop. Observer will be notified with the result.
- void Stop();
- // Returns true if tracing was started.
- bool IsStarted() const;
- // This allows to use fake Perfetto sessions for testing.
- static void SetPerfettoTracingSessionCreatorForTesting(
- std::unique_ptr<perfetto::TracingSession> (*creator)(void));
- static void ResetPerfettoTracingSessionCreatorForTesting();
- private:
- void OnTracingStarted();
- void OnTracingFinished();
- AshTracingRequest* request_ = nullptr;
- std::unique_ptr<perfetto::TracingSession> tracing_session_;
- SEQUENCE_CHECKER(my_sequence_checker_);
- base::WeakPtrFactory<AshTracingHandler> weak_factory_{this};
- };
- } // namespace hud_display
- } // namespace ash
- #endif // ASH_HUD_DISPLAY_ASH_TRACING_HANDLER_H_
|