Index: content/shell/renderer/test_runner/mock_web_media_stream_center.cc |
diff --git a/content/shell/renderer/test_runner/mock_web_media_stream_center.cc b/content/shell/renderer/test_runner/mock_web_media_stream_center.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f7bd663ed899960cfff2f055c3f7ca172e3571c4 |
--- /dev/null |
+++ b/content/shell/renderer/test_runner/mock_web_media_stream_center.cc |
@@ -0,0 +1,152 @@ |
+// 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. |
+ |
+#include "content/shell/renderer/test_runner/mock_web_media_stream_center.h" |
+ |
+#include "base/logging.h" |
+#include "content/shell/renderer/test_runner/TestInterfaces.h" |
+#include "content/shell/renderer/test_runner/WebTestDelegate.h" |
+#include "third_party/WebKit/public/platform/WebAudioDestinationConsumer.h" |
+#include "third_party/WebKit/public/platform/WebAudioSourceProvider.h" |
+#include "third_party/WebKit/public/platform/WebMediaStream.h" |
+#include "third_party/WebKit/public/platform/WebMediaStreamCenterClient.h" |
+#include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
+#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
+#include "third_party/WebKit/public/platform/WebMediaStreamTrackSourcesRequest.h" |
+#include "third_party/WebKit/public/platform/WebSourceInfo.h" |
+#include "third_party/WebKit/public/platform/WebVector.h" |
+ |
+namespace content { |
+ |
+namespace { |
+class NewTrackTask : public WebMethodTask<MockWebMediaStreamCenter> { |
+ public: |
+ NewTrackTask(MockWebMediaStreamCenter* object, |
+ const blink::WebMediaStream& stream) |
+ : WebMethodTask<MockWebMediaStreamCenter>(object), stream_(stream) { |
+ DCHECK(!stream_.isNull()); |
+ } |
+ |
+ virtual ~NewTrackTask() {} |
+ |
+ virtual void runIfValid() OVERRIDE { |
+ blink::WebMediaStreamSource source; |
+ blink::WebMediaStreamTrack track; |
+ source.initialize("MagicVideoDevice#1", |
+ blink::WebMediaStreamSource::TypeVideo, |
+ "Magic video track"); |
+ track.initialize(source); |
+ stream_.addTrack(track); |
+ } |
+ |
+ private: |
+ blink::WebMediaStream stream_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(NewTrackTask); |
+}; |
+ |
+class MockWebAudioDestinationConsumer |
+ : public blink::WebAudioDestinationConsumer { |
+ public: |
+ MockWebAudioDestinationConsumer() {} |
+ virtual ~MockWebAudioDestinationConsumer() {} |
+ virtual void setFormat(size_t number_of_channels, float sample_rate) {} |
+ virtual void consumeAudio(const blink::WebVector<const float*>&, |
+ size_t number_of_frames) {} |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MockWebAudioDestinationConsumer); |
+}; |
+ |
+} // namespace |
+ |
+MockWebMediaStreamCenter::MockWebMediaStreamCenter( |
+ blink::WebMediaStreamCenterClient* client, |
+ TestInterfaces* interfaces) |
+ : interfaces_(interfaces) { |
+} |
+ |
+MockWebMediaStreamCenter::~MockWebMediaStreamCenter() { |
+} |
+ |
+bool MockWebMediaStreamCenter::getMediaStreamTrackSources( |
+ const blink::WebMediaStreamTrackSourcesRequest& request) { |
+ size_t size = 2; |
+ blink::WebVector<blink::WebSourceInfo> results(size); |
+ results[0].initialize("MockAudioDevice#1", |
+ blink::WebSourceInfo::SourceKindAudio, |
+ "Mock audio device", |
+ blink::WebSourceInfo::VideoFacingModeNone); |
+ results[1].initialize("MockVideoDevice#1", |
+ blink::WebSourceInfo::SourceKindVideo, |
+ "Mock video device", |
+ blink::WebSourceInfo::VideoFacingModeEnvironment); |
+ request.requestSucceeded(results); |
+ return true; |
+} |
+ |
+void MockWebMediaStreamCenter::didEnableMediaStreamTrack( |
+ const blink::WebMediaStreamTrack& track) { |
+ track.source().setReadyState(blink::WebMediaStreamSource::ReadyStateLive); |
+} |
+ |
+void MockWebMediaStreamCenter::didDisableMediaStreamTrack( |
+ const blink::WebMediaStreamTrack& track) { |
+ track.source().setReadyState(blink::WebMediaStreamSource::ReadyStateMuted); |
+} |
+ |
+bool MockWebMediaStreamCenter::didAddMediaStreamTrack( |
+ const blink::WebMediaStream& stream, |
+ const blink::WebMediaStreamTrack& track) { |
+ return true; |
+} |
+ |
+bool MockWebMediaStreamCenter::didRemoveMediaStreamTrack( |
+ const blink::WebMediaStream& stream, |
+ const blink::WebMediaStreamTrack& track) { |
+ return true; |
+} |
+ |
+void MockWebMediaStreamCenter::didStopLocalMediaStream( |
+ const blink::WebMediaStream& stream) { |
+ blink::WebVector<blink::WebMediaStreamTrack> tracks; |
+ stream.audioTracks(tracks); |
+ for (size_t i = 0; i < tracks.size(); ++i) |
+ tracks[i].source().setReadyState( |
+ blink::WebMediaStreamSource::ReadyStateEnded); |
+ stream.videoTracks(tracks); |
+ for (size_t i = 0; i < tracks.size(); ++i) |
+ tracks[i].source().setReadyState( |
+ blink::WebMediaStreamSource::ReadyStateEnded); |
+} |
+ |
+bool MockWebMediaStreamCenter::didStopMediaStreamTrack( |
+ const blink::WebMediaStreamTrack& track) { |
+ track.source().setReadyState(blink::WebMediaStreamSource::ReadyStateEnded); |
+ return true; |
+} |
+ |
+void MockWebMediaStreamCenter::didCreateMediaStream( |
+ blink::WebMediaStream& stream) { |
+ blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; |
+ stream.audioTracks(audio_tracks); |
+ for (size_t i = 0; i < audio_tracks.size(); ++i) { |
+ blink::WebMediaStreamSource source = audio_tracks[i].source(); |
+ if (source.requiresAudioConsumer()) { |
+ MockWebAudioDestinationConsumer* consumer = |
+ new MockWebAudioDestinationConsumer(); |
+ source.addAudioConsumer(consumer); |
+ source.removeAudioConsumer(consumer); |
+ delete consumer; |
+ } |
+ } |
+ interfaces_->delegate()->postTask(new NewTrackTask(this, stream)); |
+} |
+ |
+blink::WebAudioSourceProvider* |
+MockWebMediaStreamCenter::createWebAudioSourceFromMediaStreamTrack( |
+ const blink::WebMediaStreamTrack& track) { |
+ return NULL; |
+} |
+ |
+} // namespace content |