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 "content/browser/android/content_video_view.h" | 5 #include "content/browser/android/content_video_view.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "content/browser/android/content_view_core_impl.h" | 10 #include "content/browser/android/content_view_core_impl.h" |
(...skipping 27 matching lines...) Expand all Loading... |
38 return RegisterNativesImpl(env); | 38 return RegisterNativesImpl(env); |
39 } | 39 } |
40 | 40 |
41 ContentVideoView* ContentVideoView::GetInstance() { | 41 ContentVideoView* ContentVideoView::GetInstance() { |
42 return g_content_video_view; | 42 return g_content_video_view; |
43 } | 43 } |
44 | 44 |
45 ContentVideoView::ContentVideoView( | 45 ContentVideoView::ContentVideoView( |
46 BrowserMediaPlayerManager* manager) | 46 BrowserMediaPlayerManager* manager) |
47 : manager_(manager), | 47 : manager_(manager), |
48 fullscreen_state_(ENTERED), | |
49 weak_factory_(this) { | 48 weak_factory_(this) { |
50 DCHECK(!g_content_video_view); | 49 DCHECK(!g_content_video_view); |
51 j_content_video_view_ = CreateJavaObject(); | 50 j_content_video_view_ = CreateJavaObject(); |
52 g_content_video_view = this; | 51 g_content_video_view = this; |
53 CreatePowerSaveBlocker(); | 52 CreatePowerSaveBlocker(); |
54 } | 53 } |
55 | 54 |
56 ContentVideoView::~ContentVideoView() { | 55 ContentVideoView::~ContentVideoView() { |
57 DCHECK(g_content_video_view); | 56 DCHECK(g_content_video_view); |
58 DestroyContentVideoView(true); | 57 DestroyContentVideoView(true); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 } | 163 } |
165 | 164 |
166 void ContentVideoView::Pause(JNIEnv*, jobject obj) { | 165 void ContentVideoView::Pause(JNIEnv*, jobject obj) { |
167 power_save_blocker_.reset(); | 166 power_save_blocker_.reset(); |
168 manager_->FullscreenPlayerPause(); | 167 manager_->FullscreenPlayerPause(); |
169 } | 168 } |
170 | 169 |
171 void ContentVideoView::ExitFullscreen( | 170 void ContentVideoView::ExitFullscreen( |
172 JNIEnv*, jobject, jboolean release_media_player) { | 171 JNIEnv*, jobject, jboolean release_media_player) { |
173 power_save_blocker_.reset(); | 172 power_save_blocker_.reset(); |
174 if (fullscreen_state_ == SUSPENDED) | |
175 return; | |
176 j_content_video_view_.reset(); | 173 j_content_video_view_.reset(); |
177 manager_->ExitFullscreen(release_media_player); | 174 manager_->ExitFullscreen(release_media_player); |
178 } | 175 } |
179 | 176 |
180 void ContentVideoView::SuspendFullscreen() { | |
181 power_save_blocker_.reset(); | |
182 if (fullscreen_state_ != ENTERED) | |
183 return; | |
184 fullscreen_state_ = SUSPENDED; | |
185 DestroyContentVideoView(false); | |
186 manager_->SuspendFullscreen(); | |
187 } | |
188 | |
189 void ContentVideoView::ResumeFullscreenIfSuspended() { | |
190 if (fullscreen_state_ != SUSPENDED) | |
191 return; | |
192 JNIEnv* env = AttachCurrentThread(); | |
193 DCHECK(!GetJavaObject(env).obj()); | |
194 fullscreen_state_ = RESUME; | |
195 j_content_video_view_ = CreateJavaObject(); | |
196 CreatePowerSaveBlocker(); | |
197 } | |
198 | |
199 void ContentVideoView::SetSurface(JNIEnv* env, jobject obj, | 177 void ContentVideoView::SetSurface(JNIEnv* env, jobject obj, |
200 jobject surface) { | 178 jobject surface) { |
201 gfx::ScopedJavaSurface scoped_surface = | 179 manager_->SetVideoSurface( |
202 gfx::ScopedJavaSurface::AcquireExternalSurface(surface); | 180 gfx::ScopedJavaSurface::AcquireExternalSurface(surface)); |
203 if (fullscreen_state_ == RESUME) { | |
204 DCHECK(surface); | |
205 manager_->ResumeFullscreen(scoped_surface.Pass()); | |
206 fullscreen_state_ = ENTERED; | |
207 } else { | |
208 manager_->SetVideoSurface(scoped_surface.Pass()); | |
209 } | |
210 } | 181 } |
211 | 182 |
212 void ContentVideoView::RequestMediaMetadata(JNIEnv* env, jobject obj) { | 183 void ContentVideoView::RequestMediaMetadata(JNIEnv* env, jobject obj) { |
213 base::MessageLoop::current()->PostTask( | 184 base::MessageLoop::current()->PostTask( |
214 FROM_HERE, | 185 FROM_HERE, |
215 base::Bind(&ContentVideoView::UpdateMediaMetadata, | 186 base::Bind(&ContentVideoView::UpdateMediaMetadata, |
216 weak_factory_.GetWeakPtr())); | 187 weak_factory_.GetWeakPtr())); |
217 } | 188 } |
218 | 189 |
219 ScopedJavaLocalRef<jobject> ContentVideoView::GetJavaObject(JNIEnv* env) { | 190 ScopedJavaLocalRef<jobject> ContentVideoView::GetJavaObject(JNIEnv* env) { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 void ContentVideoView::DestroyContentVideoView(bool native_view_destroyed) { | 231 void ContentVideoView::DestroyContentVideoView(bool native_view_destroyed) { |
261 JNIEnv* env = AttachCurrentThread(); | 232 JNIEnv* env = AttachCurrentThread(); |
262 ScopedJavaLocalRef<jobject> content_video_view = GetJavaObject(env); | 233 ScopedJavaLocalRef<jobject> content_video_view = GetJavaObject(env); |
263 if (!content_video_view.is_null()) { | 234 if (!content_video_view.is_null()) { |
264 Java_ContentVideoView_destroyContentVideoView(env, | 235 Java_ContentVideoView_destroyContentVideoView(env, |
265 content_video_view.obj(), native_view_destroyed); | 236 content_video_view.obj(), native_view_destroyed); |
266 j_content_video_view_.reset(); | 237 j_content_video_view_.reset(); |
267 } | 238 } |
268 } | 239 } |
269 } // namespace content | 240 } // namespace content |
OLD | NEW |