Home | History | Annotate | Download | only in test
      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   virtual void Start() OVERRIDE;
     33   virtual void Stop() OVERRIDE;
     34   virtual void Play() OVERRIDE;
     35   virtual void Pause() OVERRIDE;
     36 
     37  protected:
     38   virtual ~TestVideoFrameProvider();
     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_
     64