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

Side by Side Diff: content/renderer/media/crypto/content_decryption_module_factory.cc

Issue 193523002: Encrypted Media: Implement IPC based SetCdm(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase only Created 6 years, 8 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
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 "content/renderer/media/crypto/content_decryption_module_factory.h" 5 #include "content/renderer/media/crypto/content_decryption_module_factory.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "content/renderer/media/crypto/key_systems.h" 8 #include "content/renderer/media/crypto/key_systems.h"
9 #include "media/cdm/aes_decryptor.h" 9 #include "media/cdm/aes_decryptor.h"
10 10
11 #if defined(ENABLE_PEPPER_CDMS) 11 #if defined(ENABLE_PEPPER_CDMS)
12 #include "content/renderer/media/crypto/ppapi_decryptor.h" 12 #include "content/renderer/media/crypto/ppapi_decryptor.h"
13 #include "content/renderer/pepper/pepper_plugin_instance_impl.h" 13 #include "content/renderer/pepper/pepper_plugin_instance_impl.h"
14 #include "content/renderer/pepper/pepper_webplugin_impl.h" 14 #include "content/renderer/pepper/pepper_webplugin_impl.h"
15 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" 15 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h"
16 #include "third_party/WebKit/public/platform/WebString.h" 16 #include "third_party/WebKit/public/platform/WebString.h"
17 #include "third_party/WebKit/public/web/WebFrame.h" 17 #include "third_party/WebKit/public/web/WebFrame.h"
18 #elif defined(OS_ANDROID) 18 #elif defined(OS_ANDROID)
19 #include "content/renderer/media/android/proxy_media_keys.h" 19 #include "content/renderer/media/android/proxy_media_keys.h"
20 #include "content/renderer/media/android/renderer_media_player_manager.h"
21 #endif // defined(ENABLE_PEPPER_CDMS) 20 #endif // defined(ENABLE_PEPPER_CDMS)
22 21
23 namespace content { 22 namespace content {
24 23
25 scoped_ptr<media::MediaKeys> ContentDecryptionModuleFactory::Create( 24 scoped_ptr<media::MediaKeys> ContentDecryptionModuleFactory::Create(
26 const std::string& key_system, 25 const std::string& key_system,
27 #if defined(ENABLE_PEPPER_CDMS) 26 #if defined(ENABLE_PEPPER_CDMS)
28 const CreatePepperCdmCB& create_pepper_cdm_cb, 27 const CreatePepperCdmCB& create_pepper_cdm_cb,
29 #elif defined(OS_ANDROID) 28 #elif defined(OS_ANDROID)
30 RendererMediaPlayerManager* manager, 29 RendererMediaPlayerManager* manager,
31 int cdm_id,
32 const GURL& frame_url, 30 const GURL& frame_url,
31 int* cdm_id,
33 #endif // defined(ENABLE_PEPPER_CDMS) 32 #endif // defined(ENABLE_PEPPER_CDMS)
34 const media::SessionCreatedCB& session_created_cb, 33 const media::SessionCreatedCB& session_created_cb,
35 const media::SessionMessageCB& session_message_cb, 34 const media::SessionMessageCB& session_message_cb,
36 const media::SessionReadyCB& session_ready_cb, 35 const media::SessionReadyCB& session_ready_cb,
37 const media::SessionClosedCB& session_closed_cb, 36 const media::SessionClosedCB& session_closed_cb,
38 const media::SessionErrorCB& session_error_cb) { 37 const media::SessionErrorCB& session_error_cb) {
39 if (CanUseAesDecryptor(key_system)) { 38 if (CanUseAesDecryptor(key_system)) {
40 return scoped_ptr<media::MediaKeys>( 39 return scoped_ptr<media::MediaKeys>(
dcheng 2014/03/28 20:59:06 It might be nice to explicitly set cdm_id = kInval
xhwang 2014/03/28 21:38:16 cdm_id is only used in android code, where we alwa
dcheng 2014/03/28 21:42:50 Are you saying clear key (I'm assuming this is wha
xhwang 2014/03/28 22:28:37 Ah, you are right. I had this in earlier PS then g
41 new media::AesDecryptor(session_created_cb, 40 new media::AesDecryptor(session_created_cb,
42 session_message_cb, 41 session_message_cb,
43 session_ready_cb, 42 session_ready_cb,
44 session_closed_cb, 43 session_closed_cb,
45 session_error_cb)); 44 session_error_cb));
46 } 45 }
47
48 #if defined(ENABLE_PEPPER_CDMS) 46 #if defined(ENABLE_PEPPER_CDMS)
49 return scoped_ptr<media::MediaKeys>( 47 return scoped_ptr<media::MediaKeys>(
50 PpapiDecryptor::Create(key_system, 48 PpapiDecryptor::Create(key_system,
51 create_pepper_cdm_cb, 49 create_pepper_cdm_cb,
52 session_created_cb, 50 session_created_cb,
53 session_message_cb, 51 session_message_cb,
54 session_ready_cb, 52 session_ready_cb,
55 session_closed_cb, 53 session_closed_cb,
56 session_error_cb)); 54 session_error_cb));
57 #elif defined(OS_ANDROID) 55 #elif defined(OS_ANDROID)
58 scoped_ptr<ProxyMediaKeys> proxy_media_keys( 56 scoped_ptr<ProxyMediaKeys> proxy_media_keys(
59 new ProxyMediaKeys(manager, 57 new ProxyMediaKeys(manager,
60 cdm_id,
61 session_created_cb, 58 session_created_cb,
62 session_message_cb, 59 session_message_cb,
63 session_ready_cb, 60 session_ready_cb,
64 session_closed_cb, 61 session_closed_cb,
65 session_error_cb)); 62 session_error_cb));
66 proxy_media_keys->InitializeCdm(key_system, frame_url); 63 proxy_media_keys->InitializeCdm(key_system, frame_url);
64 *cdm_id = proxy_media_keys->GetCdmId();
67 return proxy_media_keys.PassAs<media::MediaKeys>(); 65 return proxy_media_keys.PassAs<media::MediaKeys>();
68 #else 66 #else
69 return scoped_ptr<media::MediaKeys>(); 67 return scoped_ptr<media::MediaKeys>();
70 #endif // defined(ENABLE_PEPPER_CDMS) 68 #endif // defined(ENABLE_PEPPER_CDMS)
71 } 69 }
72 70
73 } // namespace content 71 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698