| 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);
|
| };
|
|
|