OLD | NEW |
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_impl_android.h" | 5 #include "webkit/media/android/webmediaplayer_impl_android.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "media/base/android/media_player_bridge.h" | 9 #include "media/base/android/media_player_bridge.h" |
10 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" | 10 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" |
| 11 #include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h" |
11 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" | 12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayerClient.
h" | 13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayerClient.
h" |
| 14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
13 #include "webkit/media/android/stream_texture_factory_android.h" | 15 #include "webkit/media/android/stream_texture_factory_android.h" |
14 #include "webkit/media/android/webmediaplayer_manager_android.h" | 16 #include "webkit/media/android/webmediaplayer_manager_android.h" |
15 #include "webkit/media/android/webmediaplayer_proxy_android.h" | 17 #include "webkit/media/android/webmediaplayer_proxy_android.h" |
16 | 18 |
17 using WebKit::WebMediaPlayerClient; | 19 using WebKit::WebMediaPlayerClient; |
18 using WebKit::WebMediaPlayer; | 20 using WebKit::WebMediaPlayer; |
19 | 21 |
20 namespace webkit_media { | 22 namespace webkit_media { |
21 | 23 |
22 WebMediaPlayerImplAndroid::WebMediaPlayerImplAndroid( | 24 WebMediaPlayerImplAndroid::WebMediaPlayerImplAndroid( |
23 WebKit::WebFrame* frame, | 25 WebKit::WebFrame* frame, |
24 WebMediaPlayerClient* client, | 26 WebMediaPlayerClient* client, |
25 WebMediaPlayerManagerAndroid* manager, | 27 WebMediaPlayerManagerAndroid* manager, |
26 WebMediaPlayerProxyAndroid* proxy, | 28 WebMediaPlayerProxyAndroid* proxy, |
27 StreamTextureFactory* factory) | 29 StreamTextureFactory* factory) |
28 : WebMediaPlayerAndroid(client, manager, factory), | 30 : WebMediaPlayerAndroid(client, manager, factory), |
29 frame_(frame), | 31 frame_(frame), |
30 proxy_(proxy), | 32 proxy_(proxy), |
31 current_time_(0) { | 33 current_time_(0) { |
32 } | 34 } |
33 | 35 |
34 WebMediaPlayerImplAndroid::~WebMediaPlayerImplAndroid() { | 36 WebMediaPlayerImplAndroid::~WebMediaPlayerImplAndroid() { |
35 Destroy(); | 37 Destroy(); |
36 } | 38 } |
37 | 39 |
| 40 void WebMediaPlayerImplAndroid::enterFullscreen() { |
| 41 if (proxy_ && manager()->CanEnterFullscreen(frame_)) { |
| 42 proxy_->EnterFullscreen(player_id()); |
| 43 SetNeedsEstablishPeer(false); |
| 44 } |
| 45 } |
| 46 |
| 47 void WebMediaPlayerImplAndroid::exitFullscreen() { |
| 48 if (proxy_) |
| 49 proxy_->ExitFullscreen(player_id()); |
| 50 } |
| 51 |
| 52 bool WebMediaPlayerImplAndroid::canEnterFullscreen() const { |
| 53 return manager()->CanEnterFullscreen(frame_); |
| 54 } |
| 55 |
38 void WebMediaPlayerImplAndroid::InitializeMediaPlayer(GURL url) { | 56 void WebMediaPlayerImplAndroid::InitializeMediaPlayer(GURL url) { |
39 GURL first_party_url = frame_->document().firstPartyForCookies(); | 57 GURL first_party_url = frame_->document().firstPartyForCookies(); |
40 if (proxy_) { | 58 if (proxy_) { |
41 proxy_->Initialize(player_id(), url.spec(), first_party_url.spec()); | 59 proxy_->Initialize(player_id(), url.spec(), first_party_url.spec()); |
| 60 if (manager()->IsInFullscreen(frame_)) |
| 61 proxy_->EnterFullscreen(player_id()); |
42 } | 62 } |
43 | 63 |
44 UpdateNetworkState(WebMediaPlayer::NetworkStateLoading); | 64 UpdateNetworkState(WebMediaPlayer::NetworkStateLoading); |
45 UpdateReadyState(WebMediaPlayer::ReadyStateHaveNothing); | 65 UpdateReadyState(WebMediaPlayer::ReadyStateHaveNothing); |
46 } | 66 } |
47 | 67 |
48 void WebMediaPlayerImplAndroid::PlayInternal() { | 68 void WebMediaPlayerImplAndroid::PlayInternal() { |
49 if (paused() && proxy_) | 69 if (paused() && proxy_) |
50 proxy_->Start(player_id()); | 70 proxy_->Start(player_id()); |
51 } | 71 } |
(...skipping 14 matching lines...) Expand all Loading... |
66 | 86 |
67 void WebMediaPlayerImplAndroid::ReleaseResourcesInternal() { | 87 void WebMediaPlayerImplAndroid::ReleaseResourcesInternal() { |
68 if (proxy_) | 88 if (proxy_) |
69 proxy_->ReleaseResources(player_id()); | 89 proxy_->ReleaseResources(player_id()); |
70 } | 90 } |
71 | 91 |
72 void WebMediaPlayerImplAndroid::OnTimeUpdate(base::TimeDelta current_time) { | 92 void WebMediaPlayerImplAndroid::OnTimeUpdate(base::TimeDelta current_time) { |
73 current_time_ = static_cast<float>(current_time.InSecondsF()); | 93 current_time_ = static_cast<float>(current_time.InSecondsF()); |
74 } | 94 } |
75 | 95 |
| 96 void WebMediaPlayerImplAndroid::OnDidEnterFullscreen() { |
| 97 if (!manager()->IsInFullscreen(frame_)) { |
| 98 frame_->view()->willEnterFullScreen(); |
| 99 frame_->view()->didEnterFullScreen(); |
| 100 manager()->DidEnterFullscreen(frame_); |
| 101 } |
| 102 } |
| 103 |
| 104 void WebMediaPlayerImplAndroid::OnDidExitFullscreen() { |
| 105 SetNeedsEstablishPeer(true); |
| 106 // We had the fullscreen surface connected to Android MediaPlayer, |
| 107 // so reconnect our surface texture for embedded playback. |
| 108 if (!paused()) |
| 109 EstablishSurfaceTexturePeer(); |
| 110 |
| 111 frame_->view()->willExitFullScreen(); |
| 112 frame_->view()->didExitFullScreen(); |
| 113 manager()->DidExitFullscreen(); |
| 114 client()->repaint(); |
| 115 } |
| 116 |
| 117 void WebMediaPlayerImplAndroid::OnMediaPlayerPlay() { |
| 118 UpdatePlayingState(true); |
| 119 client()->playbackStateChanged(); |
| 120 } |
| 121 |
| 122 void WebMediaPlayerImplAndroid::OnMediaPlayerPause() { |
| 123 UpdatePlayingState(false); |
| 124 client()->playbackStateChanged(); |
| 125 } |
| 126 |
76 void WebMediaPlayerImplAndroid::Destroy() { | 127 void WebMediaPlayerImplAndroid::Destroy() { |
77 proxy_->DestroyPlayer(player_id()); | 128 proxy_->DestroyPlayer(player_id()); |
78 proxy_ = NULL; | 129 proxy_ = NULL; |
79 } | 130 } |
80 | 131 |
81 void WebMediaPlayerImplAndroid::SetVideoSurface(jobject j_surface) {} | 132 void WebMediaPlayerImplAndroid::SetVideoSurface(jobject j_surface) {} |
82 | 133 |
83 } // namespace webkit_media | 134 } // namespace webkit_media |
OLD | NEW |