summaryrefslogtreecommitdiffstats
path: root/content/shell/renderer/layout_test/test_video_frame_provider.h
diff options
context:
space:
mode:
Diffstat (limited to 'content/shell/renderer/layout_test/test_video_frame_provider.h')
-rw-r--r--content/shell/renderer/layout_test/test_video_frame_provider.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/content/shell/renderer/layout_test/test_video_frame_provider.h b/content/shell/renderer/layout_test/test_video_frame_provider.h
new file mode 100644
index 0000000..00ee3c8
--- /dev/null
+++ b/content/shell/renderer/layout_test/test_video_frame_provider.h
@@ -0,0 +1,63 @@
+// Copyright 2013 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 CONTENT_SHELL_RENDERER_LAYOUT_TEST_TEST_VIDEO_FRAME_PROVIDER_H_
+#define CONTENT_SHELL_RENDERER_LAYOUT_TEST_TEST_VIDEO_FRAME_PROVIDER_H_
+
+#include "base/time/time.h"
+#include "content/public/renderer/video_frame_provider.h"
+#include "ui/gfx/geometry/size.h"
+
+namespace base {
+class MessageLoopProxy;
+}
+
+namespace content {
+
+// A simple implementation of VideoFrameProvider generates raw frames and
+// passes them to webmediaplayer.
+// Since non-black pixel values are required in the layout test, e.g.,
+// media/video-capture-canvas.html, this class should generate frame with
+// only non-black pixels.
+class TestVideoFrameProvider : public VideoFrameProvider {
+ public:
+ TestVideoFrameProvider(
+ const gfx::Size& size,
+ const base::TimeDelta& frame_duration,
+ const base::Closure& error_cb,
+ const RepaintCB& repaint_cb);
+
+ // VideoFrameProvider implementation.
+ void Start() override;
+ void Stop() override;
+ void Play() override;
+ void Pause() override;
+
+ protected:
+ ~TestVideoFrameProvider() override;
+
+ private:
+ enum State {
+ kStarted,
+ kPaused,
+ kStopped,
+ };
+
+ void GenerateFrame();
+
+ scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
+ gfx::Size size_;
+ State state_;
+
+ base::TimeDelta current_time_;
+ base::TimeDelta frame_duration_;
+ base::Closure error_cb_;
+ RepaintCB repaint_cb_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestVideoFrameProvider);
+};
+
+} // namespace content
+
+#endif // CONTENT_SHELL_RENDERER_LAYOUT_TEST_TEST_VIDEO_FRAME_PROVIDER_H_