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

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

Issue 1407253007: [Chromecast] Allow CMA backend to notify of key expiry (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: DCHECK for |cdm_| instead of conditional Created 5 years, 1 month 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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "base/thread_task_runner_handle.h" 10 #include "base/thread_task_runner_handle.h"
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 session_message_cb_.Run(session_id, 119 session_message_cb_.Run(session_id,
120 message_type, 120 message_type,
121 message, 121 message,
122 destination_url); 122 destination_url);
123 } 123 }
124 124
125 void BrowserCdmCast::OnSessionClosed(const std::string& session_id) { 125 void BrowserCdmCast::OnSessionClosed(const std::string& session_id) {
126 session_closed_cb_.Run(session_id); 126 session_closed_cb_.Run(session_id);
127 } 127 }
128 128
129 void BrowserCdmCast::OnSessionKeysChange( 129 void BrowserCdmCast::OnSessionKeysChange(const std::string& session_id,
130 const std::string& session_id, 130 bool newly_usable_keys,
131 const ::media::KeyIdAndKeyPairs& keys) { 131 ::media::CdmKeysInfo keys_info) {
132 ::media::CdmKeysInfo cdm_keys_info; 132 session_keys_change_cb_.Run(session_id, newly_usable_keys, keys_info.Pass());
133
134 if (newly_usable_keys)
135 player_tracker_impl_->NotifyNewKey();
136 }
137
138 void BrowserCdmCast::KeyIdAndKeyPairsToInfo(
139 const ::media::KeyIdAndKeyPairs& keys,
140 ::media::CdmKeysInfo* keys_info) {
141 DCHECK(keys_info);
133 for (const std::pair<std::string, std::string>& key : keys) { 142 for (const std::pair<std::string, std::string>& key : keys) {
134 cdm_keys_info.push_back(new ::media::CdmKeyInformation( 143 scoped_ptr<::media::CdmKeyInformation> cdm_key_information(
135 key.first, ::media::CdmKeyInformation::USABLE, 0)); 144 new ::media::CdmKeyInformation(key.first,
yucliu1 2015/11/18 19:28:26 The constructor with arguments isn't available in
halliwell 2015/11/18 19:32:32 Correct, I have been working with local changes to
145 ::media::CdmKeyInformation::USABLE, 0));
146 keys_info->push_back(cdm_key_information.release());
136 } 147 }
137 session_keys_change_cb_.Run(session_id, true, cdm_keys_info.Pass());
138
139 player_tracker_impl_->NotifyNewKey();
140 } 148 }
141 149
142 // A macro runs current member function on |task_runner_| thread. 150 // A macro runs current member function on |task_runner_| thread.
143 #define FORWARD_ON_CDM_THREAD(param_fn, ...) \ 151 #define FORWARD_ON_CDM_THREAD(param_fn, ...) \
144 task_runner_->PostTask( \ 152 task_runner_->PostTask( \
145 FROM_HERE, \ 153 FROM_HERE, \
146 base::Bind(&BrowserCdmCast::param_fn, \ 154 base::Bind(&BrowserCdmCast::param_fn, \
147 base::Unretained(browser_cdm_cast_.get()), ##__VA_ARGS__)) 155 base::Unretained(browser_cdm_cast_.get()), ##__VA_ARGS__))
148 156
149 BrowserCdmCastUi::BrowserCdmCastUi( 157 BrowserCdmCastUi::BrowserCdmCastUi(
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 base::Passed(BindPromiseToCurrentLoop(promise.Pass()))); 234 base::Passed(BindPromiseToCurrentLoop(promise.Pass())));
227 } 235 }
228 236
229 // A default empty implementation for subclasses that don't need to provide 237 // A default empty implementation for subclasses that don't need to provide
230 // any key system specific initialization. 238 // any key system specific initialization.
231 void BrowserCdmCast::InitializeInternal() { 239 void BrowserCdmCast::InitializeInternal() {
232 } 240 }
233 241
234 } // namespace media 242 } // namespace media
235 } // namespace chromecast 243 } // namespace chromecast
OLDNEW
« no previous file with comments | « chromecast/media/cdm/browser_cdm_cast.h ('k') | chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698