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

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

Issue 10979047: Upstream fullscreen video implementation for android (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merging latest changes Created 8 years, 2 months 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 | Annotate | Revision Log
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_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
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
OLDNEW
« no previous file with comments | « webkit/media/android/webmediaplayer_impl_android.h ('k') | webkit/media/android/webmediaplayer_manager_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698