Index: media/blink/webaudiosourceprovider_impl_unittest.cc |
diff --git a/media/blink/webaudiosourceprovider_impl_unittest.cc b/media/blink/webaudiosourceprovider_impl_unittest.cc |
index f5efffbf3e50bfe1612ab207035beaa20d9b9f97..8f928b6ddb8897398c1660d72380963da0ea0891 100644 |
--- a/media/blink/webaudiosourceprovider_impl_unittest.cc |
+++ b/media/blink/webaudiosourceprovider_impl_unittest.cc |
@@ -4,6 +4,7 @@ |
#include <stddef.h> |
+#include "base/bind.h" |
#include "base/macros.h" |
#include "base/message_loop/message_loop.h" |
#include "base/run_loop.h" |
@@ -15,6 +16,8 @@ |
#include "testing/gtest/include/gtest/gtest.h" |
#include "third_party/WebKit/public/platform/WebAudioSourceProviderClient.h" |
+using ::testing::_; |
+ |
namespace media { |
namespace { |
@@ -85,6 +88,12 @@ class WebAudioSourceProviderImplTest |
// blink::WebAudioSourceProviderClient implementation. |
MOCK_METHOD2(setFormat, void(size_t numberOfChannels, float sampleRate)); |
+ // OnAudioBusCB |
+ MOCK_METHOD2(DoOnAudioBusCB, void(AudioBus*, uint32_t delay_milliseconds)); |
+ void OnAudioBus(scoped_ptr<AudioBus> bus, uint32_t delay_milliseconds) { |
+ DoOnAudioBusCB(bus.get(), delay_milliseconds); |
+ } |
+ |
protected: |
AudioParameters params_; |
FakeAudioRenderCallback fake_callback_; |
@@ -117,7 +126,8 @@ TEST_F(WebAudioSourceProviderImplTest, SetClientBeforeInitialize) { |
// 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_); |
+ // Callbacks: |mock_sink_| uses |wasp_impl_| that uses |fake_callback_|. |
+ ASSERT_EQ(mock_sink_->callback(), wasp_impl_.get()); |
// Without a client all WASP calls should fall through to the underlying sink. |
CallAllSinkMethodsAndVerify(true); |
@@ -240,4 +250,24 @@ TEST_F(WebAudioSourceProviderImplTest, ProvideInput) { |
ASSERT_TRUE(CompareBusses(bus1.get(), bus2.get())); |
} |
+// Verify OnAudioBusCB is called if registered. |
+TEST_F(WebAudioSourceProviderImplTest, OnAudioBusCallback) { |
+ testing::InSequence s; |
+ wasp_impl_->Initialize(params_, &fake_callback_); |
+ wasp_impl_->RegisterOnAudioBusCallback(base::Bind( |
+ &WebAudioSourceProviderImplTest::OnAudioBus, base::Unretained(this))); |
+ |
+ const scoped_ptr<AudioBus> bus1 = AudioBus::Create(params_); |
+ const uint32_t kDelayMilliseconds = 3; |
+ EXPECT_CALL(*this, DoOnAudioBusCB(_, kDelayMilliseconds)).Times(1); |
+ wasp_impl_->Render(bus1.get(), kDelayMilliseconds, 0 /* frames_skipped */); |
+ |
+ wasp_impl_->ResetOnAudioBusCallback(); |
+ EXPECT_CALL(*this, DoOnAudioBusCB(_, _)).Times(0); |
+ wasp_impl_->Render(bus1.get(), 0 /* delay_milliseconds */, |
+ 0 /* frames_skipped */); |
+ |
+ testing::Mock::VerifyAndClear(mock_sink_.get()); |
+} |
+ |
} // namespace media |