Index: third_party/WebKit/Source/platform/audio/PushPullFIFOTest.cpp |
diff --git a/third_party/WebKit/Source/platform/audio/PushPullFIFOTest.cpp b/third_party/WebKit/Source/platform/audio/PushPullFIFOTest.cpp |
index 9351b4281d13b47fbf34e13dc8b9ae9643a9dabb..ef837b941d061d46f917790fd99428134c504c8c 100644 |
--- a/third_party/WebKit/Source/platform/audio/PushPullFIFOTest.cpp |
+++ b/third_party/WebKit/Source/platform/audio/PushPullFIFOTest.cpp |
@@ -8,6 +8,8 @@ |
#include <vector> |
#include "platform/audio/AudioUtilities.h" |
#include "platform/testing/TestingPlatformSupport.h" |
+#include "platform/wtf/Functional.h" |
+#include "platform/heap/Persistent.h" |
#include "platform/wtf/PtrUtil.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -15,6 +17,13 @@ namespace blink { |
namespace { |
+class MockAudioDestination { |
+ public: |
+ MockAudioDestination() {} |
+ ~MockAudioDestination() {} |
+ void RequestRender (size_t frames_requested, size_t frames_to_render) {} |
+}; |
+ |
// Check the basic contract of FIFO. |
TEST(PushPullFIFOBasicTest, BasicTests) { |
// This suppresses the multi-thread warning for GTest. Potently it increases |
@@ -25,27 +34,35 @@ TEST(PushPullFIFOBasicTest, BasicTests) { |
// i.e.) m_fifoLength <= kMaxFIFOLength |
EXPECT_DEATH(new PushPullFIFO(2, PushPullFIFO::kMaxFIFOLength + 1), ""); |
+ MockAudioDestination* test_destination = new MockAudioDestination(); |
+ |
std::unique_ptr<PushPullFIFO> test_fifo = |
WTF::WrapUnique(new PushPullFIFO(2, 1024)); |
// The input bus length must be |AudioUtilities::kRenderQuantumFrames|. |
// i.e.) inputBus->length() == kRenderQuantumFrames |
- RefPtr<AudioBus> input_bus_of129_frames = |
+ RefPtr<AudioBus> input_bus_129_frames = |
AudioBus::Create(2, AudioUtilities::kRenderQuantumFrames + 1); |
- EXPECT_DEATH(test_fifo->Push(input_bus_of129_frames.Get()), ""); |
- RefPtr<AudioBus> input_bus_of127_frames = |
+ EXPECT_DEATH(test_fifo->Push(input_bus_129_frames.Get()), ""); |
+ RefPtr<AudioBus> input_bus_127_frames = |
AudioBus::Create(2, AudioUtilities::kRenderQuantumFrames - 1); |
- EXPECT_DEATH(test_fifo->Push(input_bus_of127_frames.Get()), ""); |
+ EXPECT_DEATH(test_fifo->Push(input_bus_127_frames.Get()), ""); |
// Pull request frames cannot exceed the length of output bus. |
// i.e.) framesRequested <= outputBus->length() |
- RefPtr<AudioBus> output_bus_of512_frames = AudioBus::Create(2, 512); |
- EXPECT_DEATH(test_fifo->Pull(output_bus_of512_frames.Get(), 513), ""); |
+ RefPtr<AudioBus> output_bus_512_frames = AudioBus::Create(2, 512); |
+ EXPECT_DEATH(test_fifo->Pull(output_bus_512_frames.Get(), 513, |
+ WTF::Bind(&MockAudioDestination::RequestRender, |
+ WTF::Unretained(test_destination))), |
+ ""); |
// Pull request frames cannot exceed the length of FIFO. |
// i.e.) framesRequested <= m_fifoLength |
- RefPtr<AudioBus> output_bus_of1025_frames = AudioBus::Create(2, 1025); |
- EXPECT_DEATH(test_fifo->Pull(output_bus_of1025_frames.Get(), 1025), ""); |
+ RefPtr<AudioBus> output_bus_1025_frames = AudioBus::Create(2, 1025); |
+ EXPECT_DEATH(test_fifo->Pull(output_bus_1025_frames.Get(), 1025, |
+ WTF::Bind(&MockAudioDestination::RequestRender, |
+ WTF::Unretained(test_destination))), |
+ ""); |
} |
// Fills each AudioChannel in an AudioBus with a series of linearly increasing |
@@ -134,6 +151,8 @@ TEST_P(PushPullFIFOFeatureTest, FeatureTests) { |
const FIFOTestSetup setup = GetParam().setup; |
const FIFOTestExpectedState expected_state = GetParam().expected_state; |
+ MockAudioDestination* test_destination = new MockAudioDestination(); |
+ |
// Create a FIFO with a specified configuration. |
std::unique_ptr<PushPullFIFO> fifo = WTF::WrapUnique( |
new PushPullFIFO(setup.number_of_channels, setup.fifo_length)); |
@@ -153,7 +172,9 @@ TEST_P(PushPullFIFOFeatureTest, FeatureTests) { |
} else { |
output_bus = |
AudioBus::Create(setup.number_of_channels, action.number_of_frames); |
- fifo->Pull(output_bus.Get(), action.number_of_frames); |
+ fifo->Pull(output_bus.Get(), action.number_of_frames, |
+ WTF::Bind(&MockAudioDestination::RequestRender, |
+ WTF::Unretained(test_destination))); |
LOG(INFO) << "PULL " << action.number_of_frames << " frames"; |
} |
} |
@@ -169,7 +190,8 @@ TEST_P(PushPullFIFOFeatureTest, FeatureTests) { |
// Verify in-FIFO samples. |
for (const auto& sample : expected_state.fifo_samples) { |
- EXPECT_TRUE(VerifyBusValueAtIndex(fifo->Bus(), sample.index, sample.value)); |
+ EXPECT_TRUE(VerifyBusValueAtIndex(fifo->GetFIFOBusForTest(), |
+ sample.index, sample.value)); |
} |
// Verify samples from the most recent output bus. |