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

Side by Side Diff: webkit/media/android/webmediaplayer_manager_android.cc

Issue 11361239: Keep playing audio even when opening another tab, going to another app etc. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "webkit/media/android/webmediaplayer_manager_android.h" 5 #include "webkit/media/android/webmediaplayer_manager_android.h"
6 6
7 #include "webkit/media/android/webmediaplayer_android.h" 7 #include "webkit/media/android/webmediaplayer_android.h"
8 8
9 namespace webkit_media { 9 namespace webkit_media {
10 10
11 WebMediaPlayerManagerAndroid::WebMediaPlayerManagerAndroid() 11 WebMediaPlayerManagerAndroid::WebMediaPlayerManagerAndroid()
12 : next_media_player_id_(0), 12 : next_media_player_id_(0),
13 fullscreen_frame_(NULL) { 13 fullscreen_frame_(NULL) {
14 } 14 }
15 15
16 WebMediaPlayerManagerAndroid::~WebMediaPlayerManagerAndroid() { 16 WebMediaPlayerManagerAndroid::~WebMediaPlayerManagerAndroid() {
17 } 17 }
18 18
19 int WebMediaPlayerManagerAndroid::RegisterMediaPlayer( 19 int WebMediaPlayerManagerAndroid::RegisterMediaPlayer(
20 WebMediaPlayerAndroid* player) { 20 WebMediaPlayerAndroid* player) {
21 media_players_[next_media_player_id_] = player; 21 media_players_[next_media_player_id_] = player;
22 return next_media_player_id_++; 22 return next_media_player_id_++;
23 } 23 }
24 24
25 void WebMediaPlayerManagerAndroid::UnregisterMediaPlayer(int player_id) { 25 void WebMediaPlayerManagerAndroid::UnregisterMediaPlayer(int player_id) {
26 media_players_.erase(player_id); 26 media_players_.erase(player_id);
27 } 27 }
28 28
29 void WebMediaPlayerManagerAndroid::ReleaseMediaResources() { 29 void WebMediaPlayerManagerAndroid::ReleaseMediaResourcesIfNotPlaying() {
30 std::map<int32, WebMediaPlayerAndroid*>::iterator player_it; 30 std::map<int32, WebMediaPlayerAndroid*>::iterator player_it;
31 for (player_it = media_players_.begin(); 31 for (player_it = media_players_.begin();
32 player_it != media_players_.end(); ++player_it) { 32 player_it != media_players_.end(); ++player_it) {
33 (player_it->second)->ReleaseMediaResources(); 33 WebMediaPlayerAndroid* player = player_it->second;
34 DCHECK(player);
qinmin 2012/11/14 18:14:29 useless DCHECK
Miguel Garcia 2012/11/14 18:50:32 removed
35
36 // Do not release if an audio track is still playing
37 if (player && (!player->hasAudio() || player->paused()))
qinmin 2012/11/14 18:14:29 hasAudio() always return true on android. Even on
Miguel Garcia 2012/11/14 18:50:32 Removed On 2012/11/14 18:14:29, qinmin wrote:
38 player->ReleaseMediaResources();
34 } 39 }
35 } 40 }
36 41
37 WebMediaPlayerAndroid* WebMediaPlayerManagerAndroid::GetMediaPlayer( 42 WebMediaPlayerAndroid* WebMediaPlayerManagerAndroid::GetMediaPlayer(
38 int player_id) { 43 int player_id) {
39 std::map<int32, WebMediaPlayerAndroid*>::iterator iter = 44 std::map<int32, WebMediaPlayerAndroid*>::iterator iter =
40 media_players_.find(player_id); 45 media_players_.find(player_id);
41 if (iter != media_players_.end()) 46 if (iter != media_players_.end())
42 return iter->second; 47 return iter->second;
43 return NULL; 48 return NULL;
44 } 49 }
45 50
46 bool WebMediaPlayerManagerAndroid::CanEnterFullscreen(WebKit::WebFrame* frame) { 51 bool WebMediaPlayerManagerAndroid::CanEnterFullscreen(WebKit::WebFrame* frame) {
47 return !fullscreen_frame_ || IsInFullscreen(frame); 52 return !fullscreen_frame_ || IsInFullscreen(frame);
48 } 53 }
49 54
50 void WebMediaPlayerManagerAndroid::DidEnterFullscreen(WebKit::WebFrame* frame) { 55 void WebMediaPlayerManagerAndroid::DidEnterFullscreen(WebKit::WebFrame* frame) {
51 fullscreen_frame_ = frame; 56 fullscreen_frame_ = frame;
52 } 57 }
53 58
54 void WebMediaPlayerManagerAndroid::DidExitFullscreen() { 59 void WebMediaPlayerManagerAndroid::DidExitFullscreen() {
55 fullscreen_frame_ = NULL; 60 fullscreen_frame_ = NULL;
56 } 61 }
57 62
58 bool WebMediaPlayerManagerAndroid::IsInFullscreen(WebKit::WebFrame* frame) { 63 bool WebMediaPlayerManagerAndroid::IsInFullscreen(WebKit::WebFrame* frame) {
59 return fullscreen_frame_ == frame; 64 return fullscreen_frame_ == frame;
60 } 65 }
61 66
62 } // namespace webkit_media 67 } // namespace webkit_media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698