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

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

Issue 1160983002: Allows support for persistent session types in BrowserCdm. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase conflicts with https://codereview.chromium.org/1166453002 Created 5 years, 6 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 "content/renderer/media/crypto/proxy_media_keys.h" 5 #include "content/renderer/media/crypto/proxy_media_keys.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 scoped_ptr<media::SimpleCdmPromise> promise) { 53 scoped_ptr<media::SimpleCdmPromise> promise) {
54 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); 54 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass());
55 manager_->SetServerCertificate(cdm_id_, promise_id, certificate); 55 manager_->SetServerCertificate(cdm_id_, promise_id, certificate);
56 } 56 }
57 57
58 void ProxyMediaKeys::CreateSessionAndGenerateRequest( 58 void ProxyMediaKeys::CreateSessionAndGenerateRequest(
59 SessionType session_type, 59 SessionType session_type,
60 media::EmeInitDataType init_data_type, 60 media::EmeInitDataType init_data_type,
61 const std::vector<uint8_t>& init_data, 61 const std::vector<uint8_t>& init_data,
62 scoped_ptr<media::NewSessionCdmPromise> promise) { 62 scoped_ptr<media::NewSessionCdmPromise> promise) {
63 if (session_type != media::MediaKeys::TEMPORARY_SESSION) {
64 promise->reject(NOT_SUPPORTED_ERROR, 0,
65 "Only the temporary session type is supported.");
66 return;
67 }
68
69 // TODO(xhwang): Move these checks up to blink and DCHECK here. 63 // TODO(xhwang): Move these checks up to blink and DCHECK here.
70 // See http://crbug.com/342510 64 // See http://crbug.com/342510
71 CdmHostMsg_CreateSession_InitDataType create_session_init_data_type = 65 CdmHostMsg_CreateSession_InitDataType create_session_init_data_type =
72 INIT_DATA_TYPE_WEBM; 66 INIT_DATA_TYPE_WEBM;
73 switch (init_data_type) { 67 switch (init_data_type) {
74 case media::EmeInitDataType::CENC: 68 case media::EmeInitDataType::CENC:
75 create_session_init_data_type = INIT_DATA_TYPE_CENC; 69 create_session_init_data_type = INIT_DATA_TYPE_CENC;
76 break; 70 break;
77 case media::EmeInitDataType::WEBM: 71 case media::EmeInitDataType::WEBM:
78 create_session_init_data_type = INIT_DATA_TYPE_WEBM; 72 create_session_init_data_type = INIT_DATA_TYPE_WEBM;
79 break; 73 break;
80 case media::EmeInitDataType::KEYIDS: 74 case media::EmeInitDataType::KEYIDS:
81 case media::EmeInitDataType::UNKNOWN: 75 case media::EmeInitDataType::UNKNOWN:
82 DLOG(ERROR) << "Unsupported EME CreateSession init data type"; 76 DLOG(ERROR) << "Unsupported EME CreateSession init data type";
83 promise->reject(NOT_SUPPORTED_ERROR, 0, 77 promise->reject(NOT_SUPPORTED_ERROR, 0,
84 "Unsupported EME CreateSession init data type"); 78 "Unsupported EME CreateSession init data type");
85 return; 79 return;
86 } 80 }
87 81
88 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); 82 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass());
89 manager_->CreateSessionAndGenerateRequest( 83 manager_->CreateSessionAndGenerateRequest(
90 cdm_id_, promise_id, create_session_init_data_type, init_data); 84 cdm_id_, promise_id, session_type, create_session_init_data_type,
85 init_data);
91 } 86 }
92 87
93 void ProxyMediaKeys::LoadSession( 88 void ProxyMediaKeys::LoadSession(
94 SessionType session_type, 89 SessionType session_type,
95 const std::string& session_id, 90 const std::string& session_id,
96 scoped_ptr<media::NewSessionCdmPromise> promise) { 91 scoped_ptr<media::NewSessionCdmPromise> promise) {
97 NOTREACHED() << "ProxyMediaKeys doesn't support persistent sessions."; 92 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass());
98 promise->reject(NOT_SUPPORTED_ERROR, 0, "LoadSession() is not supported."); 93 manager_->LoadSession(cdm_id_, promise_id, session_type, session_id);
99 } 94 }
100 95
101 void ProxyMediaKeys::UpdateSession( 96 void ProxyMediaKeys::UpdateSession(
102 const std::string& session_id, 97 const std::string& session_id,
103 const std::vector<uint8_t>& response, 98 const std::vector<uint8_t>& response,
104 scoped_ptr<media::SimpleCdmPromise> promise) { 99 scoped_ptr<media::SimpleCdmPromise> promise) {
105 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); 100 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass());
106 manager_->UpdateSession(cdm_id_, promise_id, session_id, response); 101 manager_->UpdateSession(cdm_id_, promise_id, session_id, response);
107 } 102 }
108 103
109 void ProxyMediaKeys::CloseSession(const std::string& session_id, 104 void ProxyMediaKeys::CloseSession(const std::string& session_id,
110 scoped_ptr<media::SimpleCdmPromise> promise) { 105 scoped_ptr<media::SimpleCdmPromise> promise) {
111 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); 106 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass());
112 manager_->CloseSession(cdm_id_, promise_id, session_id); 107 manager_->CloseSession(cdm_id_, promise_id, session_id);
113 } 108 }
114 109
115 void ProxyMediaKeys::RemoveSession( 110 void ProxyMediaKeys::RemoveSession(
116 const std::string& session_id, 111 const std::string& session_id,
117 scoped_ptr<media::SimpleCdmPromise> promise) { 112 scoped_ptr<media::SimpleCdmPromise> promise) {
118 NOTREACHED() << "ProxyMediaKeys doesn't support persistent sessions."; 113 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass());
119 promise->reject(NOT_SUPPORTED_ERROR, 0, "RemoveSession() not supported."); 114 manager_->RemoveSession(cdm_id_, promise_id, session_id);
120 } 115 }
121 116
122 media::CdmContext* ProxyMediaKeys::GetCdmContext() { 117 media::CdmContext* ProxyMediaKeys::GetCdmContext() {
123 return this; 118 return this;
124 } 119 }
125 120
126 media::Decryptor* ProxyMediaKeys::GetDecryptor() { 121 media::Decryptor* ProxyMediaKeys::GetDecryptor() {
127 return nullptr; 122 return nullptr;
128 } 123 }
129 124
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 const std::string& key_system, 198 const std::string& key_system,
204 const GURL& security_origin, 199 const GURL& security_origin,
205 bool use_hw_secure_codecs, 200 bool use_hw_secure_codecs,
206 scoped_ptr<media::SimpleCdmPromise> promise) { 201 scoped_ptr<media::SimpleCdmPromise> promise) {
207 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); 202 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass());
208 manager_->InitializeCdm(cdm_id_, promise_id, this, key_system, 203 manager_->InitializeCdm(cdm_id_, promise_id, this, key_system,
209 security_origin, use_hw_secure_codecs); 204 security_origin, use_hw_secure_codecs);
210 } 205 }
211 206
212 } // namespace content 207 } // namespace content
OLDNEW
« no previous file with comments | « content/common/media/cdm_messages.h ('k') | content/renderer/media/crypto/renderer_cdm_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698