Chromium Code Reviews| Index: chromecast/browser/media/cast_media_client_android.cc |
| diff --git a/chromecast/browser/media/cast_media_client_android.cc b/chromecast/browser/media/cast_media_client_android.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..11b8934a325c96685f04bf6488cbcd6f5d3b8c06 |
| --- /dev/null |
| +++ b/chromecast/browser/media/cast_media_client_android.cc |
| @@ -0,0 +1,57 @@ |
| +// Copyright 2015 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 "chromecast/browser/media/cast_media_client_android.h" |
| + |
| +#include <utility> |
| + |
| +#include "base/stl_util.h" |
| +#include "chromecast/media/base/key_systems_common.h" |
| +#include "chromecast/media/cdm/playready_drm_delegate_android.h" |
| +#include "components/cdm/browser/widevine_drm_delegate_android.h" |
| + |
| +namespace chromecast { |
| +namespace media { |
| + |
| +CastMediaClientAndroid::CastMediaClientAndroid() { |
| +#if defined(PLAYREADY_CDM_AVAILABLE) |
| + ::media::MediaDrmBridgeDelegate* playready_delegate = |
| + new PlayreadyDrmDelegateAndroid; |
| + mappings_.push_back(std::make_pair(kChromecastPlayreadyKeySystem, |
| + playready_delegate->GetUUID())); |
| + delegates_[playready_delegate->GetUUID()] = playready_delegate; |
| +#endif |
| + |
| +#if defined(WIDEVINE_CDM_AVAILABLE) |
| + // Note: MediaDrmBridge adds the Widevine UUID mapping automatically. |
| + delegates_[widevine_delegate->GetUUID()] = |
| + new cdm::WidevineDrmDelegateAndroid; |
|
xhwang
2015/04/24 04:52:23
ditto about new Foo().
gunsch
2015/04/27 23:44:11
Done.
|
| +#endif |
| + |
| + auto platform_mappings = GetPlatformKeySystemUUIDMappings(); |
| + mappings_.insert(mappings_.end(), |
| + platform_mappings.begin(), |
| + platform_mappings.end()); |
| +} |
| + |
| +CastMediaClientAndroid::~CastMediaClientAndroid() { |
| + STLDeleteContainerPairSecondPointers(delegates_.begin(), delegates_.end()); |
|
xhwang
2015/04/24 04:52:23
If you use ScopedPtrHashMap, then you don't need t
gunsch
2015/04/27 23:44:12
Unfortunately there's no hash function for std::ve
xhwang
2015/04/28 05:25:11
Acknowledged.
|
| +} |
| + |
| +std::vector<std::pair<std::string, std::vector<uint8_t>>> |
| +CastMediaClientAndroid::GetKeySystemUUIDMappings() const { |
| + return mappings_; |
| +} |
| + |
| +::media::MediaDrmBridgeDelegate* |
| +CastMediaClientAndroid::GetMediaDrmBridgeDelegate( |
| + const std::vector<uint8_t>& scheme_uuid) const { |
| + DelegateMap::const_iterator it = delegates_.find(scheme_uuid); |
| + if (it == delegates_.end()) |
| + return nullptr; |
| + return it->second; |
| +} |
| + |
| +} // namespace media |
| +} // namespace chromecast |