| Index: media/base/cdm_promise.cc
|
| diff --git a/media/base/cdm_promise.cc b/media/base/cdm_promise.cc
|
| index 13ee760ad6caff189c8b38e50d5d74d3babe1c1c..74ff8bca68b1e93fc063e9b4fe1c63c45095f703 100644
|
| --- a/media/base/cdm_promise.cc
|
| +++ b/media/base/cdm_promise.cc
|
| @@ -63,34 +63,66 @@ void CdmPromise::reject(MediaKeys::Exception exception_code,
|
| reject_cb_.Run(exception_code, system_code, error_message);
|
| }
|
|
|
| -template <typename T>
|
| -CdmPromiseTemplate<T>::CdmPromiseTemplate(
|
| - base::Callback<void(const T&)> resolve_cb,
|
| +CdmPromiseTemplate<void>::CdmPromiseTemplate(base::Callback<void()> resolve_cb,
|
| + PromiseRejectedCB reject_cb)
|
| + : CdmPromise(reject_cb), resolve_cb_(resolve_cb) {
|
| + DCHECK(!resolve_cb_.is_null());
|
| +}
|
| +
|
| +CdmPromiseTemplate<void>::CdmPromiseTemplate(base::Callback<void()> resolve_cb,
|
| + PromiseRejectedCB reject_cb,
|
| + const std::string& uma_name)
|
| + : CdmPromise(reject_cb, uma_name), resolve_cb_(resolve_cb) {
|
| + DCHECK(!resolve_cb_.is_null());
|
| + DCHECK(!uma_name_.empty());
|
| +}
|
| +
|
| +CdmPromiseTemplate<void>::CdmPromiseTemplate() {
|
| +}
|
| +
|
| +CdmPromiseTemplate<void>::~CdmPromiseTemplate() {
|
| + DCHECK(!is_pending_);
|
| +}
|
| +
|
| +void CdmPromiseTemplate<void>::resolve() {
|
| + DCHECK(is_pending_);
|
| + is_pending_ = false;
|
| + if (!uma_name_.empty()) {
|
| + base::LinearHistogram::FactoryGet(
|
| + uma_name_, 1, NUM_RESULT_CODES, NUM_RESULT_CODES + 1,
|
| + base::HistogramBase::kUmaTargetedHistogramFlag)->Add(SUCCESS);
|
| + }
|
| + resolve_cb_.Run();
|
| +}
|
| +
|
| +CdmPromise::ResolveParameterType
|
| +CdmPromiseTemplate<void>::GetResolveParameterType() const {
|
| + return VOID_TYPE;
|
| +}
|
| +
|
| +CdmPromiseTemplate<std::string>::CdmPromiseTemplate(
|
| + base::Callback<void(const std::string&)> resolve_cb,
|
| PromiseRejectedCB reject_cb)
|
| : CdmPromise(reject_cb), resolve_cb_(resolve_cb) {
|
| DCHECK(!resolve_cb_.is_null());
|
| }
|
|
|
| -template <typename T>
|
| -CdmPromiseTemplate<T>::CdmPromiseTemplate(
|
| - base::Callback<void(const T&)> resolve_cb,
|
| +CdmPromiseTemplate<std::string>::CdmPromiseTemplate(
|
| + base::Callback<void(const std::string&)> resolve_cb,
|
| PromiseRejectedCB reject_cb,
|
| const std::string& uma_name)
|
| : CdmPromise(reject_cb, uma_name), resolve_cb_(resolve_cb) {
|
| DCHECK(!resolve_cb_.is_null());
|
| }
|
|
|
| -template <typename T>
|
| -CdmPromiseTemplate<T>::CdmPromiseTemplate() {
|
| +CdmPromiseTemplate<std::string>::CdmPromiseTemplate() {
|
| }
|
|
|
| -template <typename T>
|
| -CdmPromiseTemplate<T>::~CdmPromiseTemplate() {
|
| +CdmPromiseTemplate<std::string>::~CdmPromiseTemplate() {
|
| DCHECK(!is_pending_);
|
| }
|
|
|
| -template <typename T>
|
| -void CdmPromiseTemplate<T>::resolve(const T& result) {
|
| +void CdmPromiseTemplate<std::string>::resolve(const std::string& result) {
|
| DCHECK(is_pending_);
|
| is_pending_ = false;
|
| if (!uma_name_.empty()) {
|
| @@ -101,28 +133,31 @@ void CdmPromiseTemplate<T>::resolve(const T& result) {
|
| resolve_cb_.Run(result);
|
| }
|
|
|
| -CdmPromiseTemplate<void>::CdmPromiseTemplate(base::Callback<void()> resolve_cb,
|
| - PromiseRejectedCB reject_cb)
|
| +CdmPromise::ResolveParameterType
|
| +CdmPromiseTemplate<std::string>::GetResolveParameterType() const {
|
| + return STRING_TYPE;
|
| +}
|
| +
|
| +CdmPromiseTemplate<KeyIdsVector>::CdmPromiseTemplate(
|
| + base::Callback<void(const KeyIdsVector&)> resolve_cb,
|
| + PromiseRejectedCB reject_cb)
|
| : CdmPromise(reject_cb), resolve_cb_(resolve_cb) {
|
| DCHECK(!resolve_cb_.is_null());
|
| }
|
|
|
| -CdmPromiseTemplate<void>::CdmPromiseTemplate(base::Callback<void()> resolve_cb,
|
| - PromiseRejectedCB reject_cb,
|
| - const std::string& uma_name)
|
| +CdmPromiseTemplate<KeyIdsVector>::CdmPromiseTemplate(
|
| + base::Callback<void(const KeyIdsVector&)> resolve_cb,
|
| + PromiseRejectedCB reject_cb,
|
| + const std::string& uma_name)
|
| : CdmPromise(reject_cb, uma_name), resolve_cb_(resolve_cb) {
|
| DCHECK(!resolve_cb_.is_null());
|
| - DCHECK(!uma_name_.empty());
|
| }
|
|
|
| -CdmPromiseTemplate<void>::CdmPromiseTemplate() {
|
| -}
|
| -
|
| -CdmPromiseTemplate<void>::~CdmPromiseTemplate() {
|
| +CdmPromiseTemplate<KeyIdsVector>::~CdmPromiseTemplate() {
|
| DCHECK(!is_pending_);
|
| }
|
|
|
| -void CdmPromiseTemplate<void>::resolve() {
|
| +void CdmPromiseTemplate<KeyIdsVector>::resolve(const KeyIdsVector& result) {
|
| DCHECK(is_pending_);
|
| is_pending_ = false;
|
| if (!uma_name_.empty()) {
|
| @@ -130,11 +165,12 @@ void CdmPromiseTemplate<void>::resolve() {
|
| uma_name_, 1, NUM_RESULT_CODES, NUM_RESULT_CODES + 1,
|
| base::HistogramBase::kUmaTargetedHistogramFlag)->Add(SUCCESS);
|
| }
|
| - resolve_cb_.Run();
|
| + resolve_cb_.Run(result);
|
| }
|
|
|
| -// Explicit template instantiation for the Promises needed.
|
| -template class MEDIA_EXPORT CdmPromiseTemplate<std::string>;
|
| -template class MEDIA_EXPORT CdmPromiseTemplate<KeyIdsVector>;
|
| +CdmPromise::ResolveParameterType
|
| +CdmPromiseTemplate<KeyIdsVector>::GetResolveParameterType() const {
|
| + return KEY_IDS_VECTOR_TYPE;
|
| +}
|
|
|
| } // namespace media
|
|
|