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

Side by Side Diff: media/blink/webcontentdecryptionmodulesession_impl.cc

Issue 878633004: Add additional UMAs to keep track of unprefixed EME promise results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 10 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
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "webcontentdecryptionmodulesession_impl.h" 5 #include "webcontentdecryptionmodulesession_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback_helpers.h" 8 #include "base/callback_helpers.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/numerics/safe_conversions.h" 10 #include "base/numerics/safe_conversions.h"
11 #include "base/strings/string_util.h" 11 #include "base/strings/string_util.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "media/base/cdm_key_information.h" 13 #include "media/base/cdm_key_information.h"
14 #include "media/base/cdm_promise.h" 14 #include "media/base/cdm_promise.h"
15 #include "media/base/media_keys.h" 15 #include "media/base/media_keys.h"
16 #include "media/blink/cdm_result_promise.h" 16 #include "media/blink/cdm_result_promise.h"
17 #include "media/blink/cdm_session_adapter.h" 17 #include "media/blink/cdm_session_adapter.h"
18 #include "media/blink/new_session_cdm_result_promise.h" 18 #include "media/blink/new_session_cdm_result_promise.h"
19 #include "third_party/WebKit/public/platform/WebData.h" 19 #include "third_party/WebKit/public/platform/WebData.h"
20 #include "third_party/WebKit/public/platform/WebEncryptedMediaKeyInformation.h" 20 #include "third_party/WebKit/public/platform/WebEncryptedMediaKeyInformation.h"
21 #include "third_party/WebKit/public/platform/WebString.h" 21 #include "third_party/WebKit/public/platform/WebString.h"
22 #include "third_party/WebKit/public/platform/WebURL.h" 22 #include "third_party/WebKit/public/platform/WebURL.h"
23 #include "third_party/WebKit/public/platform/WebVector.h" 23 #include "third_party/WebKit/public/platform/WebVector.h"
24 24
25 namespace media { 25 namespace media {
26 26
27 const char kCreateSessionUMAName[] = "CreateSession"; 27 const char kCloseSessionUMAName[] = "CloseSession";
28 const char kGenerateRequestUMAName[] = "GenerateRequest";
28 const char kLoadSessionUMAName[] = "LoadSession"; 29 const char kLoadSessionUMAName[] = "LoadSession";
30 const char kRemoveSessionUMAName[] = "RemoveSession";
31 const char kUpdateSessionUMAName[] = "UpdateSession";
29 32
30 // TODO(jrummell): Pass an enum from blink. http://crbug.com/418239. 33 // TODO(jrummell): Pass an enum from blink. http://crbug.com/418239.
31 const char kTemporarySessionType[] = "temporary"; 34 const char kTemporarySessionType[] = "temporary";
32 const char kPersistentLicenseSessionType[] = "persistent-license"; 35 const char kPersistentLicenseSessionType[] = "persistent-license";
33 const char kPersistentReleaseMessageSessionType[] = 36 const char kPersistentReleaseMessageSessionType[] =
34 "persistent-release-message"; 37 "persistent-release-message";
35 38
36 static blink::WebContentDecryptionModuleSession::Client::MessageType 39 static blink::WebContentDecryptionModuleSession::Client::MessageType
37 convertMessageType(MediaKeys::MessageType message_type) { 40 convertMessageType(MediaKeys::MessageType message_type) {
38 switch (message_type) { 41 switch (message_type) {
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 session_type_enum = MediaKeys::PERSISTENT_RELEASE_MESSAGE_SESSION; 144 session_type_enum = MediaKeys::PERSISTENT_RELEASE_MESSAGE_SESSION;
142 } else { 145 } else {
143 DCHECK(session_type == kTemporarySessionType); 146 DCHECK(session_type == kTemporarySessionType);
144 session_type_enum = MediaKeys::TEMPORARY_SESSION; 147 session_type_enum = MediaKeys::TEMPORARY_SESSION;
145 } 148 }
146 149
147 adapter_->InitializeNewSession( 150 adapter_->InitializeNewSession(
148 init_data_type_as_ascii, init_data, 151 init_data_type_as_ascii, init_data,
149 base::saturated_cast<int>(init_data_length), session_type_enum, 152 base::saturated_cast<int>(init_data_length), session_type_enum,
150 scoped_ptr<NewSessionCdmPromise>(new NewSessionCdmResultPromise( 153 scoped_ptr<NewSessionCdmPromise>(new NewSessionCdmResultPromise(
151 result, adapter_->GetKeySystemUMAPrefix() + kCreateSessionUMAName, 154 result, adapter_->GetKeySystemUMAPrefix() + kGenerateRequestUMAName,
152 base::Bind( 155 base::Bind(
153 &WebContentDecryptionModuleSessionImpl::OnSessionInitialized, 156 &WebContentDecryptionModuleSessionImpl::OnSessionInitialized,
154 base::Unretained(this))))); 157 base::Unretained(this)))));
155 } 158 }
156 159
157 void WebContentDecryptionModuleSessionImpl::load( 160 void WebContentDecryptionModuleSessionImpl::load(
158 const blink::WebString& session_id, 161 const blink::WebString& session_id,
159 blink::WebContentDecryptionModuleResult result) { 162 blink::WebContentDecryptionModuleResult result) {
160 DCHECK(!session_id.isEmpty()); 163 DCHECK(!session_id.isEmpty());
161 DCHECK(session_id_.empty()); 164 DCHECK(session_id_.empty());
162 165
163 // TODO(jrummell): Now that there are 2 types of persistent sessions, the 166 // TODO(jrummell): Now that there are 2 types of persistent sessions, the
164 // session type should be passed from blink. Type should also be passed in the 167 // session type should be passed from blink. Type should also be passed in the
165 // constructor (and removed from initializeNewSession()). 168 // constructor (and removed from initializeNewSession()).
166 adapter_->LoadSession( 169 adapter_->LoadSession(
167 MediaKeys::PERSISTENT_LICENSE_SESSION, base::UTF16ToASCII(session_id), 170 MediaKeys::PERSISTENT_LICENSE_SESSION, base::UTF16ToASCII(session_id),
168 scoped_ptr<NewSessionCdmPromise>(new NewSessionCdmResultPromise( 171 scoped_ptr<NewSessionCdmPromise>(new NewSessionCdmResultPromise(
169 result, adapter_->GetKeySystemUMAPrefix() + kLoadSessionUMAName, 172 result, adapter_->GetKeySystemUMAPrefix() + kLoadSessionUMAName,
170 base::Bind( 173 base::Bind(
171 &WebContentDecryptionModuleSessionImpl::OnSessionInitialized, 174 &WebContentDecryptionModuleSessionImpl::OnSessionInitialized,
172 base::Unretained(this))))); 175 base::Unretained(this)))));
173 } 176 }
174 177
175 void WebContentDecryptionModuleSessionImpl::update( 178 void WebContentDecryptionModuleSessionImpl::update(
176 const uint8* response, 179 const uint8* response,
177 size_t response_length, 180 size_t response_length,
178 blink::WebContentDecryptionModuleResult result) { 181 blink::WebContentDecryptionModuleResult result) {
179 DCHECK(response); 182 DCHECK(response);
180 DCHECK(!session_id_.empty()); 183 DCHECK(!session_id_.empty());
181 adapter_->UpdateSession(session_id_, response, 184 adapter_->UpdateSession(
182 base::saturated_cast<int>(response_length), 185 session_id_, response, base::saturated_cast<int>(response_length),
183 scoped_ptr<SimpleCdmPromise>( 186 scoped_ptr<SimpleCdmPromise>(new CdmResultPromise<>(
184 new CdmResultPromise<>(result, std::string()))); 187 result, adapter_->GetKeySystemUMAPrefix() + kUpdateSessionUMAName)));
185 } 188 }
186 189
187 void WebContentDecryptionModuleSessionImpl::close( 190 void WebContentDecryptionModuleSessionImpl::close(
188 blink::WebContentDecryptionModuleResult result) { 191 blink::WebContentDecryptionModuleResult result) {
189 DCHECK(!session_id_.empty()); 192 DCHECK(!session_id_.empty());
190 adapter_->CloseSession(session_id_, 193 adapter_->CloseSession(
191 scoped_ptr<SimpleCdmPromise>( 194 session_id_,
192 new CdmResultPromise<>(result, std::string()))); 195 scoped_ptr<SimpleCdmPromise>(new CdmResultPromise<>(
196 result, adapter_->GetKeySystemUMAPrefix() + kCloseSessionUMAName)));
193 } 197 }
194 198
195 void WebContentDecryptionModuleSessionImpl::remove( 199 void WebContentDecryptionModuleSessionImpl::remove(
196 blink::WebContentDecryptionModuleResult result) { 200 blink::WebContentDecryptionModuleResult result) {
197 DCHECK(!session_id_.empty()); 201 DCHECK(!session_id_.empty());
198 adapter_->RemoveSession(session_id_, 202 adapter_->RemoveSession(
199 scoped_ptr<SimpleCdmPromise>( 203 session_id_,
200 new CdmResultPromise<>(result, std::string()))); 204 scoped_ptr<SimpleCdmPromise>(new CdmResultPromise<>(
205 result, adapter_->GetKeySystemUMAPrefix() + kRemoveSessionUMAName)));
201 } 206 }
202 207
203 void WebContentDecryptionModuleSessionImpl::release( 208 void WebContentDecryptionModuleSessionImpl::release(
204 blink::WebContentDecryptionModuleResult result) { 209 blink::WebContentDecryptionModuleResult result) {
205 close(result); 210 close(result);
206 } 211 }
207 212
208 void WebContentDecryptionModuleSessionImpl::OnSessionMessage( 213 void WebContentDecryptionModuleSessionImpl::OnSessionMessage(
209 MediaKeys::MessageType message_type, 214 MediaKeys::MessageType message_type,
210 const std::vector<uint8>& message) { 215 const std::vector<uint8>& message) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 return blink::WebContentDecryptionModuleResult::SessionNotFound; 256 return blink::WebContentDecryptionModuleResult::SessionNotFound;
252 257
253 DCHECK(session_id_.empty()) << "Session ID may not be changed once set."; 258 DCHECK(session_id_.empty()) << "Session ID may not be changed once set.";
254 session_id_ = session_id; 259 session_id_ = session_id;
255 return adapter_->RegisterSession(session_id_, weak_ptr_factory_.GetWeakPtr()) 260 return adapter_->RegisterSession(session_id_, weak_ptr_factory_.GetWeakPtr())
256 ? blink::WebContentDecryptionModuleResult::NewSession 261 ? blink::WebContentDecryptionModuleResult::NewSession
257 : blink::WebContentDecryptionModuleResult::SessionAlreadyExists; 262 : blink::WebContentDecryptionModuleResult::SessionAlreadyExists;
258 } 263 }
259 264
260 } // namespace media 265 } // namespace media
OLDNEW
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698