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

Side by Side Diff: Source/core/html/MediaController.cpp

Issue 208483002: Implement the activation behavior of media elements (click to play/pause) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: cancel activation behavior in a failing fullscreen test Created 6 years, 9 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
« no previous file with comments | « Source/core/html/MediaController.h ('k') | Source/core/html/shadow/MediaControlElements.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 { 478 {
479 ASSERT(element); 479 ASSERT(element);
480 ASSERT(m_mediaElements.contains(element)); 480 ASSERT(m_mediaElements.contains(element));
481 481
482 // When the user agent is to bring a media element up to speed with its new media controller, 482 // When the user agent is to bring a media element up to speed with its new media controller,
483 // it must seek that media element to the MediaController's media controller position relative 483 // it must seek that media element to the MediaController's media controller position relative
484 // to the media element's timeline. 484 // to the media element's timeline.
485 element->seek(currentTime(), IGNORE_EXCEPTION); 485 element->seek(currentTime(), IGNORE_EXCEPTION);
486 } 486 }
487 487
488 bool MediaController::isRestrained() const
489 {
490 ASSERT(!m_mediaElements.isEmpty());
491
492 // A MediaController is a restrained media controller if the MediaController is a playing media
493 // controller,
494 if (m_paused)
495 return false;
496
497 bool anyAutoplayingAndPaused = false;
498 bool allPaused = true;
499 for (size_t index = 0; index < m_mediaElements.size(); ++index) {
500 HTMLMediaElement* element = m_mediaElements[index];
501
502 // and none of its slaved media elements are blocked media elements,
503 if (element->isBlocked())
504 return false;
505
506 if (element->isAutoplaying() && element->paused())
507 anyAutoplayingAndPaused = true;
508
509 if (!element->paused())
510 allPaused = false;
511 }
512
513 // but either at least one of its slaved media elements whose autoplaying fl ag is true still has
514 // its paused attribute set to true, or, all of its slaved media elements ha ve their paused
515 // attribute set to true.
516 return anyAutoplayingAndPaused || allPaused;
517 }
518
488 bool MediaController::isBlocked() const 519 bool MediaController::isBlocked() const
489 { 520 {
521 ASSERT(!m_mediaElements.isEmpty());
522
490 // A MediaController is a blocked media controller if the MediaController is a paused media 523 // A MediaController is a blocked media controller if the MediaController is a paused media
491 // controller, 524 // controller,
492 if (m_paused) 525 if (m_paused)
493 return true; 526 return true;
494 527
495 if (m_mediaElements.isEmpty())
496 return false;
497
498 bool allPaused = true; 528 bool allPaused = true;
499 for (size_t index = 0; index < m_mediaElements.size(); ++index) { 529 for (size_t index = 0; index < m_mediaElements.size(); ++index) {
500 HTMLMediaElement* element = m_mediaElements[index]; 530 HTMLMediaElement* element = m_mediaElements[index];
501 // or if any of its slaved media elements are blocked media elements, 531
532 // or if any of its slaved media elements are blocked media elements,
502 if (element->isBlocked()) 533 if (element->isBlocked())
503 return true; 534 return true;
504 535
505 // or if any of its slaved media elements whose autoplaying flag is true still have their 536 // or if any of its slaved media elements whose autoplaying flag is true still have their
506 // paused attribute set to true, 537 // paused attribute set to true,
507 if (element->isAutoplaying() && element->paused()) 538 if (element->isAutoplaying() && element->paused())
508 return true; 539 return true;
509 540
510 if (!element->paused()) 541 if (!element->paused())
511 allPaused = false; 542 allPaused = false;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 { 650 {
620 double now = WTF::currentTime(); 651 double now = WTF::currentTime();
621 double timedelta = now - m_previousTimeupdateTime; 652 double timedelta = now - m_previousTimeupdateTime;
622 653
623 if (timedelta < maxTimeupdateEventFrequency) 654 if (timedelta < maxTimeupdateEventFrequency)
624 return; 655 return;
625 656
626 scheduleEvent(EventTypeNames::timeupdate); 657 scheduleEvent(EventTypeNames::timeupdate);
627 m_previousTimeupdateTime = now; 658 m_previousTimeupdateTime = now;
628 } 659 }
OLDNEW
« no previous file with comments | « Source/core/html/MediaController.h ('k') | Source/core/html/shadow/MediaControlElements.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698