OLD | NEW |
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/cdm/render_cdm_factory.h" | 5 #include "content/renderer/media/cdm/render_cdm_factory.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 28 matching lines...) Expand all Loading... |
39 RenderCdmFactory::~RenderCdmFactory() { | 39 RenderCdmFactory::~RenderCdmFactory() { |
40 DCHECK(thread_checker_.CalledOnValidThread()); | 40 DCHECK(thread_checker_.CalledOnValidThread()); |
41 } | 41 } |
42 | 42 |
43 void RenderCdmFactory::Create( | 43 void RenderCdmFactory::Create( |
44 const std::string& key_system, | 44 const std::string& key_system, |
45 const GURL& security_origin, | 45 const GURL& security_origin, |
46 const media::CdmConfig& cdm_config, | 46 const media::CdmConfig& cdm_config, |
47 const media::SessionMessageCB& session_message_cb, | 47 const media::SessionMessageCB& session_message_cb, |
48 const media::SessionClosedCB& session_closed_cb, | 48 const media::SessionClosedCB& session_closed_cb, |
49 const media::LegacySessionErrorCB& legacy_session_error_cb, | |
50 const media::SessionKeysChangeCB& session_keys_change_cb, | 49 const media::SessionKeysChangeCB& session_keys_change_cb, |
51 const media::SessionExpirationUpdateCB& session_expiration_update_cb, | 50 const media::SessionExpirationUpdateCB& session_expiration_update_cb, |
52 const media::CdmCreatedCB& cdm_created_cb) { | 51 const media::CdmCreatedCB& cdm_created_cb) { |
53 DCHECK(thread_checker_.CalledOnValidThread()); | 52 DCHECK(thread_checker_.CalledOnValidThread()); |
54 | 53 |
55 if (!security_origin.is_valid()) { | 54 if (!security_origin.is_valid()) { |
56 base::ThreadTaskRunnerHandle::Get()->PostTask( | 55 base::ThreadTaskRunnerHandle::Get()->PostTask( |
57 FROM_HERE, base::Bind(cdm_created_cb, nullptr, "Invalid origin.")); | 56 FROM_HERE, base::Bind(cdm_created_cb, nullptr, "Invalid origin.")); |
58 return; | 57 return; |
59 } | 58 } |
60 | 59 |
61 if (media::CanUseAesDecryptor(key_system)) { | 60 if (media::CanUseAesDecryptor(key_system)) { |
62 DCHECK(!cdm_config.allow_distinctive_identifier); | 61 DCHECK(!cdm_config.allow_distinctive_identifier); |
63 DCHECK(!cdm_config.allow_persistent_state); | 62 DCHECK(!cdm_config.allow_persistent_state); |
64 scoped_refptr<media::MediaKeys> cdm( | 63 scoped_refptr<media::MediaKeys> cdm( |
65 new media::AesDecryptor(security_origin, session_message_cb, | 64 new media::AesDecryptor(security_origin, session_message_cb, |
66 session_closed_cb, session_keys_change_cb)); | 65 session_closed_cb, session_keys_change_cb)); |
67 base::ThreadTaskRunnerHandle::Get()->PostTask( | 66 base::ThreadTaskRunnerHandle::Get()->PostTask( |
68 FROM_HERE, base::Bind(cdm_created_cb, cdm, "")); | 67 FROM_HERE, base::Bind(cdm_created_cb, cdm, "")); |
69 return; | 68 return; |
70 } | 69 } |
71 | 70 |
72 #if defined(ENABLE_PEPPER_CDMS) | 71 #if defined(ENABLE_PEPPER_CDMS) |
73 DCHECK(!cdm_config.use_hw_secure_codecs); | 72 DCHECK(!cdm_config.use_hw_secure_codecs); |
74 PpapiDecryptor::Create( | 73 PpapiDecryptor::Create( |
75 key_system, security_origin, cdm_config.allow_distinctive_identifier, | 74 key_system, security_origin, cdm_config.allow_distinctive_identifier, |
76 cdm_config.allow_persistent_state, create_pepper_cdm_cb_, | 75 cdm_config.allow_persistent_state, create_pepper_cdm_cb_, |
77 session_message_cb, session_closed_cb, legacy_session_error_cb, | 76 session_message_cb, session_closed_cb, session_keys_change_cb, |
78 session_keys_change_cb, session_expiration_update_cb, cdm_created_cb); | 77 session_expiration_update_cb, cdm_created_cb); |
79 #elif defined(ENABLE_BROWSER_CDMS) | 78 #elif defined(ENABLE_BROWSER_CDMS) |
80 DCHECK(cdm_config.allow_distinctive_identifier); | 79 DCHECK(cdm_config.allow_distinctive_identifier); |
81 DCHECK(cdm_config.allow_persistent_state); | 80 DCHECK(cdm_config.allow_persistent_state); |
82 ProxyMediaKeys::Create( | 81 ProxyMediaKeys::Create( |
83 key_system, security_origin, cdm_config.use_hw_secure_codecs, manager_, | 82 key_system, security_origin, cdm_config.use_hw_secure_codecs, manager_, |
84 session_message_cb, session_closed_cb, legacy_session_error_cb, | 83 session_message_cb, session_closed_cb, session_keys_change_cb, |
85 session_keys_change_cb, session_expiration_update_cb, cdm_created_cb); | 84 session_expiration_update_cb, cdm_created_cb); |
86 #else | 85 #else |
87 // No possible CDM to create, so fail the request. | 86 // No possible CDM to create, so fail the request. |
88 base::ThreadTaskRunnerHandle::Get()->PostTask( | 87 base::ThreadTaskRunnerHandle::Get()->PostTask( |
89 FROM_HERE, | 88 FROM_HERE, |
90 base::Bind(cdm_created_cb, nullptr, "Key system not supported.")); | 89 base::Bind(cdm_created_cb, nullptr, "Key system not supported.")); |
91 #endif // defined(ENABLE_PEPPER_CDMS) | 90 #endif // defined(ENABLE_PEPPER_CDMS) |
92 } | 91 } |
93 | 92 |
94 } // namespace content | 93 } // namespace content |
OLD | NEW |