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

Side by Side Diff: media/cdm/ppapi/cdm_adapter.h

Issue 253313004: CdmAdapter: Add UMA for output protection queries and results. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments addressed Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | media/cdm/ppapi/cdm_adapter.cc » ('j') | media/cdm/ppapi/cdm_adapter.cc » ('J')
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 #ifndef MEDIA_CDM_PPAPI_CDM_ADAPTER_H_ 5 #ifndef MEDIA_CDM_PPAPI_CDM_ADAPTER_H_
6 #define MEDIA_CDM_PPAPI_CDM_ADAPTER_H_ 6 #define MEDIA_CDM_PPAPI_CDM_ADAPTER_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 const char* challenge, uint32_t challenge_length) OVERRIDE; 99 const char* challenge, uint32_t challenge_length) OVERRIDE;
100 virtual void EnableOutputProtection( 100 virtual void EnableOutputProtection(
101 uint32_t desired_protection_mask) OVERRIDE; 101 uint32_t desired_protection_mask) OVERRIDE;
102 virtual void QueryOutputProtectionStatus() OVERRIDE; 102 virtual void QueryOutputProtectionStatus() OVERRIDE;
103 virtual void OnDeferredInitializationDone( 103 virtual void OnDeferredInitializationDone(
104 cdm::StreamType stream_type, 104 cdm::StreamType stream_type,
105 cdm::Status decoder_status) OVERRIDE; 105 cdm::Status decoder_status) OVERRIDE;
106 virtual cdm::FileIO* CreateFileIO(cdm::FileIOClient* client) OVERRIDE; 106 virtual cdm::FileIO* CreateFileIO(cdm::FileIOClient* client) OVERRIDE;
107 107
108 private: 108 private:
109 // These are reported to UMA server. Do not change the existing values!
110 enum OutputProtectionStatus {
111 OUTPUT_PROTECTION_QUERIED = 0,
ddorwin 2014/04/30 23:13:35 It seems odd to have the "total" value in the same
xhwang 2014/04/30 23:48:16 Agreed. But that makes it harder to dig out data.
112 OUTPUT_PROTECTION_QUERY_ERROR = 1,
ddorwin 2014/04/30 23:13:35 This is not "positive". Should we just consider th
xhwang 2014/04/30 23:48:16 Done.
113 OUTPUT_PROTECTION_NO_EXTERNAL_LINK = 2,
114 OUTPUT_PROTECTION_ALL_EXTERNAL_LINKS_PROTECTED = 3,
115 OUTPUT_PROTECTION_MAX = 4
116 };
117
109 typedef linked_ptr<DecryptedBlockImpl> LinkedDecryptedBlock; 118 typedef linked_ptr<DecryptedBlockImpl> LinkedDecryptedBlock;
110 typedef linked_ptr<VideoFrameImpl> LinkedVideoFrame; 119 typedef linked_ptr<VideoFrameImpl> LinkedVideoFrame;
111 typedef linked_ptr<AudioFramesImpl> LinkedAudioFrames; 120 typedef linked_ptr<AudioFramesImpl> LinkedAudioFrames;
112 121
113 bool CreateCdmInstance(const std::string& key_system); 122 bool CreateCdmInstance(const std::string& key_system);
114 123
115 // <code>PPB_ContentDecryptor_Private</code> dispatchers. These are passed to 124 // <code>PPB_ContentDecryptor_Private</code> dispatchers. These are passed to
116 // <code>callback_factory_</code> to ensure that calls into 125 // <code>callback_factory_</code> to ensure that calls into
117 // <code>PPP_ContentDecryptor_Private</code> are asynchronous. 126 // <code>PPP_ContentDecryptor_Private</code> are asynchronous.
118 void SendSessionCreatedInternal(int32_t result, 127 void SendSessionCreatedInternal(int32_t result,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 bool IsValidVideoFrame(const LinkedVideoFrame& video_frame); 167 bool IsValidVideoFrame(const LinkedVideoFrame& video_frame);
159 168
160 #if !defined(NDEBUG) 169 #if !defined(NDEBUG)
161 // Logs the given message to the JavaScript console associated with the 170 // Logs the given message to the JavaScript console associated with the
162 // CDM adapter instance. The name of the CDM adapter issuing the log message 171 // CDM adapter instance. The name of the CDM adapter issuing the log message
163 // will be automatically prepended to the message. 172 // will be automatically prepended to the message.
164 void LogToConsole(const pp::Var& value); 173 void LogToConsole(const pp::Var& value);
165 #endif // !defined(NDEBUG) 174 #endif // !defined(NDEBUG)
166 175
167 #if defined(OS_CHROMEOS) 176 #if defined(OS_CHROMEOS)
177 void ReportOutputProtectionStatus(OutputProtectionStatus status);
178 void ReportOutputProtectionQueryResult(int32_t result);
179
168 void SendPlatformChallengeDone(int32_t result); 180 void SendPlatformChallengeDone(int32_t result);
169 void EnableProtectionDone(int32_t result); 181 void EnableProtectionDone(int32_t result);
170 void QueryOutputProtectionStatusDone(int32_t result); 182 void QueryOutputProtectionStatusDone(int32_t result);
171 183
172 pp::OutputProtection_Private output_protection_; 184 pp::OutputProtection_Private output_protection_;
173 pp::PlatformVerification platform_verification_; 185 pp::PlatformVerification platform_verification_;
174 186
175 // Since PPAPI doesn't provide handlers for CompletionCallbacks with more than 187 // Since PPAPI doesn't provide handlers for CompletionCallbacks with more than
176 // one output we need to manage our own. These values are only read by 188 // one output we need to manage our own. These values are only read by
177 // SendPlatformChallengeDone(). 189 // SendPlatformChallengeDone().
178 pp::Var signed_data_output_; 190 pp::Var signed_data_output_;
179 pp::Var signed_data_signature_output_; 191 pp::Var signed_data_signature_output_;
180 pp::Var platform_key_certificate_output_; 192 pp::Var platform_key_certificate_output_;
181 bool challenge_in_progress_; 193 bool challenge_in_progress_;
182 194
183 // Same as above, these are only read by QueryOutputProtectionStatusDone(). 195 // Same as above, these are only read by QueryOutputProtectionStatusDone().
184 uint32_t output_link_mask_; 196 uint32_t output_link_mask_;
185 uint32_t output_protection_mask_; 197 uint32_t output_protection_mask_;
186 bool query_output_protection_in_progress_; 198 bool query_output_protection_in_progress_;
199
200 // We report the following stats to UMA:
201 // - Whether output protection has been queried.
202 // - Whether a positive result (no unprotected external link) is returned.
ddorwin 2014/04/30 23:13:35 What about QUERY_ERROR? That's not positive. "Whe
xhwang 2014/04/30 23:48:16 Done.
203 // The following two variables help track the status of the UMA reporting.
204 bool uma_for_output_protection_query_reported_;
205 bool uma_for_output_protection_positive_result_reported_;
187 #endif 206 #endif
188 207
189 PpbBufferAllocator allocator_; 208 PpbBufferAllocator allocator_;
190 pp::CompletionCallbackFactory<CdmAdapter> callback_factory_; 209 pp::CompletionCallbackFactory<CdmAdapter> callback_factory_;
191 linked_ptr<CdmWrapper> cdm_; 210 linked_ptr<CdmWrapper> cdm_;
192 std::string key_system_; 211 std::string key_system_;
193 212
194 // If the CDM returned kDeferredInitialization during InitializeAudioDecoder() 213 // If the CDM returned kDeferredInitialization during InitializeAudioDecoder()
195 // or InitializeVideoDecoder(), the (Audio|Video)DecoderConfig.request_id is 214 // or InitializeVideoDecoder(), the (Audio|Video)DecoderConfig.request_id is
196 // saved for the future call to OnDeferredInitializationDone(). 215 // saved for the future call to OnDeferredInitializationDone().
197 bool deferred_initialize_audio_decoder_; 216 bool deferred_initialize_audio_decoder_;
198 uint32_t deferred_audio_decoder_config_id_; 217 uint32_t deferred_audio_decoder_config_id_;
199 bool deferred_initialize_video_decoder_; 218 bool deferred_initialize_video_decoder_;
200 uint32_t deferred_video_decoder_config_id_; 219 uint32_t deferred_video_decoder_config_id_;
201 220
202 DISALLOW_COPY_AND_ASSIGN(CdmAdapter); 221 DISALLOW_COPY_AND_ASSIGN(CdmAdapter);
203 }; 222 };
204 223
205 } // namespace media 224 } // namespace media
206 225
207 #endif // MEDIA_CDM_PPAPI_CDM_ADAPTER_H_ 226 #endif // MEDIA_CDM_PPAPI_CDM_ADAPTER_H_
OLDNEW
« no previous file with comments | « no previous file | media/cdm/ppapi/cdm_adapter.cc » ('j') | media/cdm/ppapi/cdm_adapter.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698