| Index: media/blink/webmediaplayer_impl.cc
|
| diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
|
| index c6b8b571cea6a261dc31fc9e629025bf7185660a..f130ce7548a3699c5a9d2c13dbb99335c5f5998e 100644
|
| --- a/media/blink/webmediaplayer_impl.cc
|
| +++ b/media/blink/webmediaplayer_impl.cc
|
| @@ -18,6 +18,7 @@
|
| #include "base/debug/alias.h"
|
| #include "base/debug/crash_logging.h"
|
| #include "base/location.h"
|
| +#include "base/memory/ptr_util.h"
|
| #include "base/metrics/histogram_macros.h"
|
| #include "base/single_thread_task_runner.h"
|
| #include "base/strings/string_number_conversions.h"
|
| @@ -1109,6 +1110,21 @@ void WebMediaPlayerImpl::OnDemuxerOpened() {
|
| new WebMediaSourceImpl(chunk_demuxer_, media_log_));
|
| }
|
|
|
| +void WebMediaPlayerImpl::OnMemoryPressure(
|
| + base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) {
|
| + DVLOG(2) << __func__ << " memory_pressure_level=" << memory_pressure_level;
|
| + DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| + if (chunk_demuxer_) {
|
| + // base::Unretained is safe, since chunk_demuxer_ is actually owned by
|
| + // |this| via this->demuxer_.
|
| + media_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&ChunkDemuxer::OnMemoryPressure,
|
| + base::Unretained(chunk_demuxer_),
|
| + base::TimeDelta::FromSecondsD(currentTime()),
|
| + memory_pressure_level));
|
| + }
|
| +}
|
| +
|
| void WebMediaPlayerImpl::OnError(PipelineStatus status) {
|
| DVLOG(1) << __func__;
|
| DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| @@ -1650,6 +1666,11 @@ void WebMediaPlayerImpl::StartPipeline() {
|
| // TODO(sandersd): On Android, defer Start() if the tab is not visible.
|
| seeking_ = true;
|
| pipeline_controller_.Start(demuxer_.get(), this, is_streaming, is_static);
|
| +
|
| + // base::Unretained is safe because |this| owns memory_pressure_listener_.
|
| + memory_pressure_listener_ =
|
| + base::MakeUnique<base::MemoryPressureListener>(base::Bind(
|
| + &WebMediaPlayerImpl::OnMemoryPressure, base::Unretained(this)));
|
| }
|
|
|
| void WebMediaPlayerImpl::SetNetworkState(WebMediaPlayer::NetworkState state) {
|
|
|