Commit 09c60220 authored by philipj@opera.com's avatar philipj@opera.com

Stop using WebMediaPlayerClient::preload() and volume()

There is a "FIXME: Remove once calls on the Chromium-side have been
removed" for volume() in WebMediaPlayerClient.h. preload() is
similarly strange layering-wise, so get rid of that as well.

Simply store the values when they cannot immediately be forwarded to
the internal object.

In the case of WebMediaPlayerImpl::setVolume(), the value can always
be used immediately, so the setVolume() in DoLoad() appears to simply
have been unnecessary.

BUG=401415

Review URL: https://codereview.chromium.org/443393002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@288080 0039d316-1c4b-4281-b951-d872f2087c98
parent 9746db4c
......@@ -171,6 +171,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
: frame_(frame),
network_state_(WebMediaPlayer::NetworkStateEmpty),
ready_state_(WebMediaPlayer::ReadyStateHaveNothing),
preload_(AUTO),
main_loop_(base::MessageLoopProxy::current()),
media_loop_(
RenderThreadImpl::current()->GetMediaThreadMessageLoopProxy()),
......@@ -289,10 +290,6 @@ void WebMediaPlayerImpl::DoLoad(LoadType load_type,
load_type_ = load_type;
// Handle any volume/preload changes that occurred before load().
setVolume(client_->volume());
setPreload(client_->preload());
SetNetworkState(WebMediaPlayer::NetworkStateLoading);
SetReadyState(WebMediaPlayer::ReadyStateHaveNothing);
media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec()));
......@@ -315,6 +312,7 @@ void WebMediaPlayerImpl::DoLoad(LoadType load_type,
base::Bind(&WebMediaPlayerImpl::NotifyDownloading, AsWeakPtr())));
data_source_->Initialize(
base::Bind(&WebMediaPlayerImpl::DataSourceInitialized, AsWeakPtr()));
data_source_->SetPreload(preload_);
}
void WebMediaPlayerImpl::play() {
......@@ -432,8 +430,9 @@ void WebMediaPlayerImpl::setPreload(WebMediaPlayer::Preload preload) {
DVLOG(1) << __FUNCTION__ << "(" << preload << ")";
DCHECK(main_loop_->BelongsToCurrentThread());
preload_ = static_cast<content::Preload>(preload);
if (data_source_)
data_source_->SetPreload(static_cast<content::Preload>(preload));
data_source_->SetPreload(preload_);
}
bool WebMediaPlayerImpl::hasVideo() const {
......
......@@ -239,6 +239,9 @@ class WebMediaPlayerImpl
blink::WebMediaPlayer::NetworkState network_state_;
blink::WebMediaPlayer::ReadyState ready_state_;
// Preload state for when |data_source_| is created after setPreload().
content::Preload preload_;
// Message loops for posting tasks on Chrome's main thread. Also used
// for DCHECKs so methods calls won't execute in the wrong thread.
const scoped_refptr<base::MessageLoopProxy> main_loop_;
......
......@@ -87,6 +87,7 @@ WebMediaPlayerMS::WebMediaPlayerMS(
network_state_(WebMediaPlayer::NetworkStateEmpty),
ready_state_(WebMediaPlayer::ReadyStateHaveNothing),
buffered_(static_cast<size_t>(1)),
volume_(1.0f),
client_(client),
delegate_(delegate),
paused_(true),
......@@ -135,7 +136,6 @@ void WebMediaPlayerMS::load(LoadType load_type,
GURL gurl(url);
setVolume(GetClient()->volume());
SetNetworkState(WebMediaPlayer::NetworkStateLoading);
SetReadyState(WebMediaPlayer::ReadyStateHaveNothing);
media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec()));
......@@ -152,8 +152,10 @@ void WebMediaPlayerMS::load(LoadType load_type,
frame->GetRoutingID());
if (video_frame_provider_.get() || audio_renderer_.get()) {
if (audio_renderer_.get())
if (audio_renderer_.get()) {
audio_renderer_->SetVolume(volume_);
audio_renderer_->Start();
}
if (video_frame_provider_.get()) {
video_frame_provider_->Start();
......@@ -234,10 +236,10 @@ void WebMediaPlayerMS::setRate(double rate) {
void WebMediaPlayerMS::setVolume(double volume) {
DCHECK(thread_checker_.CalledOnValidThread());
if (!audio_renderer_.get())
return;
DVLOG(1) << "WebMediaPlayerMS::setVolume(volume=" << volume << ")";
audio_renderer_->SetVolume(volume);
volume_ = volume;
if (audio_renderer_.get())
audio_renderer_->SetVolume(volume_);
}
void WebMediaPlayerMS::setPreload(WebMediaPlayer::Preload preload) {
......
......@@ -141,6 +141,8 @@ class WebMediaPlayerMS
blink::WebTimeRanges buffered_;
float volume_;
// Used for DCHECKs to ensure methods calls executed in the correct thread.
base::ThreadChecker thread_checker_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment