Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / content / test / test_video_frame_provider.h
1 // Copyright 2013 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 CONTENT_TEST_TEST_VIDEO_FRAME_PROVIDER_H_
6 #define CONTENT_TEST_TEST_VIDEO_FRAME_PROVIDER_H_
7
8 #include "base/time/time.h"
9 #include "content/renderer/media/video_frame_provider.h"
10 #include "ui/gfx/size.h"
11
12 namespace base {
13 class MessageLoopProxy;
14 }
15
16 namespace content {
17
18 // A simple implementation of VideoFrameProvider generates raw frames and
19 // passes them to webmediaplayer.
20 // Since non-black pixel values are required in the layout test, e.g.,
21 // media/video-capture-canvas.html, this class should generate frame with
22 // only non-black pixels.
23 class TestVideoFrameProvider : public VideoFrameProvider {
24  public:
25   TestVideoFrameProvider(
26       const gfx::Size& size,
27       const base::TimeDelta& frame_duration,
28       const base::Closure& error_cb,
29       const RepaintCB& repaint_cb);
30
31   // VideoFrameProvider implementation.
32   void Start() override;
33   void Stop() override;
34   void Play() override;
35   void Pause() override;
36
37  protected:
38   ~TestVideoFrameProvider() override;
39
40  private:
41   enum State {
42     kStarted,
43     kPaused,
44     kStopped,
45   };
46
47   void GenerateFrame();
48
49   scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
50   gfx::Size size_;
51   State state_;
52
53   base::TimeDelta current_time_;
54   base::TimeDelta frame_duration_;
55   base::Closure error_cb_;
56   RepaintCB repaint_cb_;
57
58   DISALLOW_COPY_AND_ASSIGN(TestVideoFrameProvider);
59 };
60
61 }  // namespace content
62
63 #endif  // CONTENT_TEST_TEST_VIDEO_FRAME_PROVIDER_H_