| Index: media/audio/audio_manager.cc
|
| diff --git a/media/audio/audio_manager.cc b/media/audio/audio_manager.cc
|
| index 573102a0410b2ca20e8f748ca6a20e068121d07d..ce415755203f12a6caa15c4f1e6f57dfede32518 100644
|
| --- a/media/audio/audio_manager.cc
|
| +++ b/media/audio/audio_manager.cc
|
| @@ -20,7 +20,6 @@
|
| #include "base/power_monitor/power_monitor.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "build/build_config.h"
|
| -#include "media/audio/audio_manager_factory.h"
|
| #include "media/audio/fake_audio_log_factory.h"
|
| #include "media/base/media_resources.h"
|
| #include "media/base/media_switches.h"
|
| @@ -36,13 +35,6 @@ namespace {
|
| // The singleton instance of AudioManager. This is set when Create() is called.
|
| AudioManager* g_last_created = nullptr;
|
|
|
| -// The singleton instance of AudioManagerFactory. This is only set if
|
| -// SetFactory() is called. If it is set when Create() is called, its
|
| -// CreateInstance() function is used to set |g_last_created|. Otherwise, the
|
| -// linked implementation of media::CreateAudioManager is used to set
|
| -// |g_last_created|.
|
| -AudioManagerFactory* g_audio_manager_factory = nullptr;
|
| -
|
| // Maximum number of failed pings to the audio thread allowed. A UMA will be
|
| // recorded once this count is reached; if enabled, a non-crash dump will be
|
| // captured as well. We require at least three failed pings before recording to
|
| @@ -73,9 +65,8 @@ class AudioManagerHelper : public base::PowerObserver {
|
| scoped_refptr<base::SingleThreadTaskRunner> monitor_task_runner) {
|
| CHECK(!monitor_task_runner_);
|
| CHECK(!audio_task_runner_);
|
| - CHECK(g_last_created);
|
| monitor_task_runner_ = std::move(monitor_task_runner);
|
| - audio_task_runner_ = g_last_created->GetTaskRunner();
|
| + audio_task_runner_ = AudioManager::Get()->GetTaskRunner();
|
| base::PowerMonitor::Get()->AddObserver(this);
|
|
|
| io_task_running_ = audio_task_running_ = true;
|
| @@ -316,44 +307,14 @@ AudioManager::~AudioManager() {
|
| }
|
|
|
| // static
|
| -void AudioManager::SetFactory(AudioManagerFactory* factory) {
|
| - CHECK(factory);
|
| - CHECK(!g_last_created);
|
| - CHECK(!g_audio_manager_factory);
|
| - g_audio_manager_factory = factory;
|
| -}
|
| -
|
| -// static
|
| -void AudioManager::ResetFactoryForTesting() {
|
| - if (g_audio_manager_factory) {
|
| - delete g_audio_manager_factory;
|
| - g_audio_manager_factory = nullptr;
|
| - }
|
| -}
|
| -
|
| -// static
|
| ScopedAudioManagerPtr AudioManager::Create(
|
| scoped_refptr<base::SingleThreadTaskRunner> task_runner,
|
| scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner,
|
| - scoped_refptr<base::SingleThreadTaskRunner> monitor_task_runner,
|
| AudioLogFactory* audio_log_factory) {
|
| DCHECK(task_runner);
|
| DCHECK(worker_task_runner);
|
| - ScopedAudioManagerPtr manager;
|
| - if (g_audio_manager_factory) {
|
| - manager = g_audio_manager_factory->CreateInstance(
|
| - std::move(task_runner), std::move(worker_task_runner),
|
| - audio_log_factory);
|
| - } else {
|
| - manager =
|
| - CreateAudioManager(std::move(task_runner),
|
| - std::move(worker_task_runner), audio_log_factory);
|
| - }
|
| -
|
| - if (monitor_task_runner)
|
| - g_helper.Pointer()->StartHangTimer(std::move(monitor_task_runner));
|
| -
|
| - return manager;
|
| + return CreateAudioManager(std::move(task_runner),
|
| + std::move(worker_task_runner), audio_log_factory);
|
| }
|
|
|
| // static
|
| @@ -362,11 +323,21 @@ ScopedAudioManagerPtr AudioManager::CreateForTesting(
|
| #if defined(OS_WIN)
|
| g_helper.Pointer()->InitializeCOMForTesting();
|
| #endif
|
| - return Create(task_runner, task_runner, nullptr,
|
| + return Create(task_runner, task_runner,
|
| g_helper.Pointer()->fake_log_factory());
|
| }
|
|
|
| // static
|
| +void AudioManager::StartHangMonitor(
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
|
| + DCHECK(AudioManager::Get());
|
| + DCHECK(task_runner);
|
| + DCHECK_NE(task_runner, AudioManager::Get()->GetTaskRunner());
|
| +
|
| + g_helper.Pointer()->StartHangTimer(std::move(task_runner));
|
| +}
|
| +
|
| +// static
|
| void AudioManager::EnableCrashKeyLoggingForAudioThreadHangs() {
|
| CHECK(!g_last_created);
|
| g_helper.Pointer()->enable_crash_key_logging();
|
|
|