| Index: media/cdm/player_tracker_impl.cc
|
| diff --git a/media/cdm/player_tracker_impl.cc b/media/cdm/player_tracker_impl.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..939e26536adc6605025bb3015136f83641f9ff7e
|
| --- /dev/null
|
| +++ b/media/cdm/player_tracker_impl.cc
|
| @@ -0,0 +1,53 @@
|
| +// Copyright 2014 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 "media/cdm/player_tracker_impl.h"
|
| +
|
| +#include <utility>
|
| +
|
| +#include "base/stl_util.h"
|
| +
|
| +namespace media {
|
| +
|
| +PlayerTrackerImpl::PlayerCallbacks::PlayerCallbacks(
|
| + base::Closure new_key_cb,
|
| + base::Closure cdm_destroyed_cb)
|
| + : new_key_cb(new_key_cb), cdm_destroyed_cb(cdm_destroyed_cb) {
|
| +}
|
| +
|
| +PlayerTrackerImpl::PlayerCallbacks::~PlayerCallbacks() {
|
| +}
|
| +
|
| +PlayerTrackerImpl::PlayerTrackerImpl() : next_registration_id_(1) {}
|
| +
|
| +PlayerTrackerImpl::~PlayerTrackerImpl() {}
|
| +
|
| +int PlayerTrackerImpl::RegisterPlayer(const base::Closure& new_key_cb,
|
| + const base::Closure& cdm_destroyed_cb) {
|
| + int registration_id = next_registration_id_++;
|
| + DCHECK(!ContainsKey(player_callbacks_map_, registration_id));
|
| + player_callbacks_map_.insert(std::make_pair(
|
| + registration_id, PlayerCallbacks(new_key_cb, cdm_destroyed_cb)));
|
| + return registration_id;
|
| +}
|
| +
|
| +void PlayerTrackerImpl::UnregisterPlayer(int registration_id) {
|
| + DCHECK(ContainsKey(player_callbacks_map_, registration_id))
|
| + << registration_id;
|
| + player_callbacks_map_.erase(registration_id);
|
| +}
|
| +
|
| +void PlayerTrackerImpl::NotifyNewKey() {
|
| + std::map<int, PlayerCallbacks>::iterator iter = player_callbacks_map_.begin();
|
| + for (; iter != player_callbacks_map_.end(); ++iter)
|
| + iter->second.new_key_cb.Run();
|
| +}
|
| +
|
| +void PlayerTrackerImpl::NotifyCdmDestroyed() {
|
| + std::map<int, PlayerCallbacks>::iterator iter = player_callbacks_map_.begin();
|
| + for (; iter != player_callbacks_map_.end(); ++iter)
|
| + iter->second.cdm_destroyed_cb.Run();
|
| +}
|
| +
|
| +} // namespace media
|
|
|