blob: 686173b0dfbf25a33ffdeebe7d7dbaf432f93f21 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/media_router/cast_modes_with_media_sources.h"
#include "base/stl_util.h"
namespace media_router {
CastModesWithMediaSources::CastModesWithMediaSources(const MediaSink& sink)
: sink_(sink) {}
CastModesWithMediaSources::CastModesWithMediaSources(
CastModesWithMediaSources&& other) = default;
CastModesWithMediaSources::~CastModesWithMediaSources() = default;
void CastModesWithMediaSources::AddSource(MediaCastMode cast_mode,
const MediaSource& source) {
cast_modes_[cast_mode].insert(source);
}
void CastModesWithMediaSources::RemoveSource(MediaCastMode cast_mode,
const MediaSource& source) {
const auto& cast_mode_it = cast_modes_.find(cast_mode);
if (cast_mode_it != cast_modes_.end()) {
auto& sources_for_cast_mode = cast_mode_it->second;
sources_for_cast_mode.erase(source);
if (sources_for_cast_mode.empty())
cast_modes_.erase(cast_mode);
}
}
bool CastModesWithMediaSources::HasSource(MediaCastMode cast_mode,
const MediaSource& source) const {
return base::ContainsKey(cast_modes_, cast_mode)
? base::ContainsKey(cast_modes_.at(cast_mode), source)
: false;
}
CastModeSet CastModesWithMediaSources::GetCastModes() const {
CastModeSet cast_mode_set;
for (const auto& cast_mode_pair : cast_modes_)
cast_mode_set.insert(cast_mode_pair.first);
return cast_mode_set;
}
bool CastModesWithMediaSources::IsEmpty() const {
return cast_modes_.empty();
}
} // namespace media_router