Index: media/base/cdm_promise.h |
diff --git a/media/base/cdm_promise.h b/media/base/cdm_promise.h |
index ad1d196ad6e003f2fcb86be2c8ec6ae07e51db35..2d45cf2a15db55d81ce68a81f63453d0c4946e42 100644 |
--- a/media/base/cdm_promise.h |
+++ b/media/base/cdm_promise.h |
@@ -22,6 +22,19 @@ namespace media { |
// This is only the base class, as parameter to resolve() varies. |
class MEDIA_EXPORT CdmPromise { |
public: |
+ // A superset of media::MediaKeys::Exception for UMA reporting. |
+ enum ResultCodeForUMA { |
+ SUCCESS, |
+ NOT_SUPPORTED_ERROR, |
+ INVALID_STATE_ERROR, |
+ INVALID_ACCESS_ERROR, |
+ QUOTA_EXCEEDED_ERROR, |
+ UNKNOWN_ERROR, |
+ CLIENT_ERROR, |
+ OUTPUT_ERROR, |
+ NUM_RESULT_CODES |
+ }; |
+ |
typedef base::Callback<void(MediaKeys::Exception exception_code, |
uint32 system_code, |
const std::string& error_message)> |
@@ -41,11 +54,19 @@ class MEDIA_EXPORT CdmPromise { |
CdmPromise(); |
CdmPromise(PromiseRejectedCB reject_cb); |
+ // 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); |
+ |
PromiseRejectedCB reject_cb_; |
// Keep track of whether the promise hasn't been resolved or rejected yet. |
bool is_pending_; |
+ // UMA to report result to. |
+ std::string uma_name_; |
+ |
DISALLOW_COPY_AND_ASSIGN(CdmPromise); |
}; |
@@ -54,6 +75,9 @@ class MEDIA_EXPORT CdmPromiseTemplate : public CdmPromise { |
public: |
CdmPromiseTemplate(base::Callback<void(const T&)> resolve_cb, |
PromiseRejectedCB rejected_cb); |
+ CdmPromiseTemplate(base::Callback<void(const T&)> resolve_cb, |
+ PromiseRejectedCB rejected_cb, |
+ const std::string& uma_name); |
virtual ~CdmPromiseTemplate(); |
virtual void resolve(const T& result); |
@@ -69,6 +93,9 @@ class MEDIA_EXPORT CdmPromiseTemplate<void> : public CdmPromise { |
public: |
CdmPromiseTemplate(base::Callback<void(void)> resolve_cb, |
PromiseRejectedCB rejected_cb); |
+ CdmPromiseTemplate(base::Callback<void(void)> resolve_cb, |
+ PromiseRejectedCB rejected_cb, |
+ const std::string& uma_name); |
virtual ~CdmPromiseTemplate(); |
virtual void resolve(); |