Index: media/base/cdm_promise.h |
diff --git a/media/base/cdm_promise.h b/media/base/cdm_promise.h |
index 33ec042510c841baa7d6715dff94440d57032642..8e6703d0c7dd63c7074f272725781c73d0804d98 100644 |
--- a/media/base/cdm_promise.h |
+++ b/media/base/cdm_promise.h |
@@ -56,89 +56,74 @@ class MEDIA_EXPORT CdmPromise { |
uint32 system_code, |
const std::string& error_message); |
- virtual ResolveParameterType GetResolveParameterType() const = 0; |
+ ResolveParameterType GetResolveParameterType() const { |
+ return parameter_type_; |
+ } |
protected: |
- CdmPromise(); |
- CdmPromise(PromiseRejectedCB reject_cb); |
+ explicit CdmPromise(ResolveParameterType parameter_type); |
+ CdmPromise(ResolveParameterType parameter_type, PromiseRejectedCB reject_cb); |
xhwang
2014/09/22 20:55:31
In another CL, pass callbacks by const-ref?
jrummell
2014/09/22 23:57:32
Acknowledged.
|
// If constructed with a |uma_name| (which must be the name of a |
// CdmPromiseResult UMA), CdmPromise will report the promise result (success |
// or rejection code). |
- CdmPromise(PromiseRejectedCB reject_cb, const std::string& uma_name); |
+ CdmPromise(ResolveParameterType parameter_type, |
+ PromiseRejectedCB reject_cb, |
+ const std::string& uma_name); |
+ // Called by all resolve()/reject() methods to report the UMA result if |
+ // applicable, and update |is_pending_|. |
+ void ReportResultToUMA(ResultCodeForUMA result); |
+ |
+ const ResolveParameterType parameter_type_; |
PromiseRejectedCB reject_cb_; |
// Keep track of whether the promise hasn't been resolved or rejected yet. |
bool is_pending_; |
- // UMA to report result to. |
+ // UMA name to report result to. |
std::string uma_name_; |
DISALLOW_COPY_AND_ASSIGN(CdmPromise); |
}; |
-// Specialization for no parameter to resolve(). |
-template <> |
-class MEDIA_EXPORT CdmPromiseTemplate<void> : public CdmPromise { |
+template <typename T> |
+class MEDIA_EXPORT CdmPromiseTemplate : public CdmPromise { |
public: |
- CdmPromiseTemplate(base::Callback<void(void)> resolve_cb, |
+ CdmPromiseTemplate(base::Callback<void(const T&)> resolve_cb, |
PromiseRejectedCB rejected_cb); |
xhwang
2014/09/22 20:55:31
ditto: pass both callbacks in const-ref?
jrummell
2014/09/22 23:57:32
Acknowledged.
|
- CdmPromiseTemplate(base::Callback<void(void)> resolve_cb, |
+ CdmPromiseTemplate(base::Callback<void(const T&)> resolve_cb, |
PromiseRejectedCB rejected_cb, |
const std::string& uma_name); |
- virtual ~CdmPromiseTemplate(); |
- virtual void resolve(); |
- virtual ResolveParameterType GetResolveParameterType() const OVERRIDE; |
+ virtual void resolve(const T& result); |
protected: |
// Allow subclasses to completely override the implementation. |
CdmPromiseTemplate(); |
private: |
- base::Callback<void(void)> resolve_cb_; |
+ base::Callback<void(const T&)> resolve_cb_; |
DISALLOW_COPY_AND_ASSIGN(CdmPromiseTemplate); |
}; |
+// Specialization for no parameter to resolve(). |
template <> |
-class MEDIA_EXPORT CdmPromiseTemplate<std::string> : public CdmPromise { |
+class MEDIA_EXPORT CdmPromiseTemplate<void> : public CdmPromise { |
public: |
- CdmPromiseTemplate(base::Callback<void(const std::string&)> resolve_cb, |
+ CdmPromiseTemplate(base::Callback<void(void)> resolve_cb, |
PromiseRejectedCB rejected_cb); |
- CdmPromiseTemplate(base::Callback<void(const std::string&)> resolve_cb, |
+ CdmPromiseTemplate(base::Callback<void(void)> resolve_cb, |
PromiseRejectedCB rejected_cb, |
const std::string& uma_name); |
- virtual ~CdmPromiseTemplate(); |
- virtual void resolve(const std::string& result); |
- virtual ResolveParameterType GetResolveParameterType() const OVERRIDE; |
+ virtual void resolve(); |
protected: |
// Allow subclasses to completely override the implementation. |
- // TODO(jrummell): Remove when derived class SessionLoadedPromise |
- // (in ppapi_decryptor.cc) is no longer needed. |
CdmPromiseTemplate(); |
private: |
- base::Callback<void(const std::string&)> resolve_cb_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CdmPromiseTemplate); |
-}; |
- |
-template <> |
-class MEDIA_EXPORT CdmPromiseTemplate<KeyIdsVector> : public CdmPromise { |
- public: |
- CdmPromiseTemplate(base::Callback<void(const KeyIdsVector&)> resolve_cb, |
- PromiseRejectedCB rejected_cb); |
- CdmPromiseTemplate(base::Callback<void(const KeyIdsVector&)> resolve_cb, |
- PromiseRejectedCB rejected_cb, |
- const std::string& uma_name); |
- virtual ~CdmPromiseTemplate(); |
- virtual void resolve(const KeyIdsVector& result); |
- virtual ResolveParameterType GetResolveParameterType() const OVERRIDE; |
- |
- private: |
- base::Callback<void(const KeyIdsVector&)> resolve_cb_; |
+ base::Callback<void(void)> resolve_cb_; |
DISALLOW_COPY_AND_ASSIGN(CdmPromiseTemplate); |
}; |