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

Side by Side Diff: media/mojo/services/mojo_cdm_service.cc

Issue 1004623009: media: Hook up ContentDecryptionModuleClient in mojo CDM service. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 "media/mojo/services/mojo_cdm_service.h" 5 #include "media/mojo/services/mojo_cdm_service.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "media/base/cdm_key_information.h" 8 #include "media/base/cdm_key_information.h"
9 #include "media/base/key_systems.h" 9 #include "media/base/key_systems.h"
10 #include "media/cdm/aes_decryptor.h" 10 #include "media/cdm/aes_decryptor.h"
11 #include "media/mojo/services/media_type_converters.h" 11 #include "media/mojo/services/media_type_converters.h"
12 #include "media/mojo/services/mojo_cdm_promise.h" 12 #include "media/mojo/services/mojo_cdm_promise.h"
13 #include "mojo/common/common_type_converters.h" 13 #include "mojo/common/common_type_converters.h"
14 #include "mojo/common/url_type_converters.h" 14 #include "mojo/common/url_type_converters.h"
15 15
16 namespace media { 16 namespace media {
17 17
18 typedef MojoCdmPromise<> SimpleMojoCdmPromise; 18 typedef MojoCdmPromise<> SimpleMojoCdmPromise;
19 typedef MojoCdmPromise<std::string> NewSessionMojoCdmPromise; 19 typedef MojoCdmPromise<std::string> NewSessionMojoCdmPromise;
20 20
21 MojoCdmService::MojoCdmService(const mojo::String& key_system) 21 MojoCdmService::MojoCdmService(const mojo::String& key_system)
22 : weak_factory_(this) { 22 : weak_factory_(this) {
23 base::WeakPtr<MojoCdmService> weak_this = weak_factory_.GetWeakPtr(); 23 base::WeakPtr<MojoCdmService> weak_this = weak_factory_.GetWeakPtr();
24 24
25 // TODO(xhwang): Client syntax has been removed, so a new mechanism for client
26 // discovery must be added to this interface. See http://crbug.com/451321.
27 NOTREACHED();
28
29 if (CanUseAesDecryptor(key_system)) { 25 if (CanUseAesDecryptor(key_system)) {
30 cdm_.reset(new AesDecryptor( 26 cdm_.reset(new AesDecryptor(
31 base::Bind(&MojoCdmService::OnSessionMessage, weak_this), 27 base::Bind(&MojoCdmService::OnSessionMessage, weak_this),
32 base::Bind(&MojoCdmService::OnSessionClosed, weak_this), 28 base::Bind(&MojoCdmService::OnSessionClosed, weak_this),
33 base::Bind(&MojoCdmService::OnSessionKeysChange, weak_this))); 29 base::Bind(&MojoCdmService::OnSessionKeysChange, weak_this)));
34 } 30 }
35 31
36 // TODO(xhwang): Check key system support in the app. 32 // TODO(xhwang): Check key system support in the app.
37 NOTREACHED(); 33 NOTREACHED();
38 } 34 }
39 35
40 MojoCdmService::~MojoCdmService() { 36 MojoCdmService::~MojoCdmService() {
41 } 37 }
42 38
39 void MojoCdmService::SetClient(mojo::ContentDecryptionModuleClientPtr client) {
40 client_ = client.Pass();
41 }
42
43 // mojo::MediaRenderer implementation. 43 // mojo::MediaRenderer implementation.
44 void MojoCdmService::SetServerCertificate( 44 void MojoCdmService::SetServerCertificate(
45 mojo::Array<uint8_t> certificate_data, 45 mojo::Array<uint8_t> certificate_data,
46 const mojo::Callback<void(mojo::CdmPromiseResultPtr)>& callback) { 46 const mojo::Callback<void(mojo::CdmPromiseResultPtr)>& callback) {
47 const std::vector<uint8_t>& certificate_data_vector = 47 const std::vector<uint8_t>& certificate_data_vector =
48 certificate_data.storage(); 48 certificate_data.storage();
49 cdm_->SetServerCertificate( 49 cdm_->SetServerCertificate(
50 certificate_data_vector.empty() ? nullptr : &certificate_data_vector[0], 50 certificate_data_vector.empty() ? nullptr : &certificate_data_vector[0],
51 certificate_data_vector.size(), 51 certificate_data_vector.size(),
52 scoped_ptr<SimpleCdmPromise>(new SimpleMojoCdmPromise(callback))); 52 scoped_ptr<SimpleCdmPromise>(new SimpleMojoCdmPromise(callback)));
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 void MojoCdmService::OnSessionError(const std::string& session_id, 146 void MojoCdmService::OnSessionError(const std::string& session_id,
147 MediaKeys::Exception exception, 147 MediaKeys::Exception exception,
148 uint32_t system_code, 148 uint32_t system_code,
149 const std::string& error_message) { 149 const std::string& error_message) {
150 client_->OnSessionError(session_id, 150 client_->OnSessionError(session_id,
151 static_cast<mojo::CdmException>(exception), 151 static_cast<mojo::CdmException>(exception),
152 system_code, error_message); 152 system_code, error_message);
153 } 153 }
154 154
155 } // namespace media 155 } // namespace media
OLDNEW
« media/mojo/services/mojo_cdm.cc ('K') | « media/mojo/services/mojo_cdm_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698