summaryrefslogtreecommitdiffstats
path: root/webkit/mocks
diff options
context:
space:
mode:
authorwjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-04 18:25:26 +0000
committerwjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-04 18:25:26 +0000
commit321d9eb29cf4cfefe4b01d7c806f595d7ed32089 (patch)
tree394d041cf0b01534c7837033d84c09a184abcf85 /webkit/mocks
parent89dbe85d1f682a374b81ca1963565b5e5f46c3d4 (diff)
downloadchromium_src-321d9eb29cf4cfefe4b01d7c806f595d7ed32089.zip
chromium_src-321d9eb29cf4cfefe4b01d7c806f595d7ed32089.tar.gz
chromium_src-321d9eb29cf4cfefe4b01d7c806f595d7ed32089.tar.bz2
Enable media stream layout test with content_shell.
When using content_shell to run media stream layout test, it's needed to use override createMediaPlayer because the media stream is generated by TestMediaStreamClient, not MediaStreamImpl which is used by RenderViewImpl::createMediaPlayer. This patch is needed by patch in https://bugs.webkit.org/show_bug.cgi?id=113633, and they work together to enable media stream layout test in content_shell. BUG=222906 Review URL: https://codereview.chromium.org/13159005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@192373 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/mocks')
-rw-r--r--webkit/mocks/DEPS3
-rw-r--r--webkit/mocks/test_media_stream_client.cc101
-rw-r--r--webkit/mocks/test_media_stream_client.h53
3 files changed, 157 insertions, 0 deletions
diff --git a/webkit/mocks/DEPS b/webkit/mocks/DEPS
new file mode 100644
index 0000000..c3a5b96
--- /dev/null
+++ b/webkit/mocks/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+ "+media",
+]
diff --git a/webkit/mocks/test_media_stream_client.cc b/webkit/mocks/test_media_stream_client.cc
new file mode 100644
index 0000000..c3e8b91
--- /dev/null
+++ b/webkit/mocks/test_media_stream_client.cc
@@ -0,0 +1,101 @@
+// Copyright (c) 2012 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.
+
+#include "webkit/mocks/test_media_stream_client.h"
+
+#include "googleurl/src/gurl.h"
+#include "media/base/media_log.h"
+#include "media/base/pipeline.h"
+#include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStream.h"
+#include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamTrack.h"
+#include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaStreamRegistry.h"
+#include "webkit/media/media_stream_audio_renderer.h"
+#include "webkit/media/simple_video_frame_provider.h"
+#include "webkit/media/webmediaplayer_impl.h"
+#include "webkit/media/webmediaplayer_ms.h"
+#include "webkit/media/webmediaplayer_params.h"
+
+using namespace WebKit;
+
+namespace {
+
+static const int kVideoCaptureWidth = 352;
+static const int kVideoCaptureHeight = 288;
+static const int kVideoCaptureFrameDurationMs = 33;
+
+bool IsMockMediaStreamWithVideo(const WebURL& url) {
+#if ENABLE_WEBRTC
+ WebMediaStream descriptor(
+ WebMediaStreamRegistry::lookupMediaStreamDescriptor(url));
+ if (descriptor.isNull())
+ return false;
+ WebVector<WebMediaStreamTrack> videoSources;
+ descriptor.videoSources(videoSources);
+ return videoSources.size() > 0;
+#else
+ return false;
+#endif
+}
+
+} // namespace
+
+namespace webkit_glue {
+
+WebKit::WebMediaPlayer* CreateMediaPlayer(
+ WebFrame* frame,
+ const WebURL& url,
+ WebMediaPlayerClient* client,
+ webkit_media::MediaStreamClient* media_stream_client) {
+ if (media_stream_client && media_stream_client->IsMediaStream(url)) {
+ return new webkit_media::WebMediaPlayerMS(
+ frame,
+ client,
+ base::WeakPtr<webkit_media::WebMediaPlayerDelegate>(),
+ media_stream_client,
+ new media::MediaLog());
+ }
+
+#if defined(OS_ANDROID)
+ return NULL;
+#else
+ webkit_media::WebMediaPlayerParams params(
+ NULL, NULL, new media::MediaLog());
+ return new webkit_media::WebMediaPlayerImpl(
+ frame,
+ client,
+ base::WeakPtr<webkit_media::WebMediaPlayerDelegate>(),
+ params);
+#endif
+}
+
+TestMediaStreamClient::TestMediaStreamClient() {}
+
+TestMediaStreamClient::~TestMediaStreamClient() {}
+
+bool TestMediaStreamClient::IsMediaStream(const GURL& url) {
+ return IsMockMediaStreamWithVideo(url);
+}
+
+scoped_refptr<webkit_media::VideoFrameProvider>
+TestMediaStreamClient::GetVideoFrameProvider(
+ const GURL& url,
+ const base::Closure& error_cb,
+ const webkit_media::VideoFrameProvider::RepaintCB& repaint_cb) {
+ if (!IsMockMediaStreamWithVideo(url))
+ return NULL;
+
+ return new webkit_media::SimpleVideoFrameProvider(
+ gfx::Size(kVideoCaptureWidth, kVideoCaptureHeight),
+ base::TimeDelta::FromMilliseconds(kVideoCaptureFrameDurationMs),
+ error_cb,
+ repaint_cb);
+}
+
+scoped_refptr<webkit_media::MediaStreamAudioRenderer>
+TestMediaStreamClient::GetAudioRenderer(const GURL& url) {
+ return NULL;
+}
+
+} // namespace webkit_glue
diff --git a/webkit/mocks/test_media_stream_client.h b/webkit/mocks/test_media_stream_client.h
new file mode 100644
index 0000000..0f5c65a
--- /dev/null
+++ b/webkit/mocks/test_media_stream_client.h
@@ -0,0 +1,53 @@
+// Copyright (c) 2012 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.
+
+// TestMediaStreamClient is an implementation of webkit_media::MediaStreamClient
+// and used with WebKit::WebUserMediaClientMock to provide corresponding video
+// decoder to media pipeline.
+
+#ifndef WEBKIT_MOCKS_TEST_MEDIA_STREAM_CLIENT_H_
+#define WEBKIT_MOCKS_TEST_MEDIA_STREAM_CLIENT_H_
+
+#include "base/callback_forward.h"
+#include "third_party/WebKit/Source/Platform/chromium/public/WebURL.h"
+#include "webkit/media/media_stream_client.h"
+
+namespace WebKit {
+class WebFrame;
+class WebMediaPlayer;
+class WebMediaPlayerClient;
+}
+
+namespace webkit_media {
+class MediaStreamAudioRenderer;
+class MediaStreamClient;
+}
+
+namespace webkit_glue {
+
+// This is used by WebFrameClient::createMediaPlayer().
+WebKit::WebMediaPlayer* CreateMediaPlayer(
+ WebKit::WebFrame* frame,
+ const WebKit::WebURL& url,
+ WebKit::WebMediaPlayerClient* client,
+ webkit_media::MediaStreamClient* media_stream_client);
+
+class TestMediaStreamClient : public webkit_media::MediaStreamClient {
+ public:
+ TestMediaStreamClient();
+ virtual ~TestMediaStreamClient();
+
+ // Implement webkit_media::MediaStreamClient.
+ virtual bool IsMediaStream(const GURL& url) OVERRIDE;
+ virtual scoped_refptr<webkit_media::VideoFrameProvider> GetVideoFrameProvider(
+ const GURL& url,
+ const base::Closure& error_cb,
+ const webkit_media::VideoFrameProvider::RepaintCB& repaint_cb) OVERRIDE;
+ virtual scoped_refptr<webkit_media::MediaStreamAudioRenderer>
+ GetAudioRenderer(const GURL& url) OVERRIDE;
+};
+
+} // namespace webkit_glue
+
+#endif // WEBKIT_MOCKS_TEST_MEDIA_STREAM_CLIENT_H_