1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "content/test/test_media_stream_renderer_factory.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "content/renderer/media/media_stream_audio_renderer.h"
87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "content/test/test_video_frame_provider.h"
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebMediaStream.h"
10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebMediaStreamRegistry.h"
127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using namespace blink;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const int kVideoCaptureWidth = 352;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const int kVideoCaptureHeight = 288;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const int kVideoCaptureFrameDurationMs = 33;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool IsMockMediaStreamWithVideo(const WebURL& url) {
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if ENABLE_WEBRTC
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  WebMediaStream descriptor(
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebMediaStreamRegistry::lookupMediaStreamDescriptor(url));
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (descriptor.isNull())
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
28bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  WebVector<WebMediaStreamTrack> video_tracks;
29bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  descriptor.videoTracks(video_tracks);
30bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  return video_tracks.size() > 0;
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#else
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return false;
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace content {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TestMediaStreamRendererFactory::TestMediaStreamRendererFactory() {}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TestMediaStreamRendererFactory::~TestMediaStreamRendererFactory() {}
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)scoped_refptr<VideoFrameProvider>
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TestMediaStreamRendererFactory::GetVideoFrameProvider(
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const GURL& url,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const base::Closure& error_cb,
487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    const VideoFrameProvider::RepaintCB& repaint_cb) {
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!IsMockMediaStreamWithVideo(url))
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return NULL;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return new TestVideoFrameProvider(
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      gfx::Size(kVideoCaptureWidth, kVideoCaptureHeight),
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base::TimeDelta::FromMilliseconds(kVideoCaptureFrameDurationMs),
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      error_cb,
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      repaint_cb);
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)scoped_refptr<MediaStreamAudioRenderer>
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TestMediaStreamRendererFactory::GetAudioRenderer(
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    const GURL& url, int render_view_id, int render_frame_id) {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace content
66