Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(463)

Unified Diff: media/audio/audio_debug_file_writer_unittest.cc

Issue 2702323002: Move AudioDebugFileWriter from content/ to media/. (Closed)
Patch Set: Code review, unit test fix and rebase. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/audio/audio_debug_file_writer.cc ('k') | media/audio/audio_file_writer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/audio_debug_file_writer_unittest.cc
diff --git a/content/browser/renderer_host/media/audio_debug_file_writer_unittest.cc b/media/audio/audio_debug_file_writer_unittest.cc
similarity index 78%
rename from content/browser/renderer_host/media/audio_debug_file_writer_unittest.cc
rename to media/audio/audio_debug_file_writer_unittest.cc
index 4ececd04cd85c127731d9a3b81d04132a726a036..4b6f2b883c4859abec4381be2690a1502cc4f125 100644
--- a/content/browser/renderer_host/media/audio_debug_file_writer_unittest.cc
+++ b/media/audio/audio_debug_file_writer_unittest.cc
@@ -4,18 +4,19 @@
#include <stdint.h>
+#include "base/bind.h"
#include "base/files/file_util.h"
#include "base/memory/ptr_util.h"
+#include "base/message_loop/message_loop.h"
#include "base/synchronization/waitable_event.h"
#include "base/sys_byteorder.h"
-#include "content/browser/renderer_host/media/audio_debug_file_writer.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/test/test_browser_thread_bundle.h"
+#include "base/threading/thread.h"
+#include "media/audio/audio_debug_file_writer.h"
#include "media/base/audio_bus.h"
#include "media/base/test_helpers.h"
#include "testing/gtest/include/gtest/gtest.h"
-namespace content {
+namespace media {
namespace {
@@ -36,15 +37,15 @@ uint32_t ReadLE4(const char* buf) {
} // namespace
// <channel layout, sample rate, frames per buffer, number of buffer writes
-typedef std::tr1::tuple<media::ChannelLayout, int, int, int>
+typedef std::tr1::tuple<ChannelLayout, int, int, int>
AudioDebugFileWriterTestData;
class AudioDebugFileWriterTest
: public testing::TestWithParam<AudioDebugFileWriterTestData> {
public:
AudioDebugFileWriterTest()
- : thread_bundle_(content::TestBrowserThreadBundle::REAL_FILE_THREAD),
- params_(media::AudioParameters::Format::AUDIO_PCM_LINEAR,
+ : file_thread_("FileThread"),
+ params_(AudioParameters::Format::AUDIO_PCM_LINEAR,
std::tr1::get<0>(GetParam()),
std::tr1::get<1>(GetParam()),
kBytesPerSample * 8,
@@ -54,6 +55,7 @@ class AudioDebugFileWriterTest
writes_),
source_interleaved_(source_samples_ ? new int16_t[source_samples_]
: nullptr) {
+ file_thread_.StartAndWaitForTesting();
InitSourceInterleaved(source_interleaved_.get(), source_samples_);
}
@@ -71,8 +73,8 @@ class AudioDebugFileWriterTest
}
}
- static void VerifyHeader(const char(&wav_header)[kWavHeaderSize],
- const media::AudioParameters& params,
+ static void VerifyHeader(const char (&wav_header)[kWavHeaderSize],
+ const AudioParameters& params,
int writes,
int64_t file_length) {
uint32_t block_align = params.channels() * kBytesPerSample;
@@ -154,33 +156,32 @@ class AudioDebugFileWriterTest
}
void TestDoneOnFileThread(const base::Closure& callback) {
- DCHECK_CURRENTLY_ON(BrowserThread::FILE);
+ DCHECK(file_thread_.task_runner()->BelongsToCurrentThread());
callback.Run();
}
void DoDebugRecording() {
- // Write tasks are posted to BrowserThread::FILE.
+ // Write tasks are posted to |file_thread_|.
for (int i = 0; i < writes_; ++i) {
- std::unique_ptr<media::AudioBus> bus = media::AudioBus::Create(
- params_.channels(), params_.frames_per_buffer());
+ std::unique_ptr<AudioBus> bus =
+ AudioBus::Create(params_.channels(), params_.frames_per_buffer());
bus->FromInterleaved(
source_interleaved_.get() +
i * params_.channels() * params_.frames_per_buffer(),
params_.frames_per_buffer(), kBytesPerSample);
- input_debug_writer_->Write(std::move(bus));
+ debug_writer_->Write(std::move(bus));
}
}
void WaitForRecordingCompletion() {
- media::WaitableMessageLoopEvent event;
+ WaitableMessageLoopEvent event;
- // Post a task to BrowserThread::FILE indicating that all the writes are
- // done.
- BrowserThread::PostTask(
- BrowserThread::FILE, FROM_HERE,
+ // Post a task to the file thread indicating that all the writes are done.
+ file_thread_.task_runner()->PostTask(
+ FROM_HERE,
base::Bind(&AudioDebugFileWriterTest::TestDoneOnFileThread,
base::Unretained(this), event.GetClosure()));
@@ -192,11 +193,11 @@ class AudioDebugFileWriterTest
base::FilePath file_path;
EXPECT_TRUE(base::CreateTemporaryFile(&file_path));
- input_debug_writer_->Start(file_path);
+ debug_writer_->Start(file_path);
DoDebugRecording();
- input_debug_writer_->Stop();
+ debug_writer_->Stop();
WaitForRecordingCompletion();
@@ -211,13 +212,19 @@ class AudioDebugFileWriterTest
}
protected:
- TestBrowserThreadBundle thread_bundle_;
+ // |file_thread_| must to be declared before |debug_writer_| so that it's
+ // destroyed after. This ensures all tasks posted in |debug_writer_| to the
+ // file thread are run before exiting the test.
+ base::Thread file_thread_;
+
+ // Message loop for the test main thread.
+ base::MessageLoop message_loop_;
// Writer under test.
- std::unique_ptr<AudioDebugFileWriter> input_debug_writer_;
+ std::unique_ptr<AudioDebugFileWriter> debug_writer_;
// AudioBus parameters.
- media::AudioParameters params_;
+ AudioParameters params_;
// Number of times to write AudioBus to the file.
int writes_;
@@ -235,14 +242,16 @@ class AudioDebugFileWriterTest
class AudioDebugFileWriterBehavioralTest : public AudioDebugFileWriterTest {};
TEST_P(AudioDebugFileWriterTest, WaveRecordingTest) {
- input_debug_writer_.reset(new AudioDebugFileWriter(params_));
+ debug_writer_.reset(
+ new AudioDebugFileWriter(params_, file_thread_.task_runner()));
RecordAndVerifyOnce();
}
TEST_P(AudioDebugFileWriterBehavioralTest,
DeletedBeforeRecordingFinishedOnFileThread) {
- input_debug_writer_.reset(new AudioDebugFileWriter(params_));
+ debug_writer_.reset(
+ new AudioDebugFileWriter(params_, file_thread_.task_runner()));
base::FilePath file_path;
EXPECT_TRUE(base::CreateTemporaryFile(&file_path));
@@ -251,15 +260,15 @@ TEST_P(AudioDebugFileWriterBehavioralTest,
new base::WaitableEvent(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED);
- BrowserThread::PostTask(
- BrowserThread::FILE, FROM_HERE,
+ file_thread_.task_runner()->PostTask(
+ FROM_HERE,
base::Bind(&base::WaitableEvent::Wait, base::Owned(wait_for_deletion)));
- input_debug_writer_->Start(file_path);
+ debug_writer_->Start(file_path);
DoDebugRecording();
- input_debug_writer_.reset();
+ debug_writer_.reset();
wait_for_deletion->Signal();
WaitForRecordingCompletion();
@@ -275,29 +284,33 @@ TEST_P(AudioDebugFileWriterBehavioralTest,
}
TEST_P(AudioDebugFileWriterBehavioralTest, FileCreationError) {
- input_debug_writer_.reset(new AudioDebugFileWriter(params_));
+ debug_writer_.reset(
+ new AudioDebugFileWriter(params_, file_thread_.task_runner()));
base::FilePath file_path; // Empty file name.
- input_debug_writer_->Start(file_path);
+ debug_writer_->Start(file_path);
DoDebugRecording();
}
TEST_P(AudioDebugFileWriterBehavioralTest, StartStopStartStop) {
- input_debug_writer_.reset(new AudioDebugFileWriter(params_));
+ debug_writer_.reset(
+ new AudioDebugFileWriter(params_, file_thread_.task_runner()));
RecordAndVerifyOnce();
RecordAndVerifyOnce();
}
TEST_P(AudioDebugFileWriterBehavioralTest, DestroyNotStarted) {
- input_debug_writer_.reset(new AudioDebugFileWriter(params_));
- input_debug_writer_.reset();
+ debug_writer_.reset(
+ new AudioDebugFileWriter(params_, file_thread_.task_runner()));
+ debug_writer_.reset();
}
TEST_P(AudioDebugFileWriterBehavioralTest, DestroyStarted) {
- input_debug_writer_.reset(new AudioDebugFileWriter(params_));
+ debug_writer_.reset(
+ new AudioDebugFileWriter(params_, file_thread_.task_runner()));
base::FilePath file_path;
EXPECT_TRUE(base::CreateTemporaryFile(&file_path));
- input_debug_writer_->Start(file_path);
- input_debug_writer_.reset();
+ debug_writer_->Start(file_path);
+ debug_writer_.reset();
}
INSTANTIATE_TEST_CASE_P(
@@ -306,32 +319,32 @@ INSTANTIATE_TEST_CASE_P(
// Using 10ms frames per buffer everywhere.
testing::Values(
// No writes.
- std::tr1::make_tuple(media::ChannelLayout::CHANNEL_LAYOUT_MONO,
+ std::tr1::make_tuple(ChannelLayout::CHANNEL_LAYOUT_MONO,
44100,
44100 / 100,
0),
// 1 write of mono.
- std::tr1::make_tuple(media::ChannelLayout::CHANNEL_LAYOUT_MONO,
+ std::tr1::make_tuple(ChannelLayout::CHANNEL_LAYOUT_MONO,
44100,
44100 / 100,
1),
// 1 second of mono.
- std::tr1::make_tuple(media::ChannelLayout::CHANNEL_LAYOUT_MONO,
+ std::tr1::make_tuple(ChannelLayout::CHANNEL_LAYOUT_MONO,
44100,
44100 / 100,
100),
// 1 second of mono, higher rate.
- std::tr1::make_tuple(media::ChannelLayout::CHANNEL_LAYOUT_MONO,
+ std::tr1::make_tuple(ChannelLayout::CHANNEL_LAYOUT_MONO,
48000,
48000 / 100,
100),
// 1 second of stereo.
- std::tr1::make_tuple(media::ChannelLayout::CHANNEL_LAYOUT_STEREO,
+ std::tr1::make_tuple(ChannelLayout::CHANNEL_LAYOUT_STEREO,
44100,
44100 / 100,
100),
// 15 seconds of stereo, higher rate.
- std::tr1::make_tuple(media::ChannelLayout::CHANNEL_LAYOUT_STEREO,
+ std::tr1::make_tuple(ChannelLayout::CHANNEL_LAYOUT_STEREO,
48000,
48000 / 100,
1500)));
@@ -342,9 +355,9 @@ INSTANTIATE_TEST_CASE_P(
// Using 10ms frames per buffer everywhere.
testing::Values(
// No writes.
- std::tr1::make_tuple(media::ChannelLayout::CHANNEL_LAYOUT_MONO,
+ std::tr1::make_tuple(ChannelLayout::CHANNEL_LAYOUT_MONO,
44100,
44100 / 100,
100)));
-} // namespace content
+} // namespace media
« no previous file with comments | « media/audio/audio_debug_file_writer.cc ('k') | media/audio/audio_file_writer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698