Index: media/base/cdm_promise.h |
diff --git a/media/base/cdm_promise.h b/media/base/cdm_promise.h |
index 14f79f852d149a4a80471e823c873508ec10d8fc..33ec042510c841baa7d6715dff94440d57032642 100644 |
--- a/media/base/cdm_promise.h |
+++ b/media/base/cdm_promise.h |
@@ -35,6 +35,12 @@ class MEDIA_EXPORT CdmPromise { |
NUM_RESULT_CODES |
}; |
+ enum ResolveParameterType { |
+ VOID_TYPE, |
+ STRING_TYPE, |
+ KEY_IDS_VECTOR_TYPE |
+ }; |
+ |
typedef base::Callback<void(MediaKeys::Exception exception_code, |
uint32 system_code, |
const std::string& error_message)> |
@@ -50,6 +56,8 @@ class MEDIA_EXPORT CdmPromise { |
uint32 system_code, |
const std::string& error_message); |
+ virtual ResolveParameterType GetResolveParameterType() const = 0; |
+ |
protected: |
CdmPromise(); |
CdmPromise(PromiseRejectedCB reject_cb); |
@@ -70,47 +78,67 @@ class MEDIA_EXPORT CdmPromise { |
DISALLOW_COPY_AND_ASSIGN(CdmPromise); |
}; |
-template <typename T> |
-class MEDIA_EXPORT CdmPromiseTemplate : public CdmPromise { |
+// Specialization for no parameter to resolve(). |
+template <> |
+class MEDIA_EXPORT CdmPromiseTemplate<void> : public CdmPromise { |
public: |
- CdmPromiseTemplate(base::Callback<void(const T&)> resolve_cb, |
+ CdmPromiseTemplate(base::Callback<void(void)> resolve_cb, |
PromiseRejectedCB rejected_cb); |
- CdmPromiseTemplate(base::Callback<void(const T&)> resolve_cb, |
+ CdmPromiseTemplate(base::Callback<void(void)> resolve_cb, |
PromiseRejectedCB rejected_cb, |
const std::string& uma_name); |
virtual ~CdmPromiseTemplate(); |
- virtual void resolve(const T& result); |
+ virtual void resolve(); |
+ virtual ResolveParameterType GetResolveParameterType() const OVERRIDE; |
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 T&)> resolve_cb_; |
+ base::Callback<void(void)> resolve_cb_; |
DISALLOW_COPY_AND_ASSIGN(CdmPromiseTemplate); |
}; |
-// Specialization for no parameter to resolve(). |
template <> |
-class MEDIA_EXPORT CdmPromiseTemplate<void> : public CdmPromise { |
+class MEDIA_EXPORT CdmPromiseTemplate<std::string> : public CdmPromise { |
public: |
- CdmPromiseTemplate(base::Callback<void(void)> resolve_cb, |
+ CdmPromiseTemplate(base::Callback<void(const std::string&)> resolve_cb, |
PromiseRejectedCB rejected_cb); |
- CdmPromiseTemplate(base::Callback<void(void)> resolve_cb, |
+ CdmPromiseTemplate(base::Callback<void(const std::string&)> resolve_cb, |
PromiseRejectedCB rejected_cb, |
const std::string& uma_name); |
virtual ~CdmPromiseTemplate(); |
- virtual void resolve(); |
+ virtual void resolve(const std::string& result); |
+ virtual ResolveParameterType GetResolveParameterType() const OVERRIDE; |
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(void)> resolve_cb_; |
+ 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_; |
DISALLOW_COPY_AND_ASSIGN(CdmPromiseTemplate); |
}; |