blob: e76059713c3b1ad584dedce6d8eb852823d3704e [file] [log] [blame]
sergeyu11695ba2016-07-27 18:26:461// Copyright 2016 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 REMOTING_TEST_SCROLL_FRAME_GENERATOR_H_
6#define REMOTING_TEST_SCROLL_FRAME_GENERATOR_H_
7
8#include <memory>
9#include <unordered_map>
10
11#include "base/memory/ref_counted.h"
12#include "base/time/time.h"
sergeyub047307a2016-10-18 17:19:2913#include "remoting/protocol/input_event_timestamps.h"
sergeyu11695ba2016-07-27 18:26:4614#include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h"
15
16namespace remoting {
17namespace test {
18
sergeyub047307a2016-10-18 17:19:2919class ScrollFrameGenerator : public protocol::InputEventTimestampsSource {
sergeyu11695ba2016-07-27 18:26:4620 public:
21 ScrollFrameGenerator();
22
23 std::unique_ptr<webrtc::DesktopFrame> GenerateFrame(
24 webrtc::SharedMemoryFactory* shared_memory_factory);
25
sergeyub047307a2016-10-18 17:19:2926 // InputEventTimestampsSource interface.
27 protocol::InputEventTimestamps TakeLastEventTimestamps() override;
sergeyu11695ba2016-07-27 18:26:4628
29 private:
sergeyub047307a2016-10-18 17:19:2930 ~ScrollFrameGenerator() override;
sergeyu11695ba2016-07-27 18:26:4631
32 std::unique_ptr<webrtc::DesktopFrame> base_frame_;
33 base::TimeTicks start_time_;
34
35 std::unordered_map<int, base::TimeTicks> frame_timestamp_;
36
sergeyu11695ba2016-07-27 18:26:4637 DISALLOW_COPY_AND_ASSIGN(ScrollFrameGenerator);
38};
39
40} // namespace test
41} // namespace remoting
42
43#endif // REMOTING_TEST_SCROLL_FRAME_GENERATOR_H_