diff options
author | xians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-14 14:07:39 +0000 |
---|---|---|
committer | xians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-14 14:07:39 +0000 |
commit | d6a5d747415a472f8755af23de94cd42fb20799a (patch) | |
tree | c069dd45c4bac1858abb5fc716cab13a808058e2 /content/browser/speech/speech_recognizer_impl_unittest.cc | |
parent | 49ee2828a9fb5c9502768c2ba932aef9ed00a604 (diff) | |
download | chromium_src-d6a5d747415a472f8755af23de94cd42fb20799a.zip chromium_src-d6a5d747415a472f8755af23de94cd42fb20799a.tar.gz chromium_src-d6a5d747415a472f8755af23de94cd42fb20799a.tar.bz2 |
Stopping the audio thread before destroying the AudioManager<Platform>.
The destruction of the AudioManager family happens in order of: AudioManager<Platform>, AudioManagerBase, AudioManager.
So before getting into the destruction of AudioManagerBase, we have make sure the audio thread has been stopped before AudioManager<Platform> is gone, otherwise it will end up into unexpected behavior, for example, crash because of pure virtual function.
BUG=117470
TEST=media_unittests, Address Sanitizer
Review URL: http://codereview.chromium.org/9692038
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@126635 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/speech/speech_recognizer_impl_unittest.cc')
-rw-r--r-- | content/browser/speech/speech_recognizer_impl_unittest.cc | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/content/browser/speech/speech_recognizer_impl_unittest.cc b/content/browser/speech/speech_recognizer_impl_unittest.cc index baf3a3e..286ba7c 100644 --- a/content/browser/speech/speech_recognizer_impl_unittest.cc +++ b/content/browser/speech/speech_recognizer_impl_unittest.cc @@ -24,7 +24,7 @@ using media::TestAudioInputControllerFactory; namespace { -class MockAudioManager : public AudioManager { +class MockAudioManager : public AudioManagerBase { public: MockAudioManager() { audio_thread_.reset(new base::Thread("MockAudioThread")); @@ -39,7 +39,7 @@ class MockAudioManager : public AudioManager { media::AudioDeviceNames* device_names) OVERRIDE {} virtual AudioOutputStream* MakeAudioOutputStream( const AudioParameters& params) OVERRIDE { - return FakeAudioOutputStream::MakeFakeStream(params); + return FakeAudioOutputStream::MakeFakeStream(this, params); } virtual AudioOutputStream* MakeAudioOutputStreamProxy( const AudioParameters& params) OVERRIDE { @@ -48,7 +48,19 @@ class MockAudioManager : public AudioManager { } virtual AudioInputStream* MakeAudioInputStream( const AudioParameters& params, const std::string& device_id) OVERRIDE { - return FakeAudioInputStream::MakeFakeStream(params); + return FakeAudioInputStream::MakeFakeStream(this, params); + } + virtual AudioOutputStream* MakeLinearOutputStream( + const AudioParameters& params) OVERRIDE { return NULL; } + virtual AudioOutputStream* MakeLowLatencyOutputStream( + const AudioParameters& params) OVERRIDE { return NULL; } + virtual AudioInputStream* MakeLinearInputStream( + const AudioParameters& params, const std::string& device_id) OVERRIDE { + return NULL; + } + virtual AudioInputStream* MakeLowLatencyInputStream( + const AudioParameters& params, const std::string& device_id) OVERRIDE { + return NULL; } virtual void MuteAll() OVERRIDE {} virtual void UnMuteAll() OVERRIDE {} |