| Index: media/base/android/media_player_bridge.cc
|
| diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc
|
| index a9bf7e42900a7528ce284ee442aa8771b468d65a..a6877709e11b28faf59685998e5523a6df4eb4fa 100644
|
| --- a/media/base/android/media_player_bridge.cc
|
| +++ b/media/base/android/media_player_bridge.cc
|
| @@ -48,7 +48,8 @@ MediaPlayerBridge::MediaPlayerBridge(
|
| can_pause_(true),
|
| can_seek_forward_(true),
|
| can_seek_backward_(true),
|
| - volume_(-1.0),
|
| + initial_volume_(-1.0),
|
| + current_volume_(-1.0),
|
| allow_credentials_(allow_credentials),
|
| weak_factory_(this) {
|
| }
|
| @@ -99,8 +100,8 @@ void MediaPlayerBridge::CreateJavaMediaPlayerBridge() {
|
| j_media_player_bridge_.Reset(Java_MediaPlayerBridge_create(
|
| env, reinterpret_cast<intptr_t>(this)));
|
|
|
| - if (volume_ >= 0)
|
| - SetVolume(volume_);
|
| + if (initial_volume_ >= 0)
|
| + SetVolume(initial_volume_);
|
|
|
| AttachListener(j_media_player_bridge_.obj());
|
| }
|
| @@ -355,6 +356,8 @@ void MediaPlayerBridge::Release() {
|
| if (j_media_player_bridge_.is_null())
|
| return;
|
|
|
| + SetAudible(false);
|
| +
|
| time_update_timer_.Stop();
|
| if (prepared_) {
|
| pending_seek_ = GetCurrentTime();
|
| @@ -372,14 +375,23 @@ void MediaPlayerBridge::Release() {
|
|
|
| void MediaPlayerBridge::SetVolume(double volume) {
|
| if (j_media_player_bridge_.is_null()) {
|
| - volume_ = volume;
|
| + initial_volume_ = volume;
|
| return;
|
| }
|
|
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
| CHECK(env);
|
| +
|
| + // Update the audible state if we are playing.
|
| + jboolean is_playing = Java_MediaPlayerBridge_isPlaying(
|
| + env, j_media_player_bridge_.obj());
|
| + if (is_playing)
|
| + SetAudible(volume > 0);
|
| +
|
| Java_MediaPlayerBridge_setVolume(
|
| env, j_media_player_bridge_.obj(), volume);
|
| +
|
| + current_volume_ = volume;
|
| }
|
|
|
| void MediaPlayerBridge::OnVideoSizeChanged(int width, int height) {
|
| @@ -389,11 +401,13 @@ void MediaPlayerBridge::OnVideoSizeChanged(int width, int height) {
|
| }
|
|
|
| void MediaPlayerBridge::OnPlaybackComplete() {
|
| + SetAudible(false);
|
| time_update_timer_.Stop();
|
| MediaPlayerAndroid::OnPlaybackComplete();
|
| }
|
|
|
| void MediaPlayerBridge::OnMediaInterrupted() {
|
| + SetAudible(false);
|
| time_update_timer_.Stop();
|
| MediaPlayerAndroid::OnMediaInterrupted();
|
| }
|
| @@ -453,9 +467,13 @@ void MediaPlayerBridge::StartInternal() {
|
| base::TimeDelta::FromMilliseconds(kTimeUpdateInterval),
|
| this, &MediaPlayerBridge::OnTimeUpdateTimerFired);
|
| }
|
| +
|
| + SetAudible(current_volume_ > 0);
|
| }
|
|
|
| void MediaPlayerBridge::PauseInternal() {
|
| + SetAudible(false);
|
| +
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
| Java_MediaPlayerBridge_pause(env, j_media_player_bridge_.obj());
|
| time_update_timer_.Stop();
|
|
|