| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/renderer/media/webmediaplayer_ms.h" | 5 #include "content/renderer/media/webmediaplayer_ms.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 NOTIMPLEMENTED(); | 373 NOTIMPLEMENTED(); |
| 374 return 0; | 374 return 0; |
| 375 } | 375 } |
| 376 | 376 |
| 377 unsigned WebMediaPlayerMS::videoDecodedByteCount() const { | 377 unsigned WebMediaPlayerMS::videoDecodedByteCount() const { |
| 378 DCHECK(thread_checker_.CalledOnValidThread()); | 378 DCHECK(thread_checker_.CalledOnValidThread()); |
| 379 NOTIMPLEMENTED(); | 379 NOTIMPLEMENTED(); |
| 380 return 0; | 380 return 0; |
| 381 } | 381 } |
| 382 | 382 |
| 383 void WebMediaPlayerMS::OnHidden(bool must_suspend) { | 383 void WebMediaPlayerMS::OnHidden() { |
| 384 #if defined(OS_ANDROID) | 384 #if defined(OS_ANDROID) |
| 385 DCHECK(thread_checker_.CalledOnValidThread()); | 385 DCHECK(thread_checker_.CalledOnValidThread()); |
| 386 | 386 |
| 387 // Method called when the RenderFrame is sent to background and suspended | 387 // Method called when the RenderFrame is sent to background and suspended |
| 388 // (android). Substitute the displayed VideoFrame with a copy to avoid | 388 // (android). Substitute the displayed VideoFrame with a copy to avoid |
| 389 // holding on to it unnecessarily. | 389 // holding on to it unnecessarily. |
| 390 // | 390 // |
| 391 // During undoable tab closures OnHidden() may be called back to back, so we | 391 // During undoable tab closures OnHidden() may be called back to back, so we |
| 392 // can't rely on |render_frame_suspended_| being false here. | 392 // can't rely on |render_frame_suspended_| being false here. |
| 393 | 393 |
| 394 render_frame_suspended_ = true; | 394 render_frame_suspended_ = true; |
| 395 if (must_suspend) { | 395 if (!paused_) |
| 396 if (!paused_) { | |
| 397 pause(); | |
| 398 paused_on_hidden_ = true; | |
| 399 } | |
| 400 | |
| 401 if (delegate_) | |
| 402 delegate_->PlayerGone(delegate_id_); | |
| 403 } else if (!paused_) { | |
| 404 // pause() will make its own copy in the block above otherwise. | |
| 405 compositor_->ReplaceCurrentFrameWithACopy(); | 396 compositor_->ReplaceCurrentFrameWithACopy(); |
| 406 } | |
| 407 #endif // defined(OS_ANDROID) | 397 #endif // defined(OS_ANDROID) |
| 408 } | 398 } |
| 409 | 399 |
| 410 void WebMediaPlayerMS::OnShown() { | 400 void WebMediaPlayerMS::OnShown() { |
| 411 #if defined(OS_ANDROID) | 401 #if defined(OS_ANDROID) |
| 412 DCHECK(thread_checker_.CalledOnValidThread()); | 402 DCHECK(thread_checker_.CalledOnValidThread()); |
| 413 | 403 |
| 414 render_frame_suspended_ = false; | 404 render_frame_suspended_ = false; |
| 415 | 405 |
| 416 // Resume playback on visibility. play() clears |paused_on_hidden_|. | 406 // Resume playback on visibility. play() clears |paused_on_hidden_|. |
| 417 if (paused_on_hidden_) | 407 if (paused_on_hidden_) |
| 418 play(); | 408 play(); |
| 419 #endif // defined(OS_ANDROID) | 409 #endif // defined(OS_ANDROID) |
| 420 } | 410 } |
| 421 | 411 |
| 412 void WebMediaPlayerMS::OnSuspend(bool must_suspend) { |
| 413 #if defined(OS_ANDROID) |
| 414 if (!must_suspend) |
| 415 return; |
| 416 |
| 417 if (!paused_) { |
| 418 pause(); |
| 419 paused_on_hidden_ = true; |
| 420 } |
| 421 |
| 422 if (delegate_) |
| 423 delegate_->PlayerGone(delegate_id_); |
| 424 |
| 425 render_frame_suspended_ = true; |
| 426 #endif |
| 427 } |
| 428 |
| 422 void WebMediaPlayerMS::OnPlay() { | 429 void WebMediaPlayerMS::OnPlay() { |
| 423 play(); | 430 play(); |
| 424 client_->playbackStateChanged(); | 431 client_->playbackStateChanged(); |
| 425 } | 432 } |
| 426 | 433 |
| 427 void WebMediaPlayerMS::OnPause() { | 434 void WebMediaPlayerMS::OnPause() { |
| 428 const bool was_playing = !paused_ || paused_on_hidden_; | 435 const bool was_playing = !paused_ || paused_on_hidden_; |
| 429 pause(); | 436 pause(); |
| 430 client_->playbackStateChanged(); | 437 client_->playbackStateChanged(); |
| 431 | 438 |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 541 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { | 548 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { |
| 542 return &video_renderer_; | 549 return &video_renderer_; |
| 543 } | 550 } |
| 544 | 551 |
| 545 void WebMediaPlayerMS::ResetCanvasCache() { | 552 void WebMediaPlayerMS::ResetCanvasCache() { |
| 546 DCHECK(thread_checker_.CalledOnValidThread()); | 553 DCHECK(thread_checker_.CalledOnValidThread()); |
| 547 video_renderer_.ResetCache(); | 554 video_renderer_.ResetCache(); |
| 548 } | 555 } |
| 549 | 556 |
| 550 } // namespace content | 557 } // namespace content |
| OLD | NEW |