Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(497)

Side by Side Diff: media/base/cdm_promise.cc

Issue 567123002: Cleanup template in CdmPromise (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/base/cdm_promise.h" 5 #include "media/base/cdm_promise.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 10
11 namespace media { 11 namespace media {
12 12
13 CdmPromise::CdmPromise() : is_pending_(true) { 13 CdmPromise::CdmPromise() : is_pending_(true) {
14 } 14 }
15 15
16 CdmPromise::CdmPromise(PromiseRejectedCB reject_cb) 16 CdmPromise::CdmPromise(PromiseRejectedCB reject_cb)
17 : reject_cb_(reject_cb), is_pending_(true) { 17 : reject_cb_(reject_cb), is_pending_(true) {
18 DCHECK(!reject_cb_.is_null()); 18 DCHECK(!reject_cb_.is_null());
19 } 19 }
20 20
21 CdmPromise::CdmPromise(PromiseRejectedCB reject_cb, const std::string& uma_name) 21 CdmPromise::CdmPromise(PromiseRejectedCB reject_cb, const std::string& uma_name)
22 : reject_cb_(reject_cb), is_pending_(true), uma_name_(uma_name) { 22 : reject_cb_(reject_cb), is_pending_(true), uma_name_(uma_name) {
23 DCHECK(!reject_cb_.is_null()); 23 DCHECK(!reject_cb_.is_null());
24 DCHECK(!uma_name_.empty());
25 }
26
27 CdmPromise::CdmPromise(const std::string& uma_name)
28 : is_pending_(true), uma_name_(uma_name) {
29 DCHECK(!uma_name_.empty());
24 } 30 }
25 31
26 CdmPromise::~CdmPromise() { 32 CdmPromise::~CdmPromise() {
27 DCHECK(!is_pending_); 33 DCHECK(!is_pending_);
28 } 34 }
29 35
30 static CdmPromise::ResultCodeForUMA ConvertExceptionToUMAResult( 36 static CdmPromise::ResultCodeForUMA ConvertExceptionToUMAResult(
31 MediaKeys::Exception exception_code) { 37 MediaKeys::Exception exception_code) {
32 switch (exception_code) { 38 switch (exception_code) {
33 case MediaKeys::NOT_SUPPORTED_ERROR: 39 case MediaKeys::NOT_SUPPORTED_ERROR:
(...skipping 11 matching lines...) Expand all
45 case MediaKeys::OUTPUT_ERROR: 51 case MediaKeys::OUTPUT_ERROR:
46 return CdmPromise::OUTPUT_ERROR; 52 return CdmPromise::OUTPUT_ERROR;
47 } 53 }
48 NOTREACHED(); 54 NOTREACHED();
49 return CdmPromise::UNKNOWN_ERROR; 55 return CdmPromise::UNKNOWN_ERROR;
50 } 56 }
51 57
52 void CdmPromise::reject(MediaKeys::Exception exception_code, 58 void CdmPromise::reject(MediaKeys::Exception exception_code,
53 uint32 system_code, 59 uint32 system_code,
54 const std::string& error_message) { 60 const std::string& error_message) {
61 RejectBase(exception_code);
62 reject_cb_.Run(exception_code, system_code, error_message);
63 }
64
65 void CdmPromise::ResolveBase() {
55 DCHECK(is_pending_); 66 DCHECK(is_pending_);
56 is_pending_ = false; 67 is_pending_ = false;
57 if (!uma_name_.empty()) { 68 if (!uma_name_.empty()) {
69 base::LinearHistogram::FactoryGet(
70 uma_name_, 1, NUM_RESULT_CODES, NUM_RESULT_CODES + 1,
71 base::HistogramBase::kUmaTargetedHistogramFlag)->Add(SUCCESS);
72 }
73 }
74
75 void CdmPromise::RejectBase(MediaKeys::Exception exception_code) {
76 DCHECK(is_pending_);
77 is_pending_ = false;
78 if (!uma_name_.empty()) {
58 ResultCodeForUMA result_code = ConvertExceptionToUMAResult(exception_code); 79 ResultCodeForUMA result_code = ConvertExceptionToUMAResult(exception_code);
59 base::LinearHistogram::FactoryGet( 80 base::LinearHistogram::FactoryGet(
60 uma_name_, 1, NUM_RESULT_CODES, NUM_RESULT_CODES + 1, 81 uma_name_, 1, NUM_RESULT_CODES, NUM_RESULT_CODES + 1,
61 base::HistogramBase::kUmaTargetedHistogramFlag)->Add(result_code); 82 base::HistogramBase::kUmaTargetedHistogramFlag)->Add(result_code);
62 } 83 }
63 reject_cb_.Run(exception_code, system_code, error_message);
64 } 84 }
65 85
66 CdmPromiseTemplate<void>::CdmPromiseTemplate(base::Callback<void()> resolve_cb, 86 SimpleCdmPromise::SimpleCdmPromise(base::Callback<void()> resolve_cb,
67 PromiseRejectedCB reject_cb) 87 PromiseRejectedCB reject_cb)
68 : CdmPromise(reject_cb), resolve_cb_(resolve_cb) { 88 : CdmPromise(reject_cb), resolve_cb_(resolve_cb) {
69 DCHECK(!resolve_cb_.is_null()); 89 DCHECK(!resolve_cb_.is_null());
70 } 90 }
71 91
72 CdmPromiseTemplate<void>::CdmPromiseTemplate(base::Callback<void()> resolve_cb, 92 SimpleCdmPromise::SimpleCdmPromise(base::Callback<void()> resolve_cb,
73 PromiseRejectedCB reject_cb, 93 PromiseRejectedCB reject_cb,
74 const std::string& uma_name) 94 const std::string& uma_name)
75 : CdmPromise(reject_cb, uma_name), resolve_cb_(resolve_cb) { 95 : CdmPromise(reject_cb, uma_name), resolve_cb_(resolve_cb) {
76 DCHECK(!resolve_cb_.is_null()); 96 DCHECK(!resolve_cb_.is_null());
77 DCHECK(!uma_name_.empty());
78 } 97 }
79 98
80 CdmPromiseTemplate<void>::CdmPromiseTemplate() { 99 SimpleCdmPromise::SimpleCdmPromise() {
81 } 100 }
82 101
83 CdmPromiseTemplate<void>::~CdmPromiseTemplate() { 102 SimpleCdmPromise::SimpleCdmPromise(const std::string& uma_name)
103 : CdmPromise(uma_name) {
104 }
105
106 SimpleCdmPromise::~SimpleCdmPromise() {
84 DCHECK(!is_pending_); 107 DCHECK(!is_pending_);
85 } 108 }
86 109
87 void CdmPromiseTemplate<void>::resolve() { 110 void SimpleCdmPromise::resolve() {
88 DCHECK(is_pending_); 111 ResolveBase();
89 is_pending_ = false;
90 if (!uma_name_.empty()) {
91 base::LinearHistogram::FactoryGet(
92 uma_name_, 1, NUM_RESULT_CODES, NUM_RESULT_CODES + 1,
93 base::HistogramBase::kUmaTargetedHistogramFlag)->Add(SUCCESS);
94 }
95 resolve_cb_.Run(); 112 resolve_cb_.Run();
96 } 113 }
97 114
98 CdmPromise::ResolveParameterType 115 CdmPromise::ResolveParameterType SimpleCdmPromise::GetResolveParameterType()
99 CdmPromiseTemplate<void>::GetResolveParameterType() const { 116 const {
100 return VOID_TYPE; 117 return VOID_TYPE;
101 } 118 }
102 119
103 CdmPromiseTemplate<std::string>::CdmPromiseTemplate( 120 NewSessionCdmPromise::NewSessionCdmPromise(
104 base::Callback<void(const std::string&)> resolve_cb, 121 base::Callback<void(const std::string&)> resolve_cb,
105 PromiseRejectedCB reject_cb) 122 PromiseRejectedCB reject_cb)
106 : CdmPromise(reject_cb), resolve_cb_(resolve_cb) { 123 : CdmPromise(reject_cb), resolve_cb_(resolve_cb) {
107 DCHECK(!resolve_cb_.is_null()); 124 DCHECK(!resolve_cb_.is_null());
108 } 125 }
109 126
110 CdmPromiseTemplate<std::string>::CdmPromiseTemplate( 127 NewSessionCdmPromise::NewSessionCdmPromise(
111 base::Callback<void(const std::string&)> resolve_cb, 128 base::Callback<void(const std::string&)> resolve_cb,
112 PromiseRejectedCB reject_cb, 129 PromiseRejectedCB reject_cb,
113 const std::string& uma_name) 130 const std::string& uma_name)
114 : CdmPromise(reject_cb, uma_name), resolve_cb_(resolve_cb) { 131 : CdmPromise(reject_cb, uma_name), resolve_cb_(resolve_cb) {
115 DCHECK(!resolve_cb_.is_null()); 132 DCHECK(!resolve_cb_.is_null());
116 } 133 }
117 134
118 CdmPromiseTemplate<std::string>::CdmPromiseTemplate() { 135 NewSessionCdmPromise::NewSessionCdmPromise() {
119 } 136 }
120 137
121 CdmPromiseTemplate<std::string>::~CdmPromiseTemplate() { 138 NewSessionCdmPromise::NewSessionCdmPromise(const std::string& uma_name)
139 : CdmPromise(uma_name) {
140 }
141
142 NewSessionCdmPromise::~NewSessionCdmPromise() {
122 DCHECK(!is_pending_); 143 DCHECK(!is_pending_);
123 } 144 }
124 145
125 void CdmPromiseTemplate<std::string>::resolve(const std::string& result) { 146 void NewSessionCdmPromise::resolve(const std::string& result) {
126 DCHECK(is_pending_); 147 ResolveBase();
127 is_pending_ = false;
128 if (!uma_name_.empty()) {
129 base::LinearHistogram::FactoryGet(
130 uma_name_, 1, NUM_RESULT_CODES, NUM_RESULT_CODES + 1,
131 base::HistogramBase::kUmaTargetedHistogramFlag)->Add(SUCCESS);
132 }
133 resolve_cb_.Run(result); 148 resolve_cb_.Run(result);
134 } 149 }
135 150
136 CdmPromise::ResolveParameterType 151 CdmPromise::ResolveParameterType NewSessionCdmPromise::GetResolveParameterType()
137 CdmPromiseTemplate<std::string>::GetResolveParameterType() const { 152 const {
138 return STRING_TYPE; 153 return STRING_TYPE;
139 } 154 }
140 155
141 CdmPromiseTemplate<KeyIdsVector>::CdmPromiseTemplate( 156 KeyIdsPromise::KeyIdsPromise(
142 base::Callback<void(const KeyIdsVector&)> resolve_cb, 157 base::Callback<void(const KeyIdsVector&)> resolve_cb,
143 PromiseRejectedCB reject_cb) 158 PromiseRejectedCB reject_cb)
144 : CdmPromise(reject_cb), resolve_cb_(resolve_cb) { 159 : CdmPromise(reject_cb), resolve_cb_(resolve_cb) {
145 DCHECK(!resolve_cb_.is_null()); 160 DCHECK(!resolve_cb_.is_null());
146 } 161 }
147 162
148 CdmPromiseTemplate<KeyIdsVector>::CdmPromiseTemplate( 163 KeyIdsPromise::KeyIdsPromise(
149 base::Callback<void(const KeyIdsVector&)> resolve_cb, 164 base::Callback<void(const KeyIdsVector&)> resolve_cb,
150 PromiseRejectedCB reject_cb, 165 PromiseRejectedCB reject_cb,
151 const std::string& uma_name) 166 const std::string& uma_name)
152 : CdmPromise(reject_cb, uma_name), resolve_cb_(resolve_cb) { 167 : CdmPromise(reject_cb, uma_name), resolve_cb_(resolve_cb) {
153 DCHECK(!resolve_cb_.is_null()); 168 DCHECK(!resolve_cb_.is_null());
154 } 169 }
155 170
156 CdmPromiseTemplate<KeyIdsVector>::~CdmPromiseTemplate() { 171 KeyIdsPromise::KeyIdsPromise() {
172 }
173
174 KeyIdsPromise::KeyIdsPromise(const std::string& uma_name)
175 : CdmPromise(uma_name) {
176 }
177
178 KeyIdsPromise::~KeyIdsPromise() {
157 DCHECK(!is_pending_); 179 DCHECK(!is_pending_);
158 } 180 }
159 181
160 void CdmPromiseTemplate<KeyIdsVector>::resolve(const KeyIdsVector& result) { 182 void KeyIdsPromise::resolve(const KeyIdsVector& result) {
161 DCHECK(is_pending_); 183 ResolveBase();
162 is_pending_ = false;
163 if (!uma_name_.empty()) {
164 base::LinearHistogram::FactoryGet(
165 uma_name_, 1, NUM_RESULT_CODES, NUM_RESULT_CODES + 1,
166 base::HistogramBase::kUmaTargetedHistogramFlag)->Add(SUCCESS);
167 }
168 resolve_cb_.Run(result); 184 resolve_cb_.Run(result);
169 } 185 }
170 186
171 CdmPromise::ResolveParameterType 187 CdmPromise::ResolveParameterType KeyIdsPromise::GetResolveParameterType()
172 CdmPromiseTemplate<KeyIdsVector>::GetResolveParameterType() const { 188 const {
173 return KEY_IDS_VECTOR_TYPE; 189 return KEY_IDS_VECTOR_TYPE;
174 } 190 }
175 191
176 } // namespace media 192 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698