Index: webkit/media/android/webmediaplayer_impl_android.cc |
diff --git a/webkit/media/android/webmediaplayer_impl_android.cc b/webkit/media/android/webmediaplayer_impl_android.cc |
index e38d1f29cec144bfef8711e827c8f9658484c18f..c43605f8d818c6c5e28804d3bb4d09f1cfd2b2c0 100644 |
--- a/webkit/media/android/webmediaplayer_impl_android.cc |
+++ b/webkit/media/android/webmediaplayer_impl_android.cc |
@@ -8,8 +8,10 @@ |
#include "base/logging.h" |
#include "media/base/android/media_player_bridge.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayerClient.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
#include "webkit/media/android/stream_texture_factory_android.h" |
#include "webkit/media/android/webmediaplayer_manager_android.h" |
#include "webkit/media/android/webmediaplayer_proxy_android.h" |
@@ -35,10 +37,28 @@ WebMediaPlayerImplAndroid::~WebMediaPlayerImplAndroid() { |
Destroy(); |
} |
+void WebMediaPlayerImplAndroid::enterFullscreen() { |
+ if (proxy_ && manager()->CanEnterFullscreen(frame_)) { |
+ proxy_->EnterFullscreen(player_id()); |
+ SetNeedsEstablishPeer(false); |
+ } |
+} |
+ |
+void WebMediaPlayerImplAndroid::exitFullscreen() { |
+ if (proxy_) |
+ proxy_->ExitFullscreen(player_id()); |
+} |
+ |
+bool WebMediaPlayerImplAndroid::canEnterFullscreen() const { |
+ return manager()->CanEnterFullscreen(frame_); |
+} |
+ |
void WebMediaPlayerImplAndroid::InitializeMediaPlayer(GURL url) { |
GURL first_party_url = frame_->document().firstPartyForCookies(); |
if (proxy_) { |
proxy_->Initialize(player_id(), url.spec(), first_party_url.spec()); |
+ if (manager()->IsInFullscreen(frame_)) |
+ proxy_->EnterFullscreen(player_id()); |
} |
UpdateNetworkState(WebMediaPlayer::NetworkStateLoading); |
@@ -73,6 +93,37 @@ void WebMediaPlayerImplAndroid::OnTimeUpdate(base::TimeDelta current_time) { |
current_time_ = static_cast<float>(current_time.InSecondsF()); |
} |
+void WebMediaPlayerImplAndroid::OnDidEnterFullscreen() { |
+ if (!manager()->IsInFullscreen(frame_)) { |
+ frame_->view()->willEnterFullScreen(); |
+ frame_->view()->didEnterFullScreen(); |
+ manager()->DidEnterFullscreen(frame_); |
+ } |
+} |
+ |
+void WebMediaPlayerImplAndroid::OnDidExitFullscreen() { |
+ SetNeedsEstablishPeer(true); |
+ // We had the fullscreen surface connected to Android MediaPlayer, |
+ // so reconnect our surface texture for embedded playback. |
+ if (!paused()) |
+ EstablishSurfaceTexturePeer(); |
+ |
+ frame_->view()->willExitFullScreen(); |
+ frame_->view()->didExitFullScreen(); |
+ manager()->DidExitFullscreen(); |
+ client()->repaint(); |
+} |
+ |
+void WebMediaPlayerImplAndroid::OnMediaPlayerPlay() { |
+ UpdatePlayingState(true); |
+ client()->playbackStateChanged(); |
+} |
+ |
+void WebMediaPlayerImplAndroid::OnMediaPlayerPause() { |
+ UpdatePlayingState(false); |
+ client()->playbackStateChanged(); |
+} |
+ |
void WebMediaPlayerImplAndroid::Destroy() { |
proxy_->DestroyPlayer(player_id()); |
proxy_ = NULL; |