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

Side by Side Diff: content/renderer/media/webmediaplayer_ms.cc

Issue 2490783002: Refactor WebMediaPlayerDelegate interface. (Closed)
Patch Set: Update WMPA properly. Created 4 years 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
OLDNEW
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 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 293
294 compositor_->StartRendering(); 294 compositor_->StartRendering();
295 295
296 if (audio_renderer_) 296 if (audio_renderer_)
297 audio_renderer_->Play(); 297 audio_renderer_->Play();
298 298
299 if (delegate_) { 299 if (delegate_) {
300 // TODO(perkj, magjed): We use OneShot focus type here so that it takes 300 // TODO(perkj, magjed): We use OneShot focus type here so that it takes
301 // audio focus once it starts, and then will not respond to further audio 301 // audio focus once it starts, and then will not respond to further audio
302 // focus changes. See http://crbug.com/596516 for more details. 302 // focus changes. See http://crbug.com/596516 for more details.
303 delegate_->DidPlay(delegate_id_, hasVideo(), hasAudio(), false, 303 delegate_->DidPlay(delegate_id_, hasAudio(), hasVideo(),
304 media::MediaContentType::OneShot); 304 media::MediaContentType::OneShot);
305 } 305 }
306 306
307 paused_ = false; 307 paused_ = false;
308 } 308 }
309 309
310 void WebMediaPlayerMS::pause() { 310 void WebMediaPlayerMS::pause() {
311 DVLOG(1) << __func__; 311 DVLOG(1) << __func__;
312 DCHECK(thread_checker_.CalledOnValidThread()); 312 DCHECK(thread_checker_.CalledOnValidThread());
313 313
314 should_play_upon_shown_ = false; 314 should_play_upon_shown_ = false;
315 media_log_->AddEvent(media_log_->CreateEvent(media::MediaLogEvent::PAUSE)); 315 media_log_->AddEvent(media_log_->CreateEvent(media::MediaLogEvent::PAUSE));
316 if (paused_) 316 if (paused_)
317 return; 317 return;
318 318
319 if (video_frame_provider_) 319 if (video_frame_provider_)
320 video_frame_provider_->Pause(); 320 video_frame_provider_->Pause();
321 321
322 compositor_->StopRendering(); 322 compositor_->StopRendering();
323 compositor_->ReplaceCurrentFrameWithACopy(); 323 compositor_->ReplaceCurrentFrameWithACopy();
324 324
325 if (audio_renderer_) 325 if (audio_renderer_)
326 audio_renderer_->Pause(); 326 audio_renderer_->Pause();
327 327
328 if (delegate_) 328 if (delegate_) {
329 delegate_->DidPause(delegate_id_, false); 329 delegate_->DidPause(delegate_id_);
330 delegate_->SetIdle(delegate_id_, true);
331 }
330 332
331 paused_ = true; 333 paused_ = true;
332 } 334 }
333 335
334 bool WebMediaPlayerMS::supportsSave() const { 336 bool WebMediaPlayerMS::supportsSave() const {
335 DCHECK(thread_checker_.CalledOnValidThread()); 337 DCHECK(thread_checker_.CalledOnValidThread());
336 return false; 338 return false;
337 } 339 }
338 340
339 void WebMediaPlayerMS::seek(double seconds) { 341 void WebMediaPlayerMS::seek(double seconds) {
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 NOTIMPLEMENTED(); 503 NOTIMPLEMENTED();
502 return 0; 504 return 0;
503 } 505 }
504 506
505 size_t WebMediaPlayerMS::videoDecodedByteCount() const { 507 size_t WebMediaPlayerMS::videoDecodedByteCount() const {
506 DCHECK(thread_checker_.CalledOnValidThread()); 508 DCHECK(thread_checker_.CalledOnValidThread());
507 NOTIMPLEMENTED(); 509 NOTIMPLEMENTED();
508 return 0; 510 return 0;
509 } 511 }
510 512
511 void WebMediaPlayerMS::OnHidden() { 513 void WebMediaPlayerMS::OnFrameHidden() {
512 #if defined(OS_ANDROID) 514 #if defined(OS_ANDROID)
513 DCHECK(thread_checker_.CalledOnValidThread()); 515 DCHECK(thread_checker_.CalledOnValidThread());
514 516
515 // Method called when the RenderFrame is sent to background and suspended 517 // Method called when the RenderFrame is sent to background and suspended
516 // (android). Substitute the displayed VideoFrame with a copy to avoid 518 // (android). Substitute the displayed VideoFrame with a copy to avoid
517 // holding on to it unnecessarily. 519 // holding on to it unnecessarily.
518 // 520 //
519 // During undoable tab closures OnHidden() may be called back to back, so we 521 // During undoable tab closures OnHidden() may be called back to back, so we
520 // can't rely on |render_frame_suspended_| being false here. 522 // can't rely on |render_frame_suspended_| being false here.
521 if (frame_deliverer_) { 523 if (frame_deliverer_) {
522 compositor_task_runner_->PostTask( 524 compositor_task_runner_->PostTask(
523 FROM_HERE, base::Bind(&FrameDeliverer::SetRenderFrameSuspended, 525 FROM_HERE, base::Bind(&FrameDeliverer::SetRenderFrameSuspended,
524 base::Unretained(frame_deliverer_.get()), true)); 526 base::Unretained(frame_deliverer_.get()), true));
525 } 527 }
526 528
527 if (!paused_) 529 if (!paused_)
528 compositor_->ReplaceCurrentFrameWithACopy(); 530 compositor_->ReplaceCurrentFrameWithACopy();
529 #endif // defined(OS_ANDROID) 531 #endif // defined(OS_ANDROID)
530 } 532 }
531 533
532 void WebMediaPlayerMS::OnShown() { 534 void WebMediaPlayerMS::OnFrameClosed() {
535 #if defined(OS_ANDROID)
536 if (!paused_) {
537 pause();
538 should_play_upon_shown_ = true;
539 }
540
541 if (delegate_)
542 delegate_->PlayerGone(delegate_id_);
543
544 if (frame_deliverer_) {
545 compositor_task_runner_->PostTask(
546 FROM_HERE, base::Bind(&FrameDeliverer::SetRenderFrameSuspended,
547 base::Unretained(frame_deliverer_.get()), true));
548 }
549 #endif // defined(OS_ANDROID)
550 }
551
552 void WebMediaPlayerMS::OnFrameShown() {
533 #if defined(OS_ANDROID) 553 #if defined(OS_ANDROID)
534 DCHECK(thread_checker_.CalledOnValidThread()); 554 DCHECK(thread_checker_.CalledOnValidThread());
535 555
536 if (frame_deliverer_) { 556 if (frame_deliverer_) {
537 compositor_task_runner_->PostTask( 557 compositor_task_runner_->PostTask(
538 FROM_HERE, base::Bind(&FrameDeliverer::SetRenderFrameSuspended, 558 FROM_HERE, base::Bind(&FrameDeliverer::SetRenderFrameSuspended,
539 base::Unretained(frame_deliverer_.get()), false)); 559 base::Unretained(frame_deliverer_.get()), false));
540 } 560 }
541 561
542 // Resume playback on visibility. play() clears |should_play_upon_shown_|. 562 // Resume playback on visibility. play() clears |should_play_upon_shown_|.
543 if (should_play_upon_shown_) 563 if (should_play_upon_shown_)
544 play(); 564 play();
545 #endif // defined(OS_ANDROID) 565 #endif // defined(OS_ANDROID)
546 } 566 }
547 567
548 bool WebMediaPlayerMS::OnSuspendRequested(bool must_suspend) { 568 bool WebMediaPlayerMS::OnIdleTimeout() {
549 #if defined(OS_ANDROID)
550 if (!must_suspend)
551 return false;
552
553 if (!paused_) {
554 pause();
555 should_play_upon_shown_ = true;
556 }
557
558 if (delegate_)
559 delegate_->PlayerGone(delegate_id_);
560
561 if (frame_deliverer_) {
562 compositor_task_runner_->PostTask(
563 FROM_HERE, base::Bind(&FrameDeliverer::SetRenderFrameSuspended,
564 base::Unretained(frame_deliverer_.get()), true));
565 }
566 #endif // defined(OS_ANDROID)
567 return true; 569 return true;
568 } 570 }
569 571
570 void WebMediaPlayerMS::OnPlay() { 572 void WebMediaPlayerMS::OnPlay() {
571 // TODO(perkj, magjed): It's not clear how WebRTC should work with an 573 // TODO(perkj, magjed): It's not clear how WebRTC should work with an
572 // MediaSession, until these issues are resolved, disable session controls. 574 // MediaSession, until these issues are resolved, disable session controls.
573 // http://crbug.com/595297. 575 // http://crbug.com/595297.
574 } 576 }
575 577
576 void WebMediaPlayerMS::OnPause() { 578 void WebMediaPlayerMS::OnPause() {
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 void WebMediaPlayerMS::ResetCanvasCache() { 712 void WebMediaPlayerMS::ResetCanvasCache() {
711 DCHECK(thread_checker_.CalledOnValidThread()); 713 DCHECK(thread_checker_.CalledOnValidThread());
712 video_renderer_.ResetCache(); 714 video_renderer_.ResetCache();
713 } 715 }
714 716
715 void WebMediaPlayerMS::TriggerResize() { 717 void WebMediaPlayerMS::TriggerResize() {
716 get_client()->sizeChanged(); 718 get_client()->sizeChanged();
717 } 719 }
718 720
719 } // namespace content 721 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698