| Index: chrome/renderer/media/audio_renderer_impl_unittest.cc
|
| ===================================================================
|
| --- chrome/renderer/media/audio_renderer_impl_unittest.cc (revision 78386)
|
| +++ chrome/renderer/media/audio_renderer_impl_unittest.cc (working copy)
|
| @@ -1,146 +0,0 @@
|
| -// Copyright (c) 2011 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 "base/process_util.h"
|
| -#include "chrome/common/render_messages.h"
|
| -#include "chrome/common/render_messages_params.h"
|
| -#include "chrome/renderer/media/audio_renderer_impl.h"
|
| -#include "media/base/data_buffer.h"
|
| -#include "media/base/media_format.h"
|
| -#include "media/base/mock_callback.h"
|
| -#include "media/base/mock_filter_host.h"
|
| -#include "media/base/mock_filters.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -using ::testing::ReturnRef;
|
| -
|
| -class AudioRendererImplTest : public ::testing::Test {
|
| - public:
|
| - static const int kRouteId = 0;
|
| - static const int kSize = 1024;
|
| -
|
| - AudioRendererImplTest() {
|
| - message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO));
|
| -
|
| - // TODO(scherkus): use gmock with AudioMessageFilter to verify
|
| - // AudioRendererImpl calls or doesn't call Send().
|
| - filter_ = new AudioMessageFilter(kRouteId);
|
| - filter_->message_loop_ = message_loop_.get();
|
| -
|
| - // Create temporary shared memory.
|
| - CHECK(shared_mem_.CreateAnonymous(kSize));
|
| -
|
| - // Setup expectations for initialization.
|
| - decoder_ = new media::MockAudioDecoder();
|
| -
|
| - // Associate media format with decoder
|
| - decoder_media_format_.SetAsInteger(media::MediaFormat::kChannels, 2);
|
| - decoder_media_format_.SetAsInteger(media::MediaFormat::kSampleRate, 48000);
|
| - decoder_media_format_.SetAsInteger(media::MediaFormat::kSampleBits, 16);
|
| - EXPECT_CALL(*decoder_, media_format())
|
| - .WillRepeatedly(ReturnRef(decoder_media_format_));
|
| -
|
| - // Create and initialize audio renderer.
|
| - renderer_ = new AudioRendererImpl(filter_);
|
| - renderer_->set_host(&host_);
|
| - renderer_->Initialize(decoder_, media::NewExpectedCallback());
|
| -
|
| - // Run pending tasks and simulate responding with a created audio stream.
|
| - message_loop_->RunAllPending();
|
| -
|
| - // Duplicate the shared memory handle so both the test and the callee can
|
| - // close their copy.
|
| - base::SharedMemoryHandle duplicated_handle;
|
| - EXPECT_TRUE(shared_mem_.ShareToProcess(base::GetCurrentProcessHandle(),
|
| - &duplicated_handle));
|
| -
|
| - renderer_->OnCreated(duplicated_handle, kSize);
|
| - }
|
| -
|
| - virtual ~AudioRendererImplTest() {
|
| - }
|
| -
|
| - protected:
|
| - // Fixtures.
|
| - scoped_ptr<MessageLoop> message_loop_;
|
| - scoped_refptr<AudioMessageFilter> filter_;
|
| - base::SharedMemory shared_mem_;
|
| - media::MockFilterHost host_;
|
| - scoped_refptr<media::MockAudioDecoder> decoder_;
|
| - scoped_refptr<AudioRendererImpl> renderer_;
|
| - media::MediaFormat decoder_media_format_;
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(AudioRendererImplTest);
|
| -};
|
| -
|
| -TEST_F(AudioRendererImplTest, SetPlaybackRate) {
|
| - // Execute SetPlaybackRate() codepath to create an IPC message.
|
| -
|
| - // Toggle play/pause to generate some IPC messages.
|
| - renderer_->SetPlaybackRate(0.0f);
|
| - renderer_->SetPlaybackRate(1.0f);
|
| - renderer_->SetPlaybackRate(0.0f);
|
| -
|
| - renderer_->Stop(media::NewExpectedCallback());
|
| - message_loop_->RunAllPending();
|
| -}
|
| -
|
| -TEST_F(AudioRendererImplTest, SetVolume) {
|
| - // Execute SetVolume() codepath to create an IPC message.
|
| - renderer_->SetVolume(0.5f);
|
| - renderer_->Stop(media::NewExpectedCallback());
|
| - message_loop_->RunAllPending();
|
| -}
|
| -
|
| -TEST_F(AudioRendererImplTest, Stop) {
|
| - // Declare some state messages.
|
| - const ViewMsg_AudioStreamState_Params kError(
|
| - ViewMsg_AudioStreamState_Params::kError);
|
| - const ViewMsg_AudioStreamState_Params kPlaying(
|
| - ViewMsg_AudioStreamState_Params::kPlaying);
|
| - const ViewMsg_AudioStreamState_Params kPaused(
|
| - ViewMsg_AudioStreamState_Params::kPaused);
|
| -
|
| - // Execute Stop() codepath to create an IPC message.
|
| - renderer_->Stop(media::NewExpectedCallback());
|
| - message_loop_->RunAllPending();
|
| -
|
| - // Run AudioMessageFilter::Delegate methods, which can be executed after being
|
| - // stopped. AudioRendererImpl shouldn't create any messages.
|
| - renderer_->OnRequestPacket(AudioBuffersState(kSize, 0));
|
| - renderer_->OnStateChanged(kError);
|
| - renderer_->OnStateChanged(kPlaying);
|
| - renderer_->OnStateChanged(kPaused);
|
| - renderer_->OnCreated(shared_mem_.handle(), kSize);
|
| - renderer_->OnVolume(0.5);
|
| -
|
| - // It's possible that the upstream decoder replies right after being stopped.
|
| - scoped_refptr<media::Buffer> buffer(new media::DataBuffer(kSize));
|
| - renderer_->ConsumeAudioSamples(buffer);
|
| -}
|
| -
|
| -TEST_F(AudioRendererImplTest, DestroyedMessageLoop_SetPlaybackRate) {
|
| - // Kill the message loop and verify SetPlaybackRate() still works.
|
| - message_loop_.reset();
|
| - renderer_->SetPlaybackRate(0.0f);
|
| - renderer_->SetPlaybackRate(1.0f);
|
| - renderer_->SetPlaybackRate(0.0f);
|
| - renderer_->Stop(media::NewExpectedCallback());
|
| -}
|
| -
|
| -TEST_F(AudioRendererImplTest, DestroyedMessageLoop_SetVolume) {
|
| - // Kill the message loop and verify SetVolume() still works.
|
| - message_loop_.reset();
|
| - renderer_->SetVolume(0.5f);
|
| - renderer_->Stop(media::NewExpectedCallback());
|
| -}
|
| -
|
| -TEST_F(AudioRendererImplTest, DestroyedMessageLoop_ConsumeAudioSamples) {
|
| - // Kill the message loop and verify OnReadComplete() still works.
|
| - message_loop_.reset();
|
| - scoped_refptr<media::Buffer> buffer(new media::DataBuffer(kSize));
|
| - renderer_->ConsumeAudioSamples(buffer);
|
| - renderer_->Stop(media::NewExpectedCallback());
|
| -}
|
|
|