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

Side by Side Diff: chromecast/media/cdm/browser_cdm_cast.cc

Issue 1875623002: Convert //chromecast from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
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 "chromecast/media/cdm/browser_cdm_cast.h" 5 #include "chromecast/media/cdm/browser_cdm_cast.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h" 10 #include "base/location.h"
11 #include "base/memory/ptr_util.h"
11 #include "base/single_thread_task_runner.h" 12 #include "base/single_thread_task_runner.h"
12 #include "base/thread_task_runner_handle.h" 13 #include "base/thread_task_runner_handle.h"
13 #include "chromecast/media/base/media_resource_tracker.h" 14 #include "chromecast/media/base/media_resource_tracker.h"
14 #include "media/base/cdm_key_information.h" 15 #include "media/base/cdm_key_information.h"
15 #include "media/base/cdm_promise.h" 16 #include "media/base/cdm_promise.h"
16 #include "media/cdm/player_tracker_impl.h" 17 #include "media/cdm/player_tracker_impl.h"
17 18
18 namespace chromecast { 19 namespace chromecast {
19 namespace media { 20 namespace media {
20 21
21 namespace { 22 namespace {
22 23
23 // media::CdmPromiseTemplate implementation that wraps a promise so as to 24 // media::CdmPromiseTemplate implementation that wraps a promise so as to
24 // allow passing to other threads. 25 // allow passing to other threads.
25 template <typename... T> 26 template <typename... T>
26 class CdmPromiseInternal : public ::media::CdmPromiseTemplate<T...> { 27 class CdmPromiseInternal : public ::media::CdmPromiseTemplate<T...> {
27 public: 28 public:
28 CdmPromiseInternal(scoped_ptr<::media::CdmPromiseTemplate<T...>> promise) 29 CdmPromiseInternal(std::unique_ptr<::media::CdmPromiseTemplate<T...>> promise)
29 : task_runner_(base::ThreadTaskRunnerHandle::Get()), 30 : task_runner_(base::ThreadTaskRunnerHandle::Get()),
30 promise_(std::move(promise)) {} 31 promise_(std::move(promise)) {}
31 32
32 ~CdmPromiseInternal() final { 33 ~CdmPromiseInternal() final {
33 if (IsPromiseSettled()) 34 if (IsPromiseSettled())
34 return; 35 return;
35 36
36 DCHECK(promise_); 37 DCHECK(promise_);
37 RejectPromiseOnDestruction(); 38 RejectPromiseOnDestruction();
38 } 39 }
(...skipping 11 matching lines...) Expand all
50 base::Owned(promise_.release()), 51 base::Owned(promise_.release()),
51 exception, system_code, error_message)); 52 exception, system_code, error_message));
52 } 53 }
53 54
54 private: 55 private:
55 using ::media::CdmPromiseTemplate<T...>::IsPromiseSettled; 56 using ::media::CdmPromiseTemplate<T...>::IsPromiseSettled;
56 using ::media::CdmPromiseTemplate<T...>::MarkPromiseSettled; 57 using ::media::CdmPromiseTemplate<T...>::MarkPromiseSettled;
57 using ::media::CdmPromiseTemplate<T...>::RejectPromiseOnDestruction; 58 using ::media::CdmPromiseTemplate<T...>::RejectPromiseOnDestruction;
58 59
59 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 60 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
60 scoped_ptr<::media::CdmPromiseTemplate<T...>> promise_; 61 std::unique_ptr<::media::CdmPromiseTemplate<T...>> promise_;
61 }; 62 };
62 63
63 template <typename... T> 64 template <typename... T>
64 void CdmPromiseInternal<T...>::resolve(const T&... result) { 65 void CdmPromiseInternal<T...>::resolve(const T&... result) {
65 MarkPromiseSettled(); 66 MarkPromiseSettled();
66 task_runner_->PostTask( 67 task_runner_->PostTask(
67 FROM_HERE, 68 FROM_HERE,
68 base::Bind(&::media::CdmPromiseTemplate<T...>::resolve, 69 base::Bind(&::media::CdmPromiseTemplate<T...>::resolve,
69 base::Owned(promise_.release()), 70 base::Owned(promise_.release()),
70 result...)); 71 result...));
71 } 72 }
72 73
73 template <typename... T> 74 template <typename... T>
74 scoped_ptr<CdmPromiseInternal<T...>> BindPromiseToCurrentLoop( 75 std::unique_ptr<CdmPromiseInternal<T...>> BindPromiseToCurrentLoop(
75 scoped_ptr<::media::CdmPromiseTemplate<T...>> promise) { 76 std::unique_ptr<::media::CdmPromiseTemplate<T...>> promise) {
76 return make_scoped_ptr(new CdmPromiseInternal<T...>(std::move(promise))); 77 return base::WrapUnique(new CdmPromiseInternal<T...>(std::move(promise)));
77 } 78 }
78 79
79 } // namespace 80 } // namespace
80 81
81 BrowserCdmCast::BrowserCdmCast(MediaResourceTracker* media_resource_tracker) 82 BrowserCdmCast::BrowserCdmCast(MediaResourceTracker* media_resource_tracker)
82 : media_resource_tracker_(media_resource_tracker) { 83 : media_resource_tracker_(media_resource_tracker) {
83 DCHECK(media_resource_tracker); 84 DCHECK(media_resource_tracker);
84 thread_checker_.DetachFromThread(); 85 thread_checker_.DetachFromThread();
85 } 86 }
86 87
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 146
146 if (newly_usable_keys) 147 if (newly_usable_keys)
147 player_tracker_impl_->NotifyNewKey(); 148 player_tracker_impl_->NotifyNewKey();
148 } 149 }
149 150
150 void BrowserCdmCast::KeyIdAndKeyPairsToInfo( 151 void BrowserCdmCast::KeyIdAndKeyPairsToInfo(
151 const ::media::KeyIdAndKeyPairs& keys, 152 const ::media::KeyIdAndKeyPairs& keys,
152 ::media::CdmKeysInfo* keys_info) { 153 ::media::CdmKeysInfo* keys_info) {
153 DCHECK(keys_info); 154 DCHECK(keys_info);
154 for (const std::pair<std::string, std::string>& key : keys) { 155 for (const std::pair<std::string, std::string>& key : keys) {
155 scoped_ptr<::media::CdmKeyInformation> cdm_key_information( 156 std::unique_ptr<::media::CdmKeyInformation> cdm_key_information(
156 new ::media::CdmKeyInformation(key.first, 157 new ::media::CdmKeyInformation(key.first,
157 ::media::CdmKeyInformation::USABLE, 0)); 158 ::media::CdmKeyInformation::USABLE, 0));
158 keys_info->push_back(cdm_key_information.release()); 159 keys_info->push_back(cdm_key_information.release());
159 } 160 }
160 } 161 }
161 162
162 // A macro runs current member function on |task_runner_| thread. 163 // A macro runs current member function on |task_runner_| thread.
163 #define FORWARD_ON_CDM_THREAD(param_fn, ...) \ 164 #define FORWARD_ON_CDM_THREAD(param_fn, ...) \
164 task_runner_->PostTask( \ 165 task_runner_->PostTask( \
165 FROM_HERE, \ 166 FROM_HERE, \
(...skipping 13 matching lines...) Expand all
179 task_runner_->ReleaseSoon(FROM_HERE, raw_cdm); 180 task_runner_->ReleaseSoon(FROM_HERE, raw_cdm);
180 } 181 }
181 182
182 BrowserCdmCast* BrowserCdmCastUi::browser_cdm_cast() const { 183 BrowserCdmCast* BrowserCdmCastUi::browser_cdm_cast() const {
183 DCHECK(thread_checker_.CalledOnValidThread()); 184 DCHECK(thread_checker_.CalledOnValidThread());
184 return browser_cdm_cast_.get(); 185 return browser_cdm_cast_.get();
185 } 186 }
186 187
187 void BrowserCdmCastUi::SetServerCertificate( 188 void BrowserCdmCastUi::SetServerCertificate(
188 const std::vector<uint8_t>& certificate, 189 const std::vector<uint8_t>& certificate,
189 scoped_ptr<::media::SimpleCdmPromise> promise) { 190 std::unique_ptr<::media::SimpleCdmPromise> promise) {
190 DCHECK(thread_checker_.CalledOnValidThread()); 191 DCHECK(thread_checker_.CalledOnValidThread());
191 FORWARD_ON_CDM_THREAD( 192 FORWARD_ON_CDM_THREAD(
192 SetServerCertificate, certificate, 193 SetServerCertificate, certificate,
193 base::Passed(BindPromiseToCurrentLoop(std::move(promise)))); 194 base::Passed(BindPromiseToCurrentLoop(std::move(promise))));
194 } 195 }
195 196
196 void BrowserCdmCastUi::CreateSessionAndGenerateRequest( 197 void BrowserCdmCastUi::CreateSessionAndGenerateRequest(
197 ::media::MediaKeys::SessionType session_type, 198 ::media::MediaKeys::SessionType session_type,
198 ::media::EmeInitDataType init_data_type, 199 ::media::EmeInitDataType init_data_type,
199 const std::vector<uint8_t>& init_data, 200 const std::vector<uint8_t>& init_data,
200 scoped_ptr<::media::NewSessionCdmPromise> promise) { 201 std::unique_ptr<::media::NewSessionCdmPromise> promise) {
201 DCHECK(thread_checker_.CalledOnValidThread()); 202 DCHECK(thread_checker_.CalledOnValidThread());
202 FORWARD_ON_CDM_THREAD( 203 FORWARD_ON_CDM_THREAD(
203 CreateSessionAndGenerateRequest, session_type, init_data_type, init_data, 204 CreateSessionAndGenerateRequest, session_type, init_data_type, init_data,
204 base::Passed(BindPromiseToCurrentLoop(std::move(promise)))); 205 base::Passed(BindPromiseToCurrentLoop(std::move(promise))));
205 } 206 }
206 207
207 void BrowserCdmCastUi::LoadSession( 208 void BrowserCdmCastUi::LoadSession(
208 ::media::MediaKeys::SessionType session_type, 209 ::media::MediaKeys::SessionType session_type,
209 const std::string& session_id, 210 const std::string& session_id,
210 scoped_ptr<::media::NewSessionCdmPromise> promise) { 211 std::unique_ptr<::media::NewSessionCdmPromise> promise) {
211 DCHECK(thread_checker_.CalledOnValidThread()); 212 DCHECK(thread_checker_.CalledOnValidThread());
212 FORWARD_ON_CDM_THREAD( 213 FORWARD_ON_CDM_THREAD(
213 LoadSession, session_type, session_id, 214 LoadSession, session_type, session_id,
214 base::Passed(BindPromiseToCurrentLoop(std::move(promise)))); 215 base::Passed(BindPromiseToCurrentLoop(std::move(promise))));
215 } 216 }
216 217
217 void BrowserCdmCastUi::UpdateSession( 218 void BrowserCdmCastUi::UpdateSession(
218 const std::string& session_id, 219 const std::string& session_id,
219 const std::vector<uint8_t>& response, 220 const std::vector<uint8_t>& response,
220 scoped_ptr<::media::SimpleCdmPromise> promise) { 221 std::unique_ptr<::media::SimpleCdmPromise> promise) {
221 DCHECK(thread_checker_.CalledOnValidThread()); 222 DCHECK(thread_checker_.CalledOnValidThread());
222 FORWARD_ON_CDM_THREAD( 223 FORWARD_ON_CDM_THREAD(
223 UpdateSession, session_id, response, 224 UpdateSession, session_id, response,
224 base::Passed(BindPromiseToCurrentLoop(std::move(promise)))); 225 base::Passed(BindPromiseToCurrentLoop(std::move(promise))));
225 } 226 }
226 227
227 void BrowserCdmCastUi::CloseSession( 228 void BrowserCdmCastUi::CloseSession(
228 const std::string& session_id, 229 const std::string& session_id,
229 scoped_ptr<::media::SimpleCdmPromise> promise) { 230 std::unique_ptr<::media::SimpleCdmPromise> promise) {
230 DCHECK(thread_checker_.CalledOnValidThread()); 231 DCHECK(thread_checker_.CalledOnValidThread());
231 FORWARD_ON_CDM_THREAD( 232 FORWARD_ON_CDM_THREAD(
232 CloseSession, session_id, 233 CloseSession, session_id,
233 base::Passed(BindPromiseToCurrentLoop(std::move(promise)))); 234 base::Passed(BindPromiseToCurrentLoop(std::move(promise))));
234 } 235 }
235 236
236 void BrowserCdmCastUi::RemoveSession( 237 void BrowserCdmCastUi::RemoveSession(
237 const std::string& session_id, 238 const std::string& session_id,
238 scoped_ptr<::media::SimpleCdmPromise> promise) { 239 std::unique_ptr<::media::SimpleCdmPromise> promise) {
239 DCHECK(thread_checker_.CalledOnValidThread()); 240 DCHECK(thread_checker_.CalledOnValidThread());
240 FORWARD_ON_CDM_THREAD( 241 FORWARD_ON_CDM_THREAD(
241 RemoveSession, session_id, 242 RemoveSession, session_id,
242 base::Passed(BindPromiseToCurrentLoop(std::move(promise)))); 243 base::Passed(BindPromiseToCurrentLoop(std::move(promise))));
243 } 244 }
244 245
245 // A default empty implementation for subclasses that don't need to provide 246 // A default empty implementation for subclasses that don't need to provide
246 // any key system specific initialization. 247 // any key system specific initialization.
247 void BrowserCdmCast::InitializeInternal() { 248 void BrowserCdmCast::InitializeInternal() {
248 } 249 }
249 250
250 } // namespace media 251 } // namespace media
251 } // namespace chromecast 252 } // namespace chromecast
OLDNEW
« no previous file with comments | « chromecast/media/cdm/browser_cdm_cast.h ('k') | chromecast/media/cma/backend/alsa/audio_decoder_alsa.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698