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

Side by Side Diff: third_party/WebKit/Source/core/html/HTMLMediaElement.cpp

Issue 1988753002: media: Replace wtf/Assertions.h macros in favor of base/logging.h macros (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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
« no previous file with comments | « no previous file | no next file » | 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) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 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 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 , m_textTracks(nullptr) 426 , m_textTracks(nullptr)
427 , m_playPromiseResolveTask(CancellableTaskFactory::create(this, &HTMLMediaEl ement::resolvePlayPromises)) 427 , m_playPromiseResolveTask(CancellableTaskFactory::create(this, &HTMLMediaEl ement::resolvePlayPromises))
428 , m_playPromiseRejectTask(CancellableTaskFactory::create(this, &HTMLMediaEle ment::rejectPlayPromises)) 428 , m_playPromiseRejectTask(CancellableTaskFactory::create(this, &HTMLMediaEle ment::rejectPlayPromises))
429 , m_audioSourceNode(nullptr) 429 , m_audioSourceNode(nullptr)
430 , m_autoplayHelperClient(AutoplayHelperClientImpl::create(this)) 430 , m_autoplayHelperClient(AutoplayHelperClientImpl::create(this))
431 , m_autoplayHelper(AutoplayExperimentHelper::create(m_autoplayHelperClient.g et())) 431 , m_autoplayHelper(AutoplayExperimentHelper::create(m_autoplayHelperClient.g et()))
432 , m_remotePlaybackClient(nullptr) 432 , m_remotePlaybackClient(nullptr)
433 { 433 {
434 ThreadState::current()->registerPreFinalizer(this); 434 ThreadState::current()->registerPreFinalizer(this);
435 435
436 WTF_LOG(Media, "HTMLMediaElement::HTMLMediaElement(%p)", this); 436 DVLOG(1) << "HTMLMediaElement::HTMLMediaElement(" << this << ")";
Srirama 2016/05/17 13:27:37 Should we simplify it by using ":" instead of brac
fs 2016/05/17 13:59:07 Maybe just have "HTMLMediaElement(" << this << ")"
437 437
438 if (document.settings() && document.settings()->mediaPlaybackRequiresUserGes ture()) 438 if (document.settings() && document.settings()->mediaPlaybackRequiresUserGes ture())
439 m_userGestureRequiredForPlay = true; 439 m_userGestureRequiredForPlay = true;
440 440
441 setHasCustomStyleCallbacks(); 441 setHasCustomStyleCallbacks();
442 addElementToDocumentMap(this, &document); 442 addElementToDocumentMap(this, &document);
443 443
444 UseCounter::count(document, UseCounter::HTMLMediaElement); 444 UseCounter::count(document, UseCounter::HTMLMediaElement);
445 } 445 }
446 446
447 HTMLMediaElement::~HTMLMediaElement() 447 HTMLMediaElement::~HTMLMediaElement()
448 { 448 {
449 WTF_LOG(Media, "HTMLMediaElement::~HTMLMediaElement(%p)", this); 449 DVLOG(1) << "HTMLMediaElement::~HTMLMediaElement(" << this << ")";
450 450
451 // m_audioSourceNode is explicitly cleared by AudioNode::dispose(). 451 // m_audioSourceNode is explicitly cleared by AudioNode::dispose().
452 // Since AudioNode::dispose() is guaranteed to be always called before 452 // Since AudioNode::dispose() is guaranteed to be always called before
453 // the AudioNode is destructed, m_audioSourceNode is explicitly cleared 453 // the AudioNode is destructed, m_audioSourceNode is explicitly cleared
454 // even if the AudioNode and the HTMLMediaElement die together. 454 // even if the AudioNode and the HTMLMediaElement die together.
455 ASSERT(!m_audioSourceNode); 455 ASSERT(!m_audioSourceNode);
456 } 456 }
457 457
458 void HTMLMediaElement::dispose() 458 void HTMLMediaElement::dispose()
459 { 459 {
460 closeMediaSource(); 460 closeMediaSource();
461 461
462 // Destroying the player may cause a resource load to be canceled, 462 // Destroying the player may cause a resource load to be canceled,
463 // which could result in LocalDOMWindow::dispatchWindowLoadEvent() being 463 // which could result in LocalDOMWindow::dispatchWindowLoadEvent() being
464 // called via ResourceFetch::didLoadResource(), then 464 // called via ResourceFetch::didLoadResource(), then
465 // FrameLoader::checkCompleted(). But it's guaranteed that the load event 465 // FrameLoader::checkCompleted(). But it's guaranteed that the load event
466 // doesn't get dispatched during the object destruction. 466 // doesn't get dispatched during the object destruction.
467 // See Document::isDelayingLoadEvent(). 467 // See Document::isDelayingLoadEvent().
468 // Also see http://crbug.com/275223 for more details. 468 // Also see http://crbug.com/275223 for more details.
469 clearMediaPlayerAndAudioSourceProviderClientWithoutLocking(); 469 clearMediaPlayerAndAudioSourceProviderClientWithoutLocking();
470 } 470 }
471 471
472 void HTMLMediaElement::didMoveToNewDocument(Document& oldDocument) 472 void HTMLMediaElement::didMoveToNewDocument(Document& oldDocument)
473 { 473 {
474 WTF_LOG(Media, "HTMLMediaElement::didMoveToNewDocument(%p)", this); 474 DVLOG(1) << "HTMLMediaElement::didMoveToNewDocument(" << this << ")";
475 475
476 if (m_shouldDelayLoadEvent) { 476 if (m_shouldDelayLoadEvent) {
477 document().incrementLoadEventDelayCount(); 477 document().incrementLoadEventDelayCount();
478 // Note: Keeping the load event delay count increment on oldDocument tha t was added 478 // Note: Keeping the load event delay count increment on oldDocument tha t was added
479 // when m_shouldDelayLoadEvent was set so that destruction of m_webMedia Player can not 479 // when m_shouldDelayLoadEvent was set so that destruction of m_webMedia Player can not
480 // cause load event dispatching in oldDocument. 480 // cause load event dispatching in oldDocument.
481 } else { 481 } else {
482 // Incrementing the load event delay count so that destruction of m_webM ediaPlayer can not 482 // Incrementing the load event delay count so that destruction of m_webM ediaPlayer can not
483 // cause load event dispatching in oldDocument. 483 // cause load event dispatching in oldDocument.
484 oldDocument.incrementLoadEventDelayCount(); 484 oldDocument.incrementLoadEventDelayCount();
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 return shouldShowControls() && HTMLElement::layoutObjectIsNeeded(style); 551 return shouldShowControls() && HTMLElement::layoutObjectIsNeeded(style);
552 } 552 }
553 553
554 LayoutObject* HTMLMediaElement::createLayoutObject(const ComputedStyle&) 554 LayoutObject* HTMLMediaElement::createLayoutObject(const ComputedStyle&)
555 { 555 {
556 return new LayoutMedia(this); 556 return new LayoutMedia(this);
557 } 557 }
558 558
559 Node::InsertionNotificationRequest HTMLMediaElement::insertedInto(ContainerNode* insertionPoint) 559 Node::InsertionNotificationRequest HTMLMediaElement::insertedInto(ContainerNode* insertionPoint)
560 { 560 {
561 WTF_LOG(Media, "HTMLMediaElement::insertedInto(%p, %p)", this, insertionPoin t); 561 DVLOG(1) << "HTMLMediaElement::insertedInto(" << this << ", " << insertionPo int << ")";
562 562
563 HTMLElement::insertedInto(insertionPoint); 563 HTMLElement::insertedInto(insertionPoint);
564 if (insertionPoint->inShadowIncludingDocument()) { 564 if (insertionPoint->inShadowIncludingDocument()) {
565 UseCounter::count(document(), UseCounter::HTMLMediaElementInDocument); 565 UseCounter::count(document(), UseCounter::HTMLMediaElementInDocument);
566 if ((!getAttribute(srcAttr).isEmpty() || m_srcObject) && m_networkState == NETWORK_EMPTY) { 566 if ((!getAttribute(srcAttr).isEmpty() || m_srcObject) && m_networkState == NETWORK_EMPTY) {
567 m_ignorePreloadNone = false; 567 m_ignorePreloadNone = false;
568 invokeLoadAlgorithm(); 568 invokeLoadAlgorithm();
569 } 569 }
570 } 570 }
571 571
572 return InsertionShouldCallDidNotifySubtreeInsertions; 572 return InsertionShouldCallDidNotifySubtreeInsertions;
573 } 573 }
574 574
575 void HTMLMediaElement::didNotifySubtreeInsertionsToDocument() 575 void HTMLMediaElement::didNotifySubtreeInsertionsToDocument()
576 { 576 {
577 configureMediaControls(); 577 configureMediaControls();
578 } 578 }
579 579
580 void HTMLMediaElement::removedFrom(ContainerNode* insertionPoint) 580 void HTMLMediaElement::removedFrom(ContainerNode* insertionPoint)
581 { 581 {
582 WTF_LOG(Media, "HTMLMediaElement::removedFrom(%p, %p)", this, insertionPoint ); 582 DVLOG(1) << "HTMLMediaElement::removedFrom(" << this << ", " << insertionPoi nt << ")";
583 583
584 HTMLElement::removedFrom(insertionPoint); 584 HTMLElement::removedFrom(insertionPoint);
585 if (insertionPoint->inActiveDocument()) { 585 if (insertionPoint->inActiveDocument()) {
586 configureMediaControls(); 586 configureMediaControls();
587 if (m_networkState > NETWORK_EMPTY) 587 if (m_networkState > NETWORK_EMPTY)
588 pauseInternal(); 588 pauseInternal();
589 } 589 }
590 } 590 }
591 591
592 void HTMLMediaElement::attach(const AttachContext& context) 592 void HTMLMediaElement::attach(const AttachContext& context)
593 { 593 {
594 HTMLElement::attach(context); 594 HTMLElement::attach(context);
595 595
596 if (layoutObject()) 596 if (layoutObject())
597 layoutObject()->updateFromElement(); 597 layoutObject()->updateFromElement();
598 } 598 }
599 599
600 void HTMLMediaElement::didRecalcStyle(StyleRecalcChange) 600 void HTMLMediaElement::didRecalcStyle(StyleRecalcChange)
601 { 601 {
602 if (layoutObject()) 602 if (layoutObject())
603 layoutObject()->updateFromElement(); 603 layoutObject()->updateFromElement();
604 } 604 }
605 605
606 void HTMLMediaElement::scheduleTextTrackResourceLoad() 606 void HTMLMediaElement::scheduleTextTrackResourceLoad()
607 { 607 {
608 WTF_LOG(Media, "HTMLMediaElement::scheduleTextTrackResourceLoad(%p)", this); 608 DVLOG(1) << "HTMLMediaElement::scheduleTextTrackResourceLoad(" << this << ") ";
609 609
610 m_pendingActionFlags |= LoadTextTrackResource; 610 m_pendingActionFlags |= LoadTextTrackResource;
611 611
612 if (!m_loadTimer.isActive()) 612 if (!m_loadTimer.isActive())
613 m_loadTimer.startOneShot(0, BLINK_FROM_HERE); 613 m_loadTimer.startOneShot(0, BLINK_FROM_HERE);
614 } 614 }
615 615
616 void HTMLMediaElement::scheduleNextSourceChild() 616 void HTMLMediaElement::scheduleNextSourceChild()
617 { 617 {
618 // Schedule the timer to try the next <source> element WITHOUT resetting sta te ala invokeLoadAlgorithm. 618 // Schedule the timer to try the next <source> element WITHOUT resetting sta te ala invokeLoadAlgorithm.
619 m_pendingActionFlags |= LoadMediaResource; 619 m_pendingActionFlags |= LoadMediaResource;
620 m_loadTimer.startOneShot(0, BLINK_FROM_HERE); 620 m_loadTimer.startOneShot(0, BLINK_FROM_HERE);
621 } 621 }
622 622
623 void HTMLMediaElement::scheduleEvent(const AtomicString& eventName) 623 void HTMLMediaElement::scheduleEvent(const AtomicString& eventName)
624 { 624 {
625 scheduleEvent(Event::createCancelable(eventName)); 625 scheduleEvent(Event::createCancelable(eventName));
626 } 626 }
627 627
628 void HTMLMediaElement::scheduleEvent(Event* event) 628 void HTMLMediaElement::scheduleEvent(Event* event)
629 { 629 {
630 #if LOG_MEDIA_EVENTS 630 #if LOG_MEDIA_EVENTS
631 WTF_LOG(Media, "HTMLMediaElement::scheduleEvent(%p) - scheduling '%s'", this , event->type().ascii().data()); 631 DVLOG(1) << "HTMLMediaElement::scheduleEvent(" << this << ")" << " - schedul ing '" << event->type().ascii().data() << "'";
632 #endif 632 #endif
633 m_asyncEventQueue->enqueueEvent(event); 633 m_asyncEventQueue->enqueueEvent(event);
634 } 634 }
635 635
636 void HTMLMediaElement::loadTimerFired(Timer<HTMLMediaElement>*) 636 void HTMLMediaElement::loadTimerFired(Timer<HTMLMediaElement>*)
637 { 637 {
638 if (m_pendingActionFlags & LoadTextTrackResource) 638 if (m_pendingActionFlags & LoadTextTrackResource)
639 honorUserPreferencesForAutomaticTextTrackSelection(); 639 honorUserPreferencesForAutomaticTextTrackSelection();
640 640
641 if (m_pendingActionFlags & LoadMediaResource) { 641 if (m_pendingActionFlags & LoadMediaResource) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 canPlay = emptyString(); 680 canPlay = emptyString();
681 break; 681 break;
682 case WebMimeRegistry::MayBeSupported: 682 case WebMimeRegistry::MayBeSupported:
683 canPlay = "maybe"; 683 canPlay = "maybe";
684 break; 684 break;
685 case WebMimeRegistry::IsSupported: 685 case WebMimeRegistry::IsSupported:
686 canPlay = "probably"; 686 canPlay = "probably";
687 break; 687 break;
688 } 688 }
689 689
690 WTF_LOG(Media, "HTMLMediaElement::canPlayType(%p, %s) -> %s", this, mimeType .utf8().data(), canPlay.utf8().data()); 690 DVLOG(1) << "HTMLMediaElement::canPlayType(" << this << ", " << mimeType.utf 8().data() << ") -> " << canPlay.utf8().data();
691 691
692 return canPlay; 692 return canPlay;
693 } 693 }
694 694
695 void HTMLMediaElement::load() 695 void HTMLMediaElement::load()
696 { 696 {
697 WTF_LOG(Media, "HTMLMediaElement::load(%p)", this); 697 WTF_LOG(Media, "HTMLMediaElement::load(%p)", this);
698 698
699 m_autoplayHelper->loadMethodCalled(); 699 m_autoplayHelper->loadMethodCalled();
700 700
701 m_ignorePreloadNone = true; 701 m_ignorePreloadNone = true;
702 invokeLoadAlgorithm(); 702 invokeLoadAlgorithm();
703 } 703 }
704 704
705 // TODO(srirama.m): Currently m_ignorePreloadNone is reset before calling 705 // TODO(srirama.m): Currently m_ignorePreloadNone is reset before calling
706 // invokeLoadAlgorithm() in all places except load(). Move it inside here 706 // invokeLoadAlgorithm() in all places except load(). Move it inside here
707 // once microtask is implemented for "Await a stable state" step 707 // once microtask is implemented for "Await a stable state" step
708 // in resource selection algorithm. 708 // in resource selection algorithm.
709 void HTMLMediaElement::invokeLoadAlgorithm() 709 void HTMLMediaElement::invokeLoadAlgorithm()
710 { 710 {
711 WTF_LOG(Media, "HTMLMediaElement::invokeLoadAlgorithm(%p)", this); 711 DVLOG(1) << "HTMLMediaElement::invokeLoadAlgorithm(" << this << ")";
712 712
713 // Perform the cleanup required for the resource load algorithm to run. 713 // Perform the cleanup required for the resource load algorithm to run.
714 stopPeriodicTimers(); 714 stopPeriodicTimers();
715 m_loadTimer.stop(); 715 m_loadTimer.stop();
716 cancelDeferredLoad(); 716 cancelDeferredLoad();
717 // FIXME: Figure out appropriate place to reset LoadTextTrackResource if nec essary and set m_pendingActionFlags to 0 here. 717 // FIXME: Figure out appropriate place to reset LoadTextTrackResource if nec essary and set m_pendingActionFlags to 0 here.
718 m_pendingActionFlags &= ~LoadMediaResource; 718 m_pendingActionFlags &= ~LoadMediaResource;
719 m_sentEndEvent = false; 719 m_sentEndEvent = false;
720 m_sentStalledEvent = false; 720 m_sentStalledEvent = false;
721 m_haveFiredLoadedData = false; 721 m_haveFiredLoadedData = false;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 m_autoplaying = true; 789 m_autoplaying = true;
790 790
791 // 7 - Invoke the media element's resource selection algorithm. 791 // 7 - Invoke the media element's resource selection algorithm.
792 invokeResourceSelectionAlgorithm(); 792 invokeResourceSelectionAlgorithm();
793 793
794 // 8 - Note: Playback of any previously playing media resource for this elem ent stops. 794 // 8 - Note: Playback of any previously playing media resource for this elem ent stops.
795 } 795 }
796 796
797 void HTMLMediaElement::invokeResourceSelectionAlgorithm() 797 void HTMLMediaElement::invokeResourceSelectionAlgorithm()
798 { 798 {
799 WTF_LOG(Media, "HTMLMediaElement::invokeResourceSelectionAlgorithm(%p)", thi s); 799 DVLOG(1) << "HTMLMediaElement::invokeResourceSelectionAlgorithm(" << this << ")";
800 // The resource selection algorithm 800 // The resource selection algorithm
801 // 1 - Set the networkState to NETWORK_NO_SOURCE 801 // 1 - Set the networkState to NETWORK_NO_SOURCE
802 setNetworkState(NETWORK_NO_SOURCE); 802 setNetworkState(NETWORK_NO_SOURCE);
803 803
804 // 2 - Set the element's show poster flag to true 804 // 2 - Set the element's show poster flag to true
805 // TODO(srirama.m): Introduce show poster flag and update it as per spec 805 // TODO(srirama.m): Introduce show poster flag and update it as per spec
806 806
807 m_playedTimeRanges = TimeRanges::create(); 807 m_playedTimeRanges = TimeRanges::create();
808 808
809 // FIXME: Investigate whether these can be moved into m_networkState != NETW ORK_EMPTY block above 809 // FIXME: Investigate whether these can be moved into m_networkState != NETW ORK_EMPTY block above
(...skipping 23 matching lines...) Expand all
833 if (track->mode() != TextTrack::disabledKeyword()) 833 if (track->mode() != TextTrack::disabledKeyword())
834 m_textTracksWhenResourceSelectionBegan.append(track); 834 m_textTracksWhenResourceSelectionBegan.append(track);
835 } 835 }
836 } 836 }
837 837
838 selectMediaResource(); 838 selectMediaResource();
839 } 839 }
840 840
841 void HTMLMediaElement::selectMediaResource() 841 void HTMLMediaElement::selectMediaResource()
842 { 842 {
843 WTF_LOG(Media, "HTMLMediaElement::selectMediaResource(%p)", this); 843 DVLOG(1) << "HTMLMediaElement::selectMediaResource(" << this << ")";
844 844
845 enum Mode { Object, Attribute, Children, Nothing }; 845 enum Mode { Object, Attribute, Children, Nothing };
846 Mode mode = Nothing; 846 Mode mode = Nothing;
847 847
848 // 6 - If the media element has an assigned media provider object, then let 848 // 6 - If the media element has an assigned media provider object, then let
849 // mode be object. 849 // mode be object.
850 if (m_srcObject) { 850 if (m_srcObject) {
851 mode = Object; 851 mode = Object;
852 } else if (fastHasAttribute(srcAttr)) { 852 } else if (fastHasAttribute(srcAttr)) {
853 // Otherwise, if the media element has no assigned media provider object 853 // Otherwise, if the media element has no assigned media provider object
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 if (m_progressEventTimer.isActive()) 1281 if (m_progressEventTimer.isActive())
1282 return; 1282 return;
1283 1283
1284 m_previousProgressTime = WTF::currentTime(); 1284 m_previousProgressTime = WTF::currentTime();
1285 // 350ms is not magic, it is in the spec! 1285 // 350ms is not magic, it is in the spec!
1286 m_progressEventTimer.startRepeating(0.350, BLINK_FROM_HERE); 1286 m_progressEventTimer.startRepeating(0.350, BLINK_FROM_HERE);
1287 } 1287 }
1288 1288
1289 void HTMLMediaElement::waitForSourceChange() 1289 void HTMLMediaElement::waitForSourceChange()
1290 { 1290 {
1291 WTF_LOG(Media, "HTMLMediaElement::waitForSourceChange(%p)", this); 1291 DVLOG(1) << "HTMLMediaElement::waitForSourceChange(" << this << ")";
1292 1292
1293 stopPeriodicTimers(); 1293 stopPeriodicTimers();
1294 m_loadState = WaitingForSource; 1294 m_loadState = WaitingForSource;
1295 1295
1296 // 6.17 - Waiting: Set the element's networkState attribute to the NETWORK_N O_SOURCE value 1296 // 6.17 - Waiting: Set the element's networkState attribute to the NETWORK_N O_SOURCE value
1297 setNetworkState(NETWORK_NO_SOURCE); 1297 setNetworkState(NETWORK_NO_SOURCE);
1298 1298
1299 // 6.18 - Set the element's delaying-the-load-event flag to false. This stop s delaying the load event. 1299 // 6.18 - Set the element's delaying-the-load-event flag to false. This stop s delaying the load event.
1300 setShouldDelayLoadEvent(false); 1300 setShouldDelayLoadEvent(false);
1301 1301
1302 updateDisplayState(); 1302 updateDisplayState();
1303 1303
1304 if (layoutObject()) 1304 if (layoutObject())
1305 layoutObject()->updateFromElement(); 1305 layoutObject()->updateFromElement();
1306 } 1306 }
1307 1307
1308 void HTMLMediaElement::noneSupported() 1308 void HTMLMediaElement::noneSupported()
1309 { 1309 {
1310 WTF_LOG(Media, "HTMLMediaElement::noneSupported(%p)", this); 1310 DVLOG(1) << "HTMLMediaElement::noneSupported(" << this << ")";
1311 1311
1312 stopPeriodicTimers(); 1312 stopPeriodicTimers();
1313 m_loadState = WaitingForSource; 1313 m_loadState = WaitingForSource;
1314 m_currentSourceNode = nullptr; 1314 m_currentSourceNode = nullptr;
1315 1315
1316 // 4.8.13.5 1316 // 4.8.13.5
1317 // The dedicated media source failure steps are the following steps: 1317 // The dedicated media source failure steps are the following steps:
1318 1318
1319 // 1 - Set the error attribute to a new MediaError object whose code attribu te is set to 1319 // 1 - Set the error attribute to a new MediaError object whose code attribu te is set to
1320 // MEDIA_ERR_SRC_NOT_SUPPORTED. 1320 // MEDIA_ERR_SRC_NOT_SUPPORTED.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 1365
1366 // 5 - Set the element's delaying-the-load-event flag to false. This stops d elaying the load event. 1366 // 5 - Set the element's delaying-the-load-event flag to false. This stops d elaying the load event.
1367 setShouldDelayLoadEvent(false); 1367 setShouldDelayLoadEvent(false);
1368 1368
1369 // 6 - Abort the overall resource selection algorithm. 1369 // 6 - Abort the overall resource selection algorithm.
1370 m_currentSourceNode = nullptr; 1370 m_currentSourceNode = nullptr;
1371 } 1371 }
1372 1372
1373 void HTMLMediaElement::cancelPendingEventsAndCallbacks() 1373 void HTMLMediaElement::cancelPendingEventsAndCallbacks()
1374 { 1374 {
1375 WTF_LOG(Media, "HTMLMediaElement::cancelPendingEventsAndCallbacks(%p)", this ); 1375 DVLOG(1) << "HTMLMediaElement::cancelPendingEventsAndCallbacks(" << this << ")";
1376 m_asyncEventQueue->cancelAllEvents(); 1376 m_asyncEventQueue->cancelAllEvents();
1377 1377
1378 for (HTMLSourceElement* source = Traversal<HTMLSourceElement>::firstChild(*t his); source; source = Traversal<HTMLSourceElement>::nextSibling(*source)) 1378 for (HTMLSourceElement* source = Traversal<HTMLSourceElement>::firstChild(*t his); source; source = Traversal<HTMLSourceElement>::nextSibling(*source))
1379 source->cancelPendingErrorEvent(); 1379 source->cancelPendingErrorEvent();
1380 1380
1381 m_playPromiseResolveTask->cancel(); 1381 m_playPromiseResolveTask->cancel();
1382 m_playPromiseRejectTask->cancel(); 1382 m_playPromiseRejectTask->cancel();
1383 } 1383 }
1384 1384
1385 void HTMLMediaElement::networkStateChanged() 1385 void HTMLMediaElement::networkStateChanged()
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
1739 1739
1740 // 11 - Set the current playback position to the given new playback position . 1740 // 11 - Set the current playback position to the given new playback position .
1741 webMediaPlayer()->seek(time); 1741 webMediaPlayer()->seek(time);
1742 1742
1743 // 14-17 are handled, if necessary, when the engine signals a readystate cha nge or otherwise 1743 // 14-17 are handled, if necessary, when the engine signals a readystate cha nge or otherwise
1744 // satisfies seek completion and signals a time change. 1744 // satisfies seek completion and signals a time change.
1745 } 1745 }
1746 1746
1747 void HTMLMediaElement::finishSeek() 1747 void HTMLMediaElement::finishSeek()
1748 { 1748 {
1749 WTF_LOG(Media, "HTMLMediaElement::finishSeek(%p)", this); 1749 DVLOG(1) << "HTMLMediaElement::finishSeek(" << this << ")";
1750 1750
1751 // 14 - Set the seeking IDL attribute to false. 1751 // 14 - Set the seeking IDL attribute to false.
1752 m_seeking = false; 1752 m_seeking = false;
1753 1753
1754 // 16 - Queue a task to fire a simple event named timeupdate at the element. 1754 // 16 - Queue a task to fire a simple event named timeupdate at the element.
1755 scheduleTimeupdateEvent(false); 1755 scheduleTimeupdateEvent(false);
1756 1756
1757 // 17 - Queue a task to fire a simple event named seeked at the element. 1757 // 17 - Queue a task to fire a simple event named seeked at the element.
1758 scheduleEvent(EventTypeNames::seeked); 1758 scheduleEvent(EventTypeNames::seeked);
1759 1759
(...skipping 25 matching lines...) Expand all
1785 void HTMLMediaElement::refreshCachedTime() const 1785 void HTMLMediaElement::refreshCachedTime() const
1786 { 1786 {
1787 if (!webMediaPlayer() || m_readyState < HAVE_METADATA) 1787 if (!webMediaPlayer() || m_readyState < HAVE_METADATA)
1788 return; 1788 return;
1789 1789
1790 m_cachedTime = webMediaPlayer()->currentTime(); 1790 m_cachedTime = webMediaPlayer()->currentTime();
1791 } 1791 }
1792 1792
1793 void HTMLMediaElement::invalidateCachedTime() 1793 void HTMLMediaElement::invalidateCachedTime()
1794 { 1794 {
1795 WTF_LOG(Media, "HTMLMediaElement::invalidateCachedTime(%p)", this); 1795 DVLOG(1) << "HTMLMediaElement::invalidateCachedTime(" << this << ")";
1796 m_cachedTime = std::numeric_limits<double>::quiet_NaN(); 1796 m_cachedTime = std::numeric_limits<double>::quiet_NaN();
1797 } 1797 }
1798 1798
1799 // playback state 1799 // playback state
1800 double HTMLMediaElement::currentTime() const 1800 double HTMLMediaElement::currentTime() const
1801 { 1801 {
1802 if (m_defaultPlaybackStartPosition) 1802 if (m_defaultPlaybackStartPosition)
1803 return m_defaultPlaybackStartPosition; 1803 return m_defaultPlaybackStartPosition;
1804 1804
1805 if (m_readyState == HAVE_NOTHING) 1805 if (m_readyState == HAVE_NOTHING)
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
2023 2023
2024 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 2024 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
2025 ScriptPromise promise = resolver->promise(); 2025 ScriptPromise promise = resolver->promise();
2026 2026
2027 m_playResolvers.append(resolver); 2027 m_playResolvers.append(resolver);
2028 return promise; 2028 return promise;
2029 } 2029 }
2030 2030
2031 Nullable<ExceptionCode> HTMLMediaElement::play() 2031 Nullable<ExceptionCode> HTMLMediaElement::play()
2032 { 2032 {
2033 WTF_LOG(Media, "HTMLMediaElement::play(%p)", this); 2033 DVLOG(1) << "HTMLMediaElement::play(" << this << ")";
2034 2034
2035 m_autoplayHelper->playMethodCalled(); 2035 m_autoplayHelper->playMethodCalled();
2036 2036
2037 if (!UserGestureIndicator::processingUserGesture()) { 2037 if (!UserGestureIndicator::processingUserGesture()) {
2038 if (m_userGestureRequiredForPlay) { 2038 if (m_userGestureRequiredForPlay) {
2039 recordAutoplayMetric(PlayMethodFailed); 2039 recordAutoplayMetric(PlayMethodFailed);
2040 String message = ExceptionMessages::failedToExecute("play", "HTMLMed iaElement", "API can only be initiated by a user gesture."); 2040 String message = ExceptionMessages::failedToExecute("play", "HTMLMed iaElement", "API can only be initiated by a user gesture.");
2041 document().addConsoleMessage(ConsoleMessage::create(JSMessageSource, WarningMessageLevel, message)); 2041 document().addConsoleMessage(ConsoleMessage::create(JSMessageSource, WarningMessageLevel, message));
2042 return NotAllowedError; 2042 return NotAllowedError;
2043 } 2043 }
2044 } else { 2044 } else {
2045 UserGestureIndicator::utilizeUserGesture(); 2045 UserGestureIndicator::utilizeUserGesture();
2046 // We ask the helper to remove the gesture requirement for us, so that 2046 // We ask the helper to remove the gesture requirement for us, so that
2047 // it can record the reason. 2047 // it can record the reason.
2048 Platform::current()->recordAction(UserMetricsAction("Media_Play_WithGest ure")); 2048 Platform::current()->recordAction(UserMetricsAction("Media_Play_WithGest ure"));
2049 m_autoplayHelper->removeUserGestureRequirement(GesturelessPlaybackEnable dByPlayMethod); 2049 m_autoplayHelper->removeUserGestureRequirement(GesturelessPlaybackEnable dByPlayMethod);
2050 } 2050 }
2051 2051
2052 if (m_error && m_error->code() == MediaError::MEDIA_ERR_SRC_NOT_SUPPORTED) 2052 if (m_error && m_error->code() == MediaError::MEDIA_ERR_SRC_NOT_SUPPORTED)
2053 return NotSupportedError; 2053 return NotSupportedError;
2054 2054
2055 playInternal(); 2055 playInternal();
2056 2056
2057 return nullptr; 2057 return nullptr;
2058 } 2058 }
2059 2059
2060 void HTMLMediaElement::playInternal() 2060 void HTMLMediaElement::playInternal()
2061 { 2061 {
2062 WTF_LOG(Media, "HTMLMediaElement::playInternal(%p)", this); 2062 DVLOG(1) << "HTMLMediaElement::playInternal(" << this << ")";
2063 2063
2064 // Always return the buffering strategy to normal when not paused, 2064 // Always return the buffering strategy to normal when not paused,
2065 // regardless of the cause. (In contrast with aggressive buffering which is 2065 // regardless of the cause. (In contrast with aggressive buffering which is
2066 // only enabled by pause(), not pauseInternal().) 2066 // only enabled by pause(), not pauseInternal().)
2067 if (webMediaPlayer()) 2067 if (webMediaPlayer())
2068 webMediaPlayer()->setBufferingStrategy(WebMediaPlayer::BufferingStrategy ::Normal); 2068 webMediaPlayer()->setBufferingStrategy(WebMediaPlayer::BufferingStrategy ::Normal);
2069 2069
2070 // 4.8.10.9. Playing the media resource 2070 // 4.8.10.9. Playing the media resource
2071 if (m_networkState == NETWORK_EMPTY) 2071 if (m_networkState == NETWORK_EMPTY)
2072 invokeResourceSelectionAlgorithm(); 2072 invokeResourceSelectionAlgorithm();
(...skipping 18 matching lines...) Expand all
2091 } 2091 }
2092 2092
2093 m_autoplaying = false; 2093 m_autoplaying = false;
2094 2094
2095 setIgnorePreloadNone(); 2095 setIgnorePreloadNone();
2096 updatePlayState(); 2096 updatePlayState();
2097 } 2097 }
2098 2098
2099 void HTMLMediaElement::pause() 2099 void HTMLMediaElement::pause()
2100 { 2100 {
2101 WTF_LOG(Media, "HTMLMediaElement::pause(%p)", this); 2101 DVLOG(1) << "HTMLMediaElement::pause(" << this << ")";
2102 2102
2103 // Only buffer aggressively on a user-initiated pause. Other types of pauses 2103 // Only buffer aggressively on a user-initiated pause. Other types of pauses
2104 // (which go directly to pauseInternal()) should not cause this behavior. 2104 // (which go directly to pauseInternal()) should not cause this behavior.
2105 if (webMediaPlayer() && UserGestureIndicator::utilizeUserGesture()) 2105 if (webMediaPlayer() && UserGestureIndicator::utilizeUserGesture())
2106 webMediaPlayer()->setBufferingStrategy(WebMediaPlayer::BufferingStrategy ::Aggressive); 2106 webMediaPlayer()->setBufferingStrategy(WebMediaPlayer::BufferingStrategy ::Aggressive);
2107 2107
2108 pauseInternal(); 2108 pauseInternal();
2109 } 2109 }
2110 2110
2111 void HTMLMediaElement::pauseInternal() 2111 void HTMLMediaElement::pauseInternal()
2112 { 2112 {
2113 WTF_LOG(Media, "HTMLMediaElement::pauseInternal(%p)", this); 2113 DVLOG(1) << "HTMLMediaElement::pauseInternal(" << this << ")";
2114 2114
2115 if (m_networkState == NETWORK_EMPTY) 2115 if (m_networkState == NETWORK_EMPTY)
2116 invokeResourceSelectionAlgorithm(); 2116 invokeResourceSelectionAlgorithm();
2117 2117
2118 m_autoplayHelper->pauseMethodCalled(); 2118 m_autoplayHelper->pauseMethodCalled();
2119 2119
2120 m_autoplaying = false; 2120 m_autoplaying = false;
2121 2121
2122 if (!m_paused) { 2122 if (!m_paused) {
2123 m_paused = true; 2123 m_paused = true;
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
2361 return 0; 2361 return 0;
2362 2362
2363 AudioTrack* audioTrack = AudioTrack::create(id, kindString, label, language, enabled); 2363 AudioTrack* audioTrack = AudioTrack::create(id, kindString, label, language, enabled);
2364 audioTracks().add(audioTrack); 2364 audioTracks().add(audioTrack);
2365 2365
2366 return audioTrack->trackId(); 2366 return audioTrack->trackId();
2367 } 2367 }
2368 2368
2369 void HTMLMediaElement::removeAudioTrack(WebMediaPlayer::TrackId trackId) 2369 void HTMLMediaElement::removeAudioTrack(WebMediaPlayer::TrackId trackId)
2370 { 2370 {
2371 WTF_LOG(Media, "HTMLMediaElement::removeAudioTrack(%p)", this); 2371 DVLOG(1) << "HTMLMediaElement::removeAudioTrack(" << this << ")";
2372 2372
2373 if (!RuntimeEnabledFeatures::audioVideoTracksEnabled()) 2373 if (!RuntimeEnabledFeatures::audioVideoTracksEnabled())
2374 return; 2374 return;
2375 2375
2376 audioTracks().remove(trackId); 2376 audioTracks().remove(trackId);
2377 } 2377 }
2378 2378
2379 VideoTrackList& HTMLMediaElement::videoTracks() 2379 VideoTrackList& HTMLMediaElement::videoTracks()
2380 { 2380 {
2381 ASSERT(RuntimeEnabledFeatures::audioVideoTracksEnabled()); 2381 ASSERT(RuntimeEnabledFeatures::audioVideoTracksEnabled());
(...skipping 27 matching lines...) Expand all
2409 selected = false; 2409 selected = false;
2410 2410
2411 VideoTrack* videoTrack = VideoTrack::create(id, kindString, label, language, selected); 2411 VideoTrack* videoTrack = VideoTrack::create(id, kindString, label, language, selected);
2412 videoTracks().add(videoTrack); 2412 videoTracks().add(videoTrack);
2413 2413
2414 return videoTrack->trackId(); 2414 return videoTrack->trackId();
2415 } 2415 }
2416 2416
2417 void HTMLMediaElement::removeVideoTrack(WebMediaPlayer::TrackId trackId) 2417 void HTMLMediaElement::removeVideoTrack(WebMediaPlayer::TrackId trackId)
2418 { 2418 {
2419 WTF_LOG(Media, "HTMLMediaElement::removeVideoTrack(%p)", this); 2419 DVLOG(1) << "HTMLMediaElement::removeVideoTrack(" << this << ")";
2420 2420
2421 if (!RuntimeEnabledFeatures::audioVideoTracksEnabled()) 2421 if (!RuntimeEnabledFeatures::audioVideoTracksEnabled())
2422 return; 2422 return;
2423 2423
2424 videoTracks().remove(trackId); 2424 videoTracks().remove(trackId);
2425 } 2425 }
2426 2426
2427 void HTMLMediaElement::addTextTrack(WebInbandTextTrack* webTrack) 2427 void HTMLMediaElement::addTextTrack(WebInbandTextTrack* webTrack)
2428 { 2428 {
2429 // 4.8.10.12.2 Sourcing in-band text tracks 2429 // 4.8.10.12.2 Sourcing in-band text tracks
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
2635 2635
2636 return nextURL.isValid(); 2636 return nextURL.isValid();
2637 } 2637 }
2638 2638
2639 KURL HTMLMediaElement::selectNextSourceChild(ContentType* contentType, InvalidUR LAction actionIfInvalid) 2639 KURL HTMLMediaElement::selectNextSourceChild(ContentType* contentType, InvalidUR LAction actionIfInvalid)
2640 { 2640 {
2641 #if !LOG_DISABLED 2641 #if !LOG_DISABLED
2642 // Don't log if this was just called to find out if there are any valid <sou rce> elements. 2642 // Don't log if this was just called to find out if there are any valid <sou rce> elements.
2643 bool shouldLog = actionIfInvalid != DoNothing; 2643 bool shouldLog = actionIfInvalid != DoNothing;
2644 if (shouldLog) 2644 if (shouldLog)
2645 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild(%p)", this); 2645 DVLOG(1) << "HTMLMediaElement::selectNextSourceChild(" << this << ")";
2646 #endif 2646 #endif
2647 2647
2648 if (!m_nextChildNodeToConsider) { 2648 if (!m_nextChildNodeToConsider) {
2649 #if !LOG_DISABLED 2649 #if !LOG_DISABLED
2650 if (shouldLog) 2650 if (shouldLog)
2651 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild(%p) -> 0x000 0, \"\"", this); 2651 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild(%p) -> 0x000 0, \"\"", this);
2652 #endif 2652 #endif
2653 return KURL(); 2653 return KURL();
2654 } 2654 }
2655 2655
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
2810 // Clear the current source node pointer, but don't change the movie as the spec says: 2810 // Clear the current source node pointer, but don't change the movie as the spec says:
2811 // 4.8.8 - Dynamically modifying a source element and its attribute when the element is already 2811 // 4.8.8 - Dynamically modifying a source element and its attribute when the element is already
2812 // inserted in a video or audio element will have no effect. 2812 // inserted in a video or audio element will have no effect.
2813 m_currentSourceNode = nullptr; 2813 m_currentSourceNode = nullptr;
2814 WTF_LOG(Media, "HTMLMediaElement::sourceRemoved(%p) - m_currentSourceNod e set to 0", this); 2814 WTF_LOG(Media, "HTMLMediaElement::sourceRemoved(%p) - m_currentSourceNod e set to 0", this);
2815 } 2815 }
2816 } 2816 }
2817 2817
2818 void HTMLMediaElement::timeChanged() 2818 void HTMLMediaElement::timeChanged()
2819 { 2819 {
2820 WTF_LOG(Media, "HTMLMediaElement::timeChanged(%p)", this); 2820 DVLOG(1) << "HTMLMediaElement::timeChanged(" << this << ")";
2821 2821
2822 cueTimeline().updateActiveCues(currentTime()); 2822 cueTimeline().updateActiveCues(currentTime());
2823 2823
2824 invalidateCachedTime(); 2824 invalidateCachedTime();
2825 2825
2826 // 4.8.10.9 steps 12-14. Needed if no ReadyState change is associated with t he seek. 2826 // 4.8.10.9 steps 12-14. Needed if no ReadyState change is associated with t he seek.
2827 if (m_seeking && m_readyState >= HAVE_CURRENT_DATA && !webMediaPlayer()->see king()) 2827 if (m_seeking && m_readyState >= HAVE_CURRENT_DATA && !webMediaPlayer()->see king())
2828 finishSeek(); 2828 finishSeek();
2829 2829
2830 // Always call scheduleTimeupdateEvent when the media engine reports a time discontinuity, 2830 // Always call scheduleTimeupdateEvent when the media engine reports a time discontinuity,
(...skipping 29 matching lines...) Expand all
2860 } 2860 }
2861 } else { 2861 } else {
2862 m_sentEndEvent = false; 2862 m_sentEndEvent = false;
2863 } 2863 }
2864 2864
2865 updatePlayState(); 2865 updatePlayState();
2866 } 2866 }
2867 2867
2868 void HTMLMediaElement::durationChanged() 2868 void HTMLMediaElement::durationChanged()
2869 { 2869 {
2870 WTF_LOG(Media, "HTMLMediaElement::durationChanged(%p)", this); 2870 DVLOG(1) << "HTMLMediaElement::durationChanged(" << this << ")";
2871 // FIXME: Change WebMediaPlayer to convey the currentTime 2871 // FIXME: Change WebMediaPlayer to convey the currentTime
2872 // when the duration change occured. The current WebMediaPlayer 2872 // when the duration change occured. The current WebMediaPlayer
2873 // implementations always clamp currentTime() to duration() 2873 // implementations always clamp currentTime() to duration()
2874 // so the requestSeek condition here is always false. 2874 // so the requestSeek condition here is always false.
2875 durationChanged(duration(), currentTime() > duration()); 2875 durationChanged(duration(), currentTime() > duration());
2876 } 2876 }
2877 2877
2878 void HTMLMediaElement::durationChanged(double duration, bool requestSeek) 2878 void HTMLMediaElement::durationChanged(double duration, bool requestSeek)
2879 { 2879 {
2880 WTF_LOG(Media, "HTMLMediaElement::durationChanged(%p, %f, %d)", this, durati on, requestSeek); 2880 WTF_LOG(Media, "HTMLMediaElement::durationChanged(%p, %f, %d)", this, durati on, requestSeek);
(...skipping 10 matching lines...) Expand all
2891 mediaControls()->reset(); 2891 mediaControls()->reset();
2892 if (layoutObject()) 2892 if (layoutObject())
2893 layoutObject()->updateFromElement(); 2893 layoutObject()->updateFromElement();
2894 2894
2895 if (requestSeek) 2895 if (requestSeek)
2896 seek(duration); 2896 seek(duration);
2897 } 2897 }
2898 2898
2899 void HTMLMediaElement::playbackStateChanged() 2899 void HTMLMediaElement::playbackStateChanged()
2900 { 2900 {
2901 WTF_LOG(Media, "HTMLMediaElement::playbackStateChanged(%p)", this); 2901 DVLOG(1) << "HTMLMediaElement::playbackStateChanged(" << this << ")";
2902 2902
2903 if (!webMediaPlayer()) 2903 if (!webMediaPlayer())
2904 return; 2904 return;
2905 2905
2906 if (webMediaPlayer()->paused()) 2906 if (webMediaPlayer()->paused())
2907 pauseInternal(); 2907 pauseInternal();
2908 else 2908 else
2909 playInternal(); 2909 playInternal();
2910 } 2910 }
2911 2911
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2954 if (m_webLayer) 2954 if (m_webLayer)
2955 m_webLayer->invalidate(); 2955 m_webLayer->invalidate();
2956 2956
2957 updateDisplayState(); 2957 updateDisplayState();
2958 if (layoutObject()) 2958 if (layoutObject())
2959 layoutObject()->setShouldDoFullPaintInvalidation(); 2959 layoutObject()->setShouldDoFullPaintInvalidation();
2960 } 2960 }
2961 2961
2962 void HTMLMediaElement::sizeChanged() 2962 void HTMLMediaElement::sizeChanged()
2963 { 2963 {
2964 WTF_LOG(Media, "HTMLMediaElement::sizeChanged(%p)", this); 2964 DVLOG(1) << "HTMLMediaElement::sizeChanged(" << this << ")";
2965 2965
2966 ASSERT(hasVideo()); // "resize" makes no sense absent video. 2966 ASSERT(hasVideo()); // "resize" makes no sense absent video.
2967 if (m_readyState > HAVE_NOTHING && isHTMLVideoElement()) 2967 if (m_readyState > HAVE_NOTHING && isHTMLVideoElement())
2968 scheduleEvent(EventTypeNames::resize); 2968 scheduleEvent(EventTypeNames::resize);
2969 2969
2970 if (layoutObject()) 2970 if (layoutObject())
2971 layoutObject()->updateFromElement(); 2971 layoutObject()->updateFromElement();
2972 } 2972 }
2973 2973
2974 TimeRanges* HTMLMediaElement::buffered() const 2974 TimeRanges* HTMLMediaElement::buffered() const
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
3147 m_playingRemotely = false; 3147 m_playingRemotely = false;
3148 if (mediaControls()) 3148 if (mediaControls())
3149 mediaControls()->refreshCastButtonVisibilityWithoutUpdate(); 3149 mediaControls()->refreshCastButtonVisibilityWithoutUpdate();
3150 3150
3151 if (layoutObject()) 3151 if (layoutObject())
3152 layoutObject()->setShouldDoFullPaintInvalidation(); 3152 layoutObject()->setShouldDoFullPaintInvalidation();
3153 } 3153 }
3154 3154
3155 void HTMLMediaElement::stop() 3155 void HTMLMediaElement::stop()
3156 { 3156 {
3157 WTF_LOG(Media, "HTMLMediaElement::stop(%p)", this); 3157 DVLOG(1) << "HTMLMediaElement::stop(" << this << ")";
3158 3158
3159 // Close the async event queue so that no events are enqueued. 3159 // Close the async event queue so that no events are enqueued.
3160 cancelPendingEventsAndCallbacks(); 3160 cancelPendingEventsAndCallbacks();
3161 m_asyncEventQueue->close(); 3161 m_asyncEventQueue->close();
3162 3162
3163 // Clear everything in the Media Element 3163 // Clear everything in the Media Element
3164 clearMediaPlayer(); 3164 clearMediaPlayer();
3165 m_readyState = HAVE_NOTHING; 3165 m_readyState = HAVE_NOTHING;
3166 m_readyStateMaximum = HAVE_NOTHING; 3166 m_readyStateMaximum = HAVE_NOTHING;
3167 setNetworkState(NETWORK_EMPTY); 3167 setNetworkState(NETWORK_EMPTY);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
3214 return false; 3214 return false;
3215 } 3215 }
3216 3216
3217 bool HTMLMediaElement::isFullscreen() const 3217 bool HTMLMediaElement::isFullscreen() const
3218 { 3218 {
3219 return Fullscreen::isActiveFullScreenElement(*this); 3219 return Fullscreen::isActiveFullScreenElement(*this);
3220 } 3220 }
3221 3221
3222 void HTMLMediaElement::enterFullscreen() 3222 void HTMLMediaElement::enterFullscreen()
3223 { 3223 {
3224 WTF_LOG(Media, "HTMLMediaElement::enterFullscreen(%p)", this); 3224 DVLOG(1) << "HTMLMediaElement::enterFullscreen(" << this << ")";
3225 3225
3226 Fullscreen::from(document()).requestFullscreen(*this, Fullscreen::PrefixedRe quest); 3226 Fullscreen::from(document()).requestFullscreen(*this, Fullscreen::PrefixedRe quest);
3227 } 3227 }
3228 3228
3229 void HTMLMediaElement::exitFullscreen() 3229 void HTMLMediaElement::exitFullscreen()
3230 { 3230 {
3231 WTF_LOG(Media, "HTMLMediaElement::exitFullscreen(%p)", this); 3231 DVLOG(1) << "HTMLMediaElement::exitFullscreen(" << this << ")";
3232 3232
3233 Fullscreen::from(document()).exitFullscreen(); 3233 Fullscreen::from(document()).exitFullscreen();
3234 } 3234 }
3235 3235
3236 void HTMLMediaElement::didBecomeFullscreenElement() 3236 void HTMLMediaElement::didBecomeFullscreenElement()
3237 { 3237 {
3238 if (mediaControls()) 3238 if (mediaControls())
3239 mediaControls()->enteredFullscreen(); 3239 mediaControls()->enteredFullscreen();
3240 // FIXME: There is no embedder-side handling in layout test mode. 3240 // FIXME: There is no embedder-side handling in layout test mode.
3241 if (webMediaPlayer() && !LayoutTestSupport::isRunningLayoutTest()) 3241 if (webMediaPlayer() && !LayoutTestSupport::isRunningLayoutTest())
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
3317 // so that they are rendered behind them. 3317 // so that they are rendered behind them.
3318 shadowRoot.insertBefore(textTrackContainer, firstChild); 3318 shadowRoot.insertBefore(textTrackContainer, firstChild);
3319 3319
3320 assertShadowRootChildren(shadowRoot); 3320 assertShadowRootChildren(shadowRoot);
3321 3321
3322 return *textTrackContainer; 3322 return *textTrackContainer;
3323 } 3323 }
3324 3324
3325 void HTMLMediaElement::updateTextTrackDisplay() 3325 void HTMLMediaElement::updateTextTrackDisplay()
3326 { 3326 {
3327 WTF_LOG(Media, "HTMLMediaElement::updateTextTrackDisplay(%p)", this); 3327 DVLOG(1) << "HTMLMediaElement::updateTextTrackDisplay(" << this << ")";
3328 3328
3329 ensureTextTrackContainer().updateDisplay(*this, TextTrackContainer::DidNotSt artExposingControls); 3329 ensureTextTrackContainer().updateDisplay(*this, TextTrackContainer::DidNotSt artExposingControls);
3330 } 3330 }
3331 3331
3332 void HTMLMediaElement::mediaControlsDidBecomeVisible() 3332 void HTMLMediaElement::mediaControlsDidBecomeVisible()
3333 { 3333 {
3334 WTF_LOG(Media, "HTMLMediaElement::mediaControlsDidBecomeVisible(%p)", this); 3334 DVLOG(1) << "HTMLMediaElement::mediaControlsDidBecomeVisible(" << this << ") ";
3335 3335
3336 // When the user agent starts exposing a user interface for a video element, 3336 // When the user agent starts exposing a user interface for a video element,
3337 // the user agent should run the rules for updating the text track rendering 3337 // the user agent should run the rules for updating the text track rendering
3338 // of each of the text tracks in the video element's list of text tracks ... 3338 // of each of the text tracks in the video element's list of text tracks ...
3339 if (isHTMLVideoElement() && textTracksVisible()) 3339 if (isHTMLVideoElement() && textTracksVisible())
3340 ensureTextTrackContainer().updateDisplay(*this, TextTrackContainer::DidS tartExposingControls); 3340 ensureTextTrackContainer().updateDisplay(*this, TextTrackContainer::DidS tartExposingControls);
3341 } 3341 }
3342 3342
3343 void HTMLMediaElement::setTextTrackKindUserPreferenceForAllMediaElements(Documen t* document) 3343 void HTMLMediaElement::setTextTrackKindUserPreferenceForAllMediaElements(Documen t* document)
3344 { 3344 {
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
3476 CueTimeline& HTMLMediaElement::cueTimeline() 3476 CueTimeline& HTMLMediaElement::cueTimeline()
3477 { 3477 {
3478 if (!m_cueTimeline) 3478 if (!m_cueTimeline)
3479 m_cueTimeline = new CueTimeline(*this); 3479 m_cueTimeline = new CueTimeline(*this);
3480 return *m_cueTimeline; 3480 return *m_cueTimeline;
3481 } 3481 }
3482 3482
3483 void HTMLMediaElement::configureTextTrackDisplay() 3483 void HTMLMediaElement::configureTextTrackDisplay()
3484 { 3484 {
3485 ASSERT(m_textTracks); 3485 ASSERT(m_textTracks);
3486 WTF_LOG(Media, "HTMLMediaElement::configureTextTrackDisplay(%p)", this); 3486 DVLOG(1) << "HTMLMediaElement::configureTextTrackDisplay(" << this << ")";
3487 3487
3488 if (m_processingPreferenceChange) 3488 if (m_processingPreferenceChange)
3489 return; 3489 return;
3490 3490
3491 bool haveVisibleTextTrack = m_textTracks->hasShowingTracks(); 3491 bool haveVisibleTextTrack = m_textTracks->hasShowingTracks();
3492 m_textTracksVisible = haveVisibleTextTrack; 3492 m_textTracksVisible = haveVisibleTextTrack;
3493 3493
3494 if (!haveVisibleTextTrack && !mediaControls()) 3494 if (!haveVisibleTextTrack && !mediaControls())
3495 return; 3495 return;
3496 3496
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
3850 3850
3851 IntRect HTMLMediaElement::AutoplayHelperClientImpl::absoluteBoundingBoxRect() co nst 3851 IntRect HTMLMediaElement::AutoplayHelperClientImpl::absoluteBoundingBoxRect() co nst
3852 { 3852 {
3853 IntRect result; 3853 IntRect result;
3854 if (LayoutObject* object = m_element->layoutObject()) 3854 if (LayoutObject* object = m_element->layoutObject())
3855 result = object->absoluteBoundingBoxRect(); 3855 result = object->absoluteBoundingBoxRect();
3856 return result; 3856 return result;
3857 } 3857 }
3858 3858
3859 } // namespace blink 3859 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698