Chromium Code Reviews| Index: media/remoting/remoting_renderer_controller.cc |
| diff --git a/media/remoting/remoting_renderer_controller.cc b/media/remoting/remoting_renderer_controller.cc |
| index 5f0d37eacdbc7a5939d49d5b0941e7077d07da8f..b35f0c540b7816acadb097e9cf0b2d1f6d7f18e7 100644 |
| --- a/media/remoting/remoting_renderer_controller.cc |
| +++ b/media/remoting/remoting_renderer_controller.cc |
| @@ -73,6 +73,15 @@ void RemotingRendererController::OnSetCdm(CdmContext* cdm_context) { |
| UpdateAndMaybeSwitch(); |
| } |
| +void RemotingRendererController::OnSetPoster(const GURL& poster_url) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + if (poster_url != poster_url_) { |
| + poster_url_ = poster_url; |
| + DownloadPosterImage(); |
|
miu
2016/12/22 02:04:02
What if the URL is set to empty (i.e., the web pag
xjz
2016/12/22 20:13:08
This case is really an edge case as the poster ima
xjz
2016/12/22 23:21:12
Done. As chatted face to face, change UpdateInters
|
| + } |
| +} |
| + |
| void RemotingRendererController::SetSwitchRendererCallback( |
| const base::Closure& cb) { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| @@ -243,4 +252,42 @@ void RemotingRendererController::UpdateAndMaybeSwitch() { |
| } |
| } |
| +void RemotingRendererController::SetDownloadPosterCallback( |
| + const DownloadPosterCallback& cb) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + DCHECK(download_poster_cb_.is_null()); |
| + download_poster_cb_ = cb; |
| + DownloadPosterImage(); |
|
miu
2016/12/22 02:04:02
Along the lines of my previous comment:
if (!po
xjz
2016/12/22 23:21:12
Done.
|
| +} |
| + |
| +void RemotingRendererController::UpdateInterstitial(const SkBitmap& image) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + if (pipeline_metadata_.natural_size.IsEmpty() || !remote_rendering_started_) |
| + return; |
| + |
| + // TODO(xjz): Update interstitial. |
| + // https://codereview.chromium.org/2566223005/ |
| +} |
| + |
| +void RemotingRendererController::DownloadPosterImage() { |
| + // TODO(xjz): early return if show interstitial callback is not set. |
| + if (download_poster_cb_.is_null() || poster_url_.is_empty()) |
|
miu
2016/12/22 02:04:02
nit: Suggest taking out the "|| poster_url_.is_emp
xjz
2016/12/22 23:21:11
Done.
|
| + return; |
| + |
| + download_poster_cb_.Run( |
| + poster_url_, |
| + base::Bind(&RemotingRendererController::OnPosterImageDownloaded, |
| + weak_factory_.GetWeakPtr(), poster_url_)); |
| +} |
| + |
| +void RemotingRendererController::OnPosterImageDownloaded( |
| + const GURL& download_url, |
| + const SkBitmap& image) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + if (download_url != poster_url_) |
| + return; // The poster image URL has changed during the download. |
| + UpdateInterstitial(image); |
| +} |
| + |
| } // namespace media |