Index: third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp |
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp b/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp |
index a76bd7beb6c200d93fd7d62602ea9445a5f9a5b9..fd301035be92e5521791e4bf415076dc6d992533 100644 |
--- a/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp |
+++ b/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp |
@@ -50,6 +50,12 @@ class AudioContextTestPlatform : public TestingPlatformSupport { |
case WebAudioLatencyHint::kCategoryPlayback: |
bufferSize = audioHardwareBufferSize() * 4; |
break; |
+ case WebAudioLatencyHint::kCategoryExact: |
+ bufferSize = std::max( |
+ static_cast<double>(audioHardwareBufferSize()), |
+ std::min(latencyHint.seconds() * audioHardwareSampleRate(), |
+ static_cast<double>(audioHardwareBufferSize() * 4))); |
+ break; |
default: |
NOTREACHED(); |
break; |
@@ -99,6 +105,29 @@ TEST_F(AudioContextTest, AudioContextOptions_WebAudioLatencyHint) { |
AudioContext* playbackContext = |
AudioContext::create(document(), playbackOptions, ASSERT_NO_EXCEPTION); |
EXPECT_GT(playbackContext->baseLatency(), balancedContext->baseLatency()); |
+ |
+ AudioContextOptions exactTooSmallOptions; |
+ exactTooSmallOptions.setLatencyHint( |
+ AudioContextLatencyCategoryOrDouble::fromDouble(0.000001)); |
+ AudioContext* exactTooSmallContext = AudioContext::create( |
+ document(), exactTooSmallOptions, ASSERT_NO_EXCEPTION); |
+ EXPECT_EQ(exactTooSmallContext->baseLatency(), |
+ interactiveContext->baseLatency()); |
+ |
+ const double exactLatencySec = 0.01; |
+ AudioContextOptions exactOkOptions; |
+ exactOkOptions.setLatencyHint( |
+ AudioContextLatencyCategoryOrDouble::fromDouble(exactLatencySec)); |
+ AudioContext* exactOkContext = |
+ AudioContext::create(document(), exactOkOptions, ASSERT_NO_EXCEPTION); |
+ EXPECT_EQ(exactOkContext->baseLatency(), exactLatencySec * 2); |
+ |
+ AudioContextOptions exactTooBigOptions; |
+ exactTooBigOptions.setLatencyHint( |
+ AudioContextLatencyCategoryOrDouble::fromDouble(1)); |
+ AudioContext* exactTooBigContext = |
+ AudioContext::create(document(), exactTooBigOptions, ASSERT_NO_EXCEPTION); |
+ EXPECT_EQ(exactTooBigContext->baseLatency(), playbackContext->baseLatency()); |
} |
} // namespace blink |