Index: content/shell/renderer/layout_test/layout_test_content_renderer_client.cc |
diff --git a/content/shell/renderer/layout_test/layout_test_content_renderer_client.cc b/content/shell/renderer/layout_test/layout_test_content_renderer_client.cc |
index 163a7415b668fbde8e687b746139672b7daec63f..2968807cf9bdd2cf86ecdfa8fb0b8a1ea8737d97 100644 |
--- a/content/shell/renderer/layout_test/layout_test_content_renderer_client.cc |
+++ b/content/shell/renderer/layout_test/layout_test_content_renderer_client.cc |
@@ -32,6 +32,7 @@ |
#include "content/test/mock_webclipboard_impl.h" |
#include "gin/modules/module_registry.h" |
#include "media/media_features.h" |
+#include "third_party/WebKit/public/platform/WebAudioLatencyHint.h" |
#include "third_party/WebKit/public/platform/WebMediaStreamCenter.h" |
#include "third_party/WebKit/public/web/WebFrameWidget.h" |
#include "third_party/WebKit/public/web/WebKit.h" |
@@ -194,10 +195,33 @@ LayoutTestContentRendererClient::OverrideCreateMIDIAccessor( |
return interfaces->CreateMIDIAccessor(client); |
} |
-WebAudioDevice* LayoutTestContentRendererClient::OverrideCreateAudioDevice() { |
+WebAudioDevice* LayoutTestContentRendererClient::OverrideCreateAudioDevice( |
+ const blink::WebAudioLatencyHint& latency_hint) { |
+ const double hw_buffer_size = 128; |
+ const double hw_sample_rate = 44100; |
Raymond Toy
2017/03/14 15:19:39
Where do these numbers come from? And why these p
Andrew MacPherson
2017/03/15 15:08:17
These are completely arbitrary, my understanding i
|
+ double buffer_size = 0; |
+ switch (latency_hint.category()) { |
+ case blink::WebAudioLatencyHint::kCategoryInteractive: |
+ buffer_size = hw_buffer_size; |
+ break; |
+ case blink::WebAudioLatencyHint::kCategoryBalanced: |
+ buffer_size = hw_buffer_size * 2; |
+ break; |
+ case blink::WebAudioLatencyHint::kCategoryPlayback: |
+ buffer_size = hw_buffer_size * 4; |
+ break; |
+ case blink::WebAudioLatencyHint::kCategoryExact: |
+ buffer_size = std::max(hw_buffer_size, |
+ std::min(latency_hint.seconds() * hw_sample_rate, |
+ hw_buffer_size * 4)); |
+ break; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
test_runner::WebTestInterfaces* interfaces = |
LayoutTestRenderThreadObserver::GetInstance()->test_interfaces(); |
- return interfaces->CreateAudioDevice(44100, 128); |
+ return interfaces->CreateAudioDevice(hw_sample_rate, buffer_size); |
} |
WebClipboard* LayoutTestContentRendererClient::OverrideWebClipboard() { |