1 // Copyright 2019 The Chromium Authors. All rights reserved.
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 CC_TEST_FAKE_COMPOSITOR_FRAME_REPORTING_CONTROLLER_H_
6 #define CC_TEST_FAKE_COMPOSITOR_FRAME_REPORTING_CONTROLLER_H_
7 
8 #include <vector>
9 
10 #include "cc/metrics/compositor_frame_reporting_controller.h"
11 
12 namespace viz {
13 struct FrameTimingDetails;
14 }
15 
16 namespace cc {
17 // This class is to be used for testing, during cases where the DCHECKs won't
18 // hold due to testing only a portion of the compositor pipeline. This class
19 // will automatically generate the preceding stages that are missing from the
20 // pipeline.
21 class FakeCompositorFrameReportingController
22     : public CompositorFrameReportingController {
23  public:
24   FakeCompositorFrameReportingController();
25 
26   FakeCompositorFrameReportingController(
27       const FakeCompositorFrameReportingController& controller) = delete;
28   FakeCompositorFrameReportingController& operator=(
29       const FakeCompositorFrameReportingController& controller) = delete;
30 
31   void WillBeginMainFrame(const viz::BeginFrameArgs& args) override;
32   void BeginMainFrameAborted(const viz::BeginFrameId& id) override;
33   void WillCommit() override;
34   void DidCommit() override;
35   void WillActivate() override;
36   void DidActivate() override;
37   void DidSubmitCompositorFrame(
38       uint32_t frame_token,
39       const viz::BeginFrameId& current_frame_id,
40       const viz::BeginFrameId& last_activated_frame_id,
41       EventMetricsSet events_metrics) override;
42   void DidPresentCompositorFrame(
43       uint32_t frame_token,
44       const viz::FrameTimingDetails& details) override;
45 };
46 }  // namespace cc
47 
48 #endif  // CC_TEST_FAKE_COMPOSITOR_FRAME_REPORTING_CONTROLLER_H_
49