summaryrefslogtreecommitdiffstats
path: root/cc/test/fake_external_begin_frame_source.h
blob: 99dbf56ef1999a3686ce986fae5751c6e6c9ddf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Copyright 2014 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 CC_TEST_FAKE_EXTERNAL_BEGIN_FRAME_SOURCE_H_
#define CC_TEST_FAKE_EXTERNAL_BEGIN_FRAME_SOURCE_H_

#include "base/memory/weak_ptr.h"
#include "cc/scheduler/begin_frame_source.h"

namespace cc {

class FakeExternalBeginFrameSource
    : public BeginFrameSourceBase,
      public NON_EXPORTED_BASE(base::NonThreadSafe) {
 public:
  explicit FakeExternalBeginFrameSource(double refresh_rate);
  ~FakeExternalBeginFrameSource() override;

  bool is_ready() const { return is_ready_; }

  // BeginFrameSource implementation.
  void SetClientReady() override;

  // BeginFrameSourceBase overrides.
  void OnNeedsBeginFramesChanged(bool needs_begin_frames) override;

  void TestOnBeginFrame();
  void PostTestOnBeginFrame();

 private:
  double milliseconds_per_frame_;
  bool is_ready_;
  base::CancelableClosure begin_frame_task_;
  base::WeakPtrFactory<FakeExternalBeginFrameSource> weak_ptr_factory_;
};

}  // namespace cc

#endif  // CC_TEST_FAKE_EXTERNAL_BEGIN_FRAME_SOURCE_H_