Chromium Code Reviews| 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..65062d6a95031eba617fcc5fe2ce69fc7cd546b9 |
| --- /dev/null |
| +++ b/content/shell/renderer/test_runner/mock_web_media_stream_center.cc |
| @@ -0,0 +1,140 @@ |
| +// 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 { |
| + |
| +class NewTrackTask : public WebMethodTask<MockWebMediaStreamCenter> { |
|
jochen (gone - plz use gerrit)
2014/07/28 09:41:47
nit. this class should be in an anonymous namespac
Abhishek
2014/07/28 15:02:31
Done.
|
| + public: |
| + NewTrackTask(MockWebMediaStreamCenter* object, |
| + const blink::WebMediaStream& stream) |
| + : WebMethodTask<MockWebMediaStreamCenter>(object), stream_(stream) { |
| + DCHECK(!stream_.isNull()); |
| + } |
| + |
| + 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_; |
| +}; |
|
jochen (gone - plz use gerrit)
2014/07/28 09:41:47
nit disallow copy/assign
Abhishek
2014/07/28 15:02:30
Done.
|
| + |
| +MockWebMediaStreamCenter::MockWebMediaStreamCenter( |
| + blink::WebMediaStreamCenterClient* client, |
| + TestInterfaces* interfaces) |
| + : interfaces_(interfaces) { |
| +} |
| + |
| +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; |
| +} |
| + |
| +class MockWebAudioDestinationConsumer |
|
jochen (gone - plz use gerrit)
2014/07/28 09:41:47
this class should be in an anonymous namespace (an
Abhishek
2014/07/28 15:02:30
Done.
|
| + : public blink::WebAudioDestinationConsumer { |
| + public: |
| + virtual ~MockWebAudioDestinationConsumer() {} |
|
jochen (gone - plz use gerrit)
2014/07/28 09:41:47
nit. should have a ctor
Abhishek
2014/07/28 15:02:30
Done.
|
| + virtual void setFormat(size_t number_of_channels, |
| + float sample_rate) OVERRIDE {} |
| + virtual void consumeAudio(const blink::WebVector<const float*>&, |
| + size_t number_of_frames) OVERRIDE {} |
| +}; |
|
jochen (gone - plz use gerrit)
2014/07/28 09:41:47
nit. disallow copy/assign
Abhishek
2014/07/28 15:02:31
Done.
|
| + |
| +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 |