chromium/chromecast/media/audio/cast_audio_manager_helper.cc

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chromecast/media/audio/cast_audio_manager_helper.h"

#include <utility>

#include "base/check.h"
#include "base/task/single_thread_task_runner.h"

namespace chromecast {
namespace media {

CastAudioManagerHelper::CastAudioManagerHelper(
    ::media::AudioManagerBase* audio_manager,
    Delegate* delegate,
    base::RepeatingCallback<CmaBackendFactory*()> backend_factory_getter,
    scoped_refptr<base::SingleThreadTaskRunner> media_task_runner)
    : audio_manager_(audio_manager),
      delegate_(delegate),
      backend_factory_getter_(std::move(backend_factory_getter)),
      media_task_runner_(std::move(media_task_runner)) {
  DCHECK(audio_manager_);
  DCHECK(delegate_);
  DCHECK(backend_factory_getter_);
}

CastAudioManagerHelper::~CastAudioManagerHelper() = default;

CmaBackendFactory* CastAudioManagerHelper::GetCmaBackendFactory() {
  if (!cma_backend_factory_)
    cma_backend_factory_ = backend_factory_getter_.Run();
  return cma_backend_factory_;
}

std::string CastAudioManagerHelper::GetSessionId(
    const std::string& audio_group_id) {
  return delegate_->GetSessionId(audio_group_id);
}

bool CastAudioManagerHelper::IsAudioOnlySession(const std::string& session_id) {
  return delegate_->IsAudioOnlySession(session_id);
}

bool CastAudioManagerHelper::IsGroup(const std::string& session_id) {
  return delegate_->IsGroup(session_id);
}

}  // namespace media
}  // namespace chromecast