| Index: content/renderer/media/webaudiosourceprovider_impl_unittest.cc | 
| diff --git a/content/renderer/media/webaudiosourceprovider_impl_unittest.cc b/content/renderer/media/webaudiosourceprovider_impl_unittest.cc | 
| deleted file mode 100644 | 
| index 8a59822debc05e5b7c1b5132fd13a1c5efd037a6..0000000000000000000000000000000000000000 | 
| --- a/content/renderer/media/webaudiosourceprovider_impl_unittest.cc | 
| +++ /dev/null | 
| @@ -1,240 +0,0 @@ | 
| -// 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 "base/message_loop/message_loop.h" | 
| -#include "base/run_loop.h" | 
| -#include "content/renderer/media/webaudiosourceprovider_impl.h" | 
| -#include "media/audio/audio_parameters.h" | 
| -#include "media/base/fake_audio_render_callback.h" | 
| -#include "media/base/mock_audio_renderer_sink.h" | 
| -#include "testing/gmock/include/gmock/gmock.h" | 
| -#include "testing/gtest/include/gtest/gtest.h" | 
| -#include "third_party/WebKit/public/platform/WebAudioSourceProviderClient.h" | 
| - | 
| -namespace content { | 
| - | 
| -namespace { | 
| -const float kTestVolume = 0.25; | 
| -}  // namespace | 
| - | 
| -class WebAudioSourceProviderImplTest | 
| -    : public testing::Test, | 
| -      public blink::WebAudioSourceProviderClient { | 
| - public: | 
| -  WebAudioSourceProviderImplTest() | 
| -      : params_(media::AudioParameters::AUDIO_PCM_LINEAR, | 
| -                media::CHANNEL_LAYOUT_STEREO, 48000, 16, 64), | 
| -        fake_callback_(0.1), | 
| -        mock_sink_(new media::MockAudioRendererSink()), | 
| -        wasp_impl_(new WebAudioSourceProviderImpl(mock_sink_)) { | 
| -  } | 
| - | 
| -  virtual ~WebAudioSourceProviderImplTest() {} | 
| - | 
| -  void CallAllSinkMethodsAndVerify(bool verify) { | 
| -    testing::InSequence s; | 
| - | 
| -    EXPECT_CALL(*mock_sink_.get(), Start()).Times(verify); | 
| -    wasp_impl_->Start(); | 
| - | 
| -    EXPECT_CALL(*mock_sink_.get(), Play()).Times(verify); | 
| -    wasp_impl_->Play(); | 
| - | 
| -    EXPECT_CALL(*mock_sink_.get(), Pause()).Times(verify); | 
| -    wasp_impl_->Pause(); | 
| - | 
| -    EXPECT_CALL(*mock_sink_.get(), SetVolume(kTestVolume)).Times(verify); | 
| -    wasp_impl_->SetVolume(kTestVolume); | 
| - | 
| -    EXPECT_CALL(*mock_sink_.get(), Stop()).Times(verify); | 
| -    wasp_impl_->Stop(); | 
| - | 
| -    testing::Mock::VerifyAndClear(mock_sink_.get()); | 
| -  } | 
| - | 
| -  void SetClient(blink::WebAudioSourceProviderClient* client) { | 
| -    testing::InSequence s; | 
| - | 
| -    if (client) { | 
| -      EXPECT_CALL(*mock_sink_.get(), Stop()); | 
| -      EXPECT_CALL(*this, setFormat(params_.channels(), params_.sample_rate())); | 
| -    } | 
| -    wasp_impl_->setClient(client); | 
| -    base::RunLoop().RunUntilIdle(); | 
| - | 
| -    testing::Mock::VerifyAndClear(mock_sink_.get()); | 
| -    testing::Mock::VerifyAndClear(this); | 
| -  } | 
| - | 
| -  bool CompareBusses(const media::AudioBus* bus1, const media::AudioBus* bus2) { | 
| -    EXPECT_EQ(bus1->channels(), bus2->channels()); | 
| -    EXPECT_EQ(bus1->frames(), bus2->frames()); | 
| -    for (int ch = 0; ch < bus1->channels(); ++ch) { | 
| -      if (memcmp(bus1->channel(ch), bus2->channel(ch), | 
| -                 sizeof(*bus1->channel(ch)) * bus1->frames()) != 0) { | 
| -        return false; | 
| -      } | 
| -    } | 
| -    return true; | 
| -  } | 
| - | 
| -  // blink::WebAudioSourceProviderClient implementation. | 
| -  MOCK_METHOD2(setFormat, void(size_t numberOfChannels, float sampleRate)); | 
| - | 
| - protected: | 
| -  media::AudioParameters params_; | 
| -  media::FakeAudioRenderCallback fake_callback_; | 
| -  scoped_refptr<media::MockAudioRendererSink> mock_sink_; | 
| -  scoped_refptr<WebAudioSourceProviderImpl> wasp_impl_; | 
| -  base::MessageLoop message_loop_; | 
| - | 
| -  DISALLOW_COPY_AND_ASSIGN(WebAudioSourceProviderImplTest); | 
| -}; | 
| - | 
| -TEST_F(WebAudioSourceProviderImplTest, SetClientBeforeInitialize) { | 
| -  // setClient() with a NULL client should do nothing if no client is set. | 
| -  wasp_impl_->setClient(NULL); | 
| - | 
| -  EXPECT_CALL(*mock_sink_.get(), Stop()); | 
| -  wasp_impl_->setClient(this); | 
| -  base::RunLoop().RunUntilIdle(); | 
| - | 
| -  // When Initialize() is called after setClient(), the params should propagate | 
| -  // to the client via setFormat() during the call. | 
| -  EXPECT_CALL(*this, setFormat(params_.channels(), params_.sample_rate())); | 
| -  wasp_impl_->Initialize(params_, &fake_callback_); | 
| -  base::RunLoop().RunUntilIdle(); | 
| - | 
| -  // setClient() with the same client should do nothing. | 
| -  wasp_impl_->setClient(this); | 
| -  base::RunLoop().RunUntilIdle(); | 
| -} | 
| - | 
| -// Verify AudioRendererSink functionality w/ and w/o a client. | 
| -TEST_F(WebAudioSourceProviderImplTest, SinkMethods) { | 
| -  wasp_impl_->Initialize(params_, &fake_callback_); | 
| -  ASSERT_EQ(mock_sink_->callback(), &fake_callback_); | 
| - | 
| -  // Without a client all WASP calls should fall through to the underlying sink. | 
| -  CallAllSinkMethodsAndVerify(true); | 
| - | 
| -  // With a client no calls should reach the Stop()'d sink.  Also, setClient() | 
| -  // should propagate the params provided during Initialize() at call time. | 
| -  SetClient(this); | 
| -  CallAllSinkMethodsAndVerify(false); | 
| - | 
| -  // Removing the client should cause WASP to revert to the underlying sink. | 
| -  EXPECT_CALL(*mock_sink_.get(), SetVolume(kTestVolume)); | 
| -  SetClient(NULL); | 
| -  CallAllSinkMethodsAndVerify(true); | 
| -} | 
| - | 
| -// Verify underlying sink state is restored after client removal. | 
| -TEST_F(WebAudioSourceProviderImplTest, SinkStateRestored) { | 
| -  wasp_impl_->Initialize(params_, &fake_callback_); | 
| - | 
| -  // Verify state set before the client is set propagates back afterward. | 
| -  EXPECT_CALL(*mock_sink_.get(), Start()); | 
| -  wasp_impl_->Start(); | 
| -  SetClient(this); | 
| - | 
| -  EXPECT_CALL(*mock_sink_.get(), SetVolume(1.0)); | 
| -  EXPECT_CALL(*mock_sink_.get(), Start()); | 
| -  SetClient(NULL); | 
| - | 
| -  // Verify state set while the client was attached propagates back afterward. | 
| -  SetClient(this); | 
| -  wasp_impl_->Play(); | 
| -  wasp_impl_->SetVolume(kTestVolume); | 
| - | 
| -  EXPECT_CALL(*mock_sink_.get(), SetVolume(kTestVolume)); | 
| -  EXPECT_CALL(*mock_sink_.get(), Start()); | 
| -  EXPECT_CALL(*mock_sink_.get(), Play()); | 
| -  SetClient(NULL); | 
| -} | 
| - | 
| -// Test the AudioRendererSink state machine and its effects on provideInput(). | 
| -TEST_F(WebAudioSourceProviderImplTest, ProvideInput) { | 
| -  scoped_ptr<media::AudioBus> bus1 = media::AudioBus::Create(params_); | 
| -  scoped_ptr<media::AudioBus> bus2 = media::AudioBus::Create(params_); | 
| - | 
| -  // Point the WebVector into memory owned by |bus1|. | 
| -  blink::WebVector<float*> audio_data(static_cast<size_t>(bus1->channels())); | 
| -  for (size_t i = 0; i < audio_data.size(); ++i) | 
| -    audio_data[i] = bus1->channel(i); | 
| - | 
| -  // Verify provideInput() works before Initialize() and returns silence. | 
| -  bus1->channel(0)[0] = 1; | 
| -  bus2->Zero(); | 
| -  wasp_impl_->provideInput(audio_data, params_.frames_per_buffer()); | 
| -  ASSERT_TRUE(CompareBusses(bus1.get(), bus2.get())); | 
| - | 
| -  wasp_impl_->Initialize(params_, &fake_callback_); | 
| -  SetClient(this); | 
| - | 
| -  // Verify provideInput() is muted prior to Start() and no calls to the render | 
| -  // callback have occurred. | 
| -  bus1->channel(0)[0] = 1; | 
| -  bus2->Zero(); | 
| -  wasp_impl_->provideInput(audio_data, params_.frames_per_buffer()); | 
| -  ASSERT_TRUE(CompareBusses(bus1.get(), bus2.get())); | 
| -  ASSERT_EQ(fake_callback_.last_audio_delay_milliseconds(), -1); | 
| - | 
| -  wasp_impl_->Start(); | 
| - | 
| -  // Ditto for Play(). | 
| -  bus1->channel(0)[0] = 1; | 
| -  wasp_impl_->provideInput(audio_data, params_.frames_per_buffer()); | 
| -  ASSERT_TRUE(CompareBusses(bus1.get(), bus2.get())); | 
| -  ASSERT_EQ(fake_callback_.last_audio_delay_milliseconds(), -1); | 
| - | 
| -  wasp_impl_->Play(); | 
| - | 
| -  // Now we should get real audio data. | 
| -  wasp_impl_->provideInput(audio_data, params_.frames_per_buffer()); | 
| -  ASSERT_FALSE(CompareBusses(bus1.get(), bus2.get())); | 
| - | 
| -  // Ensure volume adjustment is working. | 
| -  fake_callback_.reset(); | 
| -  fake_callback_.Render(bus2.get(), 0); | 
| -  bus2->Scale(kTestVolume); | 
| - | 
| -  fake_callback_.reset(); | 
| -  wasp_impl_->SetVolume(kTestVolume); | 
| -  wasp_impl_->provideInput(audio_data, params_.frames_per_buffer()); | 
| -  ASSERT_TRUE(CompareBusses(bus1.get(), bus2.get())); | 
| - | 
| -  // Pause should return to silence. | 
| -  wasp_impl_->Pause(); | 
| -  bus1->channel(0)[0] = 1; | 
| -  bus2->Zero(); | 
| -  wasp_impl_->provideInput(audio_data, params_.frames_per_buffer()); | 
| -  ASSERT_TRUE(CompareBusses(bus1.get(), bus2.get())); | 
| - | 
| -  // Ensure if a renderer properly fill silence for partial Render() calls by | 
| -  // configuring the fake callback to return half the data.  After these calls | 
| -  // bus1 is full of junk data, and bus2 is partially filled. | 
| -  wasp_impl_->SetVolume(1); | 
| -  fake_callback_.Render(bus1.get(), 0); | 
| -  fake_callback_.reset(); | 
| -  fake_callback_.Render(bus2.get(), 0); | 
| -  bus2->ZeroFramesPartial(bus2->frames() / 2, | 
| -                          bus2->frames() - bus2->frames() / 2); | 
| -  fake_callback_.reset(); | 
| -  fake_callback_.set_half_fill(true); | 
| -  wasp_impl_->Play(); | 
| - | 
| -  // Play should return real audio data again, but the last half should be zero. | 
| -  wasp_impl_->provideInput(audio_data, params_.frames_per_buffer()); | 
| -  ASSERT_TRUE(CompareBusses(bus1.get(), bus2.get())); | 
| - | 
| -  // Stop() should return silence. | 
| -  wasp_impl_->Stop(); | 
| -  bus1->channel(0)[0] = 1; | 
| -  bus2->Zero(); | 
| -  wasp_impl_->provideInput(audio_data, params_.frames_per_buffer()); | 
| -  ASSERT_TRUE(CompareBusses(bus1.get(), bus2.get())); | 
| -} | 
| - | 
| -}  // namespace content | 
|  |