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

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

Issue 353383003: Use Traversal<HTMLSourceElement> to find the next source candidate (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 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/HTMLMediaElement.h ('k') | 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 693 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 m_pendingActionFlags &= ~LoadMediaResource; 704 m_pendingActionFlags &= ~LoadMediaResource;
705 m_sentEndEvent = false; 705 m_sentEndEvent = false;
706 m_sentStalledEvent = false; 706 m_sentStalledEvent = false;
707 m_haveFiredLoadedData = false; 707 m_haveFiredLoadedData = false;
708 m_completelyLoaded = false; 708 m_completelyLoaded = false;
709 m_havePreparedToPlay = false; 709 m_havePreparedToPlay = false;
710 m_displayMode = Unknown; 710 m_displayMode = Unknown;
711 711
712 // 1 - Abort any already-running instance of the resource selection algorith m for this element. 712 // 1 - Abort any already-running instance of the resource selection algorith m for this element.
713 m_loadState = WaitingForSource; 713 m_loadState = WaitingForSource;
714 m_currentSourceNode = nullptr; 714 m_currentSourceElement = nullptr;
715 715
716 // 2 - If there are any tasks from the media element's media element event t ask source in 716 // 2 - If there are any tasks from the media element's media element event t ask source in
717 // one of the task queues, then remove those tasks. 717 // one of the task queues, then remove those tasks.
718 cancelPendingEventsAndCallbacks(); 718 cancelPendingEventsAndCallbacks();
719 719
720 // 3 - If the media element's networkState is set to NETWORK_LOADING or NETW ORK_IDLE, queue 720 // 3 - If the media element's networkState is set to NETWORK_LOADING or NETW ORK_IDLE, queue
721 // a task to fire a simple event named abort at the media element. 721 // a task to fire a simple event named abort at the media element.
722 if (m_networkState == NETWORK_LOADING || m_networkState == NETWORK_IDLE) 722 if (m_networkState == NETWORK_LOADING || m_networkState == NETWORK_IDLE)
723 scheduleEvent(EventTypeNames::abort); 723 scheduleEvent(EventTypeNames::abort);
724 724
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 enum Mode { attribute, children }; 819 enum Mode { attribute, children };
820 820
821 // 3 - If the media element has a src attribute, then let mode be attribute. 821 // 3 - If the media element has a src attribute, then let mode be attribute.
822 Mode mode = attribute; 822 Mode mode = attribute;
823 if (!fastHasAttribute(srcAttr)) { 823 if (!fastHasAttribute(srcAttr)) {
824 // Otherwise, if the media element does not have a src attribute but has a source 824 // Otherwise, if the media element does not have a src attribute but has a source
825 // element child, then let mode be children and let candidate be the fir st such 825 // element child, then let mode be children and let candidate be the fir st such
826 // source element child in tree order. 826 // source element child in tree order.
827 if (HTMLSourceElement* element = Traversal<HTMLSourceElement>::firstChil d(*this)) { 827 if (HTMLSourceElement* element = Traversal<HTMLSourceElement>::firstChil d(*this)) {
828 mode = children; 828 mode = children;
829 m_nextChildNodeToConsider = element; 829 m_nextSourceElement = element;
830 m_currentSourceNode = nullptr; 830 m_currentSourceElement = nullptr;
831 } else { 831 } else {
832 // Otherwise the media element has neither a src attribute nor a sou rce element 832 // Otherwise the media element has neither a src attribute nor a sou rce element
833 // child: set the networkState to NETWORK_EMPTY, and abort these ste ps; the 833 // child: set the networkState to NETWORK_EMPTY, and abort these ste ps; the
834 // synchronous section ends. 834 // synchronous section ends.
835 m_loadState = WaitingForSource; 835 m_loadState = WaitingForSource;
836 setShouldDelayLoadEvent(false); 836 setShouldDelayLoadEvent(false);
837 m_networkState = NETWORK_EMPTY; 837 m_networkState = NETWORK_EMPTY;
838 838
839 WTF_LOG(Media, "HTMLMediaElement::selectMediaResource, nothing to lo ad"); 839 WTF_LOG(Media, "HTMLMediaElement::selectMediaResource, nothing to lo ad");
840 return; 840 return;
(...skipping 695 matching lines...) Expand 10 before | Expand all | Expand 10 after
1536 if (renderer()) 1536 if (renderer())
1537 renderer()->updateFromElement(); 1537 renderer()->updateFromElement();
1538 } 1538 }
1539 1539
1540 void HTMLMediaElement::noneSupported() 1540 void HTMLMediaElement::noneSupported()
1541 { 1541 {
1542 WTF_LOG(Media, "HTMLMediaElement::noneSupported"); 1542 WTF_LOG(Media, "HTMLMediaElement::noneSupported");
1543 1543
1544 stopPeriodicTimers(); 1544 stopPeriodicTimers();
1545 m_loadState = WaitingForSource; 1545 m_loadState = WaitingForSource;
1546 m_currentSourceNode = nullptr; 1546 m_currentSourceElement = nullptr;
1547 1547
1548 // 4.8.10.5 1548 // 4.8.10.5
1549 // 6 - Reaching this step indicates that the media resource failed to load o r that the given 1549 // 6 - Reaching this step indicates that the media resource failed to load o r that the given
1550 // URL could not be resolved. In one atomic operation, run the following ste ps: 1550 // URL could not be resolved. In one atomic operation, run the following ste ps:
1551 1551
1552 // 6.1 - Set the error attribute to a new MediaError object whose code attri bute is set to 1552 // 6.1 - Set the error attribute to a new MediaError object whose code attri bute is set to
1553 // MEDIA_ERR_SRC_NOT_SUPPORTED. 1553 // MEDIA_ERR_SRC_NOT_SUPPORTED.
1554 m_error = MediaError::create(MediaError::MEDIA_ERR_SRC_NOT_SUPPORTED); 1554 m_error = MediaError::create(MediaError::MEDIA_ERR_SRC_NOT_SUPPORTED);
1555 1555
1556 // 6.2 - Forget the media element's media-resource-specific text tracks. 1556 // 6.2 - Forget the media element's media-resource-specific text tracks.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1592 // 3 - Queue a task to fire a simple event named error at the media element. 1592 // 3 - Queue a task to fire a simple event named error at the media element.
1593 scheduleEvent(EventTypeNames::error); 1593 scheduleEvent(EventTypeNames::error);
1594 1594
1595 // 4 - Set the element's networkState attribute to the NETWORK_IDLE value. 1595 // 4 - Set the element's networkState attribute to the NETWORK_IDLE value.
1596 m_networkState = NETWORK_IDLE; 1596 m_networkState = NETWORK_IDLE;
1597 1597
1598 // 5 - Set the element's delaying-the-load-event flag to false. This stops d elaying the load event. 1598 // 5 - Set the element's delaying-the-load-event flag to false. This stops d elaying the load event.
1599 setShouldDelayLoadEvent(false); 1599 setShouldDelayLoadEvent(false);
1600 1600
1601 // 6 - Abort the overall resource selection algorithm. 1601 // 6 - Abort the overall resource selection algorithm.
1602 m_currentSourceNode = nullptr; 1602 m_currentSourceElement = nullptr;
1603 } 1603 }
1604 1604
1605 void HTMLMediaElement::cancelPendingEventsAndCallbacks() 1605 void HTMLMediaElement::cancelPendingEventsAndCallbacks()
1606 { 1606 {
1607 WTF_LOG(Media, "HTMLMediaElement::cancelPendingEventsAndCallbacks"); 1607 WTF_LOG(Media, "HTMLMediaElement::cancelPendingEventsAndCallbacks");
1608 m_asyncEventQueue->cancelAllEvents(); 1608 m_asyncEventQueue->cancelAllEvents();
1609 1609
1610 for (HTMLSourceElement* source = Traversal<HTMLSourceElement>::firstChild(*t his); source; source = Traversal<HTMLSourceElement>::nextSibling(*source)) 1610 for (HTMLSourceElement* source = Traversal<HTMLSourceElement>::firstChild(*t his); source; source = Traversal<HTMLSourceElement>::nextSibling(*source))
1611 source->cancelPendingErrorEvent(); 1611 source->cancelPendingErrorEvent();
1612 } 1612 }
1613 1613
1614 void HTMLMediaElement::mediaPlayerNetworkStateChanged() 1614 void HTMLMediaElement::mediaPlayerNetworkStateChanged()
1615 { 1615 {
1616 setNetworkState(m_player->networkState()); 1616 setNetworkState(m_player->networkState());
1617 } 1617 }
1618 1618
1619 void HTMLMediaElement::mediaLoadingFailed(MediaPlayer::NetworkState error) 1619 void HTMLMediaElement::mediaLoadingFailed(MediaPlayer::NetworkState error)
1620 { 1620 {
1621 stopPeriodicTimers(); 1621 stopPeriodicTimers();
1622 1622
1623 // If we failed while trying to load a <source> element, the movie was never parsed, and there are more 1623 // If we failed while trying to load a <source> element, the movie was never parsed, and there are more
1624 // <source> children, schedule the next one 1624 // <source> children, schedule the next one
1625 if (m_readyState < HAVE_METADATA && m_loadState == LoadingFromSourceElement) { 1625 if (m_readyState < HAVE_METADATA && m_loadState == LoadingFromSourceElement) {
1626 1626
1627 // resource selection algorithm 1627 // resource selection algorithm
1628 // Step 9.Otherwise.9 - Failed with elements: Queue a task, using the DO M manipulation task source, to fire a simple event named error at the candidate element. 1628 // Step 9.Otherwise.9 - Failed with elements: Queue a task, using the DO M manipulation task source, to fire a simple event named error at the candidate element.
1629 if (m_currentSourceNode) 1629 if (m_currentSourceElement)
1630 m_currentSourceNode->scheduleErrorEvent(); 1630 m_currentSourceElement->scheduleErrorEvent();
1631 else 1631 else
1632 WTF_LOG(Media, "HTMLMediaElement::setNetworkState - error event not sent, <source> was removed"); 1632 WTF_LOG(Media, "HTMLMediaElement::setNetworkState - error event not sent, <source> was removed");
1633 1633
1634 // 9.Otherwise.10 - Asynchronously await a stable state. The synchronous section consists of all the remaining steps of this algorithm until the algorit hm says the synchronous section has ended. 1634 // 9.Otherwise.10 - Asynchronously await a stable state. The synchronous section consists of all the remaining steps of this algorithm until the algorit hm says the synchronous section has ended.
1635 1635
1636 // 9.Otherwise.11 - Forget the media element's media-resource-specific t racks. 1636 // 9.Otherwise.11 - Forget the media element's media-resource-specific t racks.
1637 forgetResourceSpecificTracks(); 1637 forgetResourceSpecificTracks();
1638 1638
1639 if (havePotentialSourceChild()) { 1639 if (havePotentialSourceChild()) {
1640 WTF_LOG(Media, "HTMLMediaElement::setNetworkState - scheduling next <source>"); 1640 WTF_LOG(Media, "HTMLMediaElement::setNetworkState - scheduling next <source>");
(...skipping 1182 matching lines...) Expand 10 before | Expand all | Expand 10 after
2823 configureTextTrackGroup(otherTracks); 2823 configureTextTrackGroup(otherTracks);
2824 2824
2825 if (hasMediaControls()) 2825 if (hasMediaControls())
2826 mediaControls()->closedCaptionTracksChanged(); 2826 mediaControls()->closedCaptionTracksChanged();
2827 } 2827 }
2828 2828
2829 bool HTMLMediaElement::havePotentialSourceChild() 2829 bool HTMLMediaElement::havePotentialSourceChild()
2830 { 2830 {
2831 // Stash the current <source> node and next nodes so we can restore them aft er checking 2831 // Stash the current <source> node and next nodes so we can restore them aft er checking
2832 // to see there is another potential. 2832 // to see there is another potential.
2833 RefPtrWillBeRawPtr<HTMLSourceElement> currentSourceNode = m_currentSourceNod e; 2833 RefPtrWillBeRawPtr<HTMLSourceElement> currentSourceElement = m_currentSource Element;
2834 RefPtrWillBeRawPtr<Node> nextNode = m_nextChildNodeToConsider; 2834 RefPtrWillBeRawPtr<HTMLSourceElement> nextSourceElement = m_nextSourceElemen t;
2835 2835
2836 KURL nextURL = selectNextSourceChild(0, 0, DoNothing); 2836 KURL nextURL = selectNextSourceChild(0, 0, DoNothing);
2837 2837
2838 m_currentSourceNode = currentSourceNode; 2838 m_currentSourceElement = currentSourceElement;
2839 m_nextChildNodeToConsider = nextNode; 2839 m_nextSourceElement = nextSourceElement;
2840 2840
2841 return nextURL.isValid(); 2841 return nextURL.isValid();
2842 } 2842 }
2843 2843
2844 KURL HTMLMediaElement::selectNextSourceChild(ContentType* contentType, String* k eySystem, InvalidURLAction actionIfInvalid) 2844 KURL HTMLMediaElement::selectNextSourceChild(ContentType* contentType, String* k eySystem, InvalidURLAction actionIfInvalid)
2845 { 2845 {
2846 #if !LOG_DISABLED 2846 #if !LOG_DISABLED
2847 // Don't log if this was just called to find out if there are any valid <sou rce> elements. 2847 // Don't log if this was just called to find out if there are any valid <sou rce> elements.
2848 bool shouldLog = actionIfInvalid != DoNothing; 2848 bool shouldLog = actionIfInvalid != DoNothing;
2849 if (shouldLog) 2849 if (shouldLog)
2850 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild"); 2850 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild");
2851 #endif 2851 #endif
2852 2852
2853 if (!m_nextChildNodeToConsider) { 2853 if (!m_nextSourceElement) {
2854 #if !LOG_DISABLED 2854 #if !LOG_DISABLED
2855 if (shouldLog) 2855 if (shouldLog)
2856 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild -> 0x0000, \ "\""); 2856 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild -> 0x0000, \ "\"");
2857 #endif 2857 #endif
2858 return KURL(); 2858 return KURL();
2859 } 2859 }
2860 2860
2861 KURL mediaURL; 2861 KURL mediaURL;
2862 Node* node; 2862 Node* node;
2863 HTMLSourceElement* source = 0; 2863 HTMLSourceElement* source = 0;
2864 String type; 2864 String type;
2865 String system; 2865 String system;
2866 bool lookingForStartNode = m_nextChildNodeToConsider; 2866 bool lookingForStartNode = m_nextSourceElement;
2867 bool canUseSourceElement = false; 2867 bool canUseSourceElement = false;
2868 2868
2869 NodeVector potentialSourceNodes; 2869 NodeVector potentialSourceNodes;
2870 getChildNodes(*this, potentialSourceNodes); 2870 getChildNodes(*this, potentialSourceNodes);
2871 2871
2872 for (unsigned i = 0; !canUseSourceElement && i < potentialSourceNodes.size() ; ++i) { 2872 for (unsigned i = 0; !canUseSourceElement && i < potentialSourceNodes.size() ; ++i) {
2873 node = potentialSourceNodes[i].get(); 2873 node = potentialSourceNodes[i].get();
2874 if (lookingForStartNode && m_nextChildNodeToConsider != node) 2874 if (lookingForStartNode && m_nextSourceElement != node)
2875 continue; 2875 continue;
2876 lookingForStartNode = false; 2876 lookingForStartNode = false;
2877 2877
2878 if (!isHTMLSourceElement(*node)) 2878 if (!isHTMLSourceElement(*node))
2879 continue; 2879 continue;
2880 if (node->parentNode() != this) 2880 if (node->parentNode() != this)
2881 continue; 2881 continue;
2882 2882
2883 source = toHTMLSourceElement(node); 2883 source = toHTMLSourceElement(node);
2884 2884
(...skipping 29 matching lines...) Expand all
2914 check_again: 2914 check_again:
2915 if (!canUseSourceElement && actionIfInvalid == Complain && source) 2915 if (!canUseSourceElement && actionIfInvalid == Complain && source)
2916 source->scheduleErrorEvent(); 2916 source->scheduleErrorEvent();
2917 } 2917 }
2918 2918
2919 if (canUseSourceElement) { 2919 if (canUseSourceElement) {
2920 if (contentType) 2920 if (contentType)
2921 *contentType = ContentType(type); 2921 *contentType = ContentType(type);
2922 if (keySystem) 2922 if (keySystem)
2923 *keySystem = system; 2923 *keySystem = system;
2924 m_currentSourceNode = source; 2924 m_currentSourceElement = source;
2925 m_nextChildNodeToConsider = source->nextSibling(); 2925 m_nextSourceElement = Traversal<HTMLSourceElement>::nextSibling(*source) ;
2926 } else { 2926 } else {
2927 m_currentSourceNode = nullptr; 2927 m_currentSourceElement = nullptr;
2928 m_nextChildNodeToConsider = nullptr; 2928 m_nextSourceElement = nullptr;
2929 } 2929 }
2930 2930
2931 #if !LOG_DISABLED 2931 #if !LOG_DISABLED
2932 if (shouldLog) 2932 if (shouldLog)
2933 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild -> %p, %s", m_cu rrentSourceNode.get(), canUseSourceElement ? urlForLoggingMedia(mediaURL).utf8() .data() : ""); 2933 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild -> %p, %s", m_cu rrentSourceElement.get(), canUseSourceElement ? urlForLoggingMedia(mediaURL).utf 8().data() : "");
2934 #endif 2934 #endif
2935 return canUseSourceElement ? mediaURL : KURL(); 2935 return canUseSourceElement ? mediaURL : KURL();
2936 } 2936 }
2937 2937
2938 void HTMLMediaElement::sourceWasAdded(HTMLSourceElement* source) 2938 void HTMLMediaElement::sourceWasAdded(HTMLSourceElement* source)
2939 { 2939 {
2940 WTF_LOG(Media, "HTMLMediaElement::sourceWasAdded(%p)", source); 2940 WTF_LOG(Media, "HTMLMediaElement::sourceWasAdded(%p)", source);
2941 2941
2942 #if !LOG_DISABLED 2942 #if !LOG_DISABLED
2943 KURL url = source->getNonEmptyURLAttribute(srcAttr); 2943 KURL url = source->getNonEmptyURLAttribute(srcAttr);
2944 WTF_LOG(Media, "HTMLMediaElement::sourceWasAdded - 'src' is %s", urlForLoggi ngMedia(url).utf8().data()); 2944 WTF_LOG(Media, "HTMLMediaElement::sourceWasAdded - 'src' is %s", urlForLoggi ngMedia(url).utf8().data());
2945 #endif 2945 #endif
2946 2946
2947 // We should only consider a <source> element when there is not src attribut e at all. 2947 // We should only consider a <source> element when there is not src attribut e at all.
2948 if (fastHasAttribute(srcAttr)) 2948 if (fastHasAttribute(srcAttr))
2949 return; 2949 return;
2950 2950
2951 // 4.8.8 - If a source element is inserted as a child of a media element tha t has no src 2951 // 4.8.8 - If a source element is inserted as a child of a media element tha t has no src
2952 // attribute and whose networkState has the value NETWORK_EMPTY, the user ag ent must invoke 2952 // attribute and whose networkState has the value NETWORK_EMPTY, the user ag ent must invoke
2953 // the media element's resource selection algorithm. 2953 // the media element's resource selection algorithm.
2954 if (networkState() == HTMLMediaElement::NETWORK_EMPTY) { 2954 if (networkState() == HTMLMediaElement::NETWORK_EMPTY) {
2955 scheduleDelayedAction(LoadMediaResource); 2955 scheduleDelayedAction(LoadMediaResource);
2956 m_nextChildNodeToConsider = source; 2956 m_nextSourceElement = source;
2957 return; 2957 return;
2958 } 2958 }
2959 2959
2960 if (m_currentSourceNode && source == m_currentSourceNode->nextSibling()) { 2960 if (m_currentSourceElement && source == Traversal<HTMLSourceElement>::nextSi bling(*m_currentSourceElement)) {
2961 WTF_LOG(Media, "HTMLMediaElement::sourceWasAdded - <source> inserted imm ediately after current source"); 2961 WTF_LOG(Media, "HTMLMediaElement::sourceWasAdded - <source> inserted imm ediately after current source");
2962 m_nextChildNodeToConsider = source; 2962 m_nextSourceElement = source;
2963 return; 2963 return;
2964 } 2964 }
2965 2965
2966 if (m_nextChildNodeToConsider) 2966 if (m_nextSourceElement)
2967 return; 2967 return;
2968 2968
2969 // 4.8.9.5, resource selection algorithm, source elements section: 2969 // 4.8.9.5, resource selection algorithm, source elements section:
2970 // 21. Wait until the node after pointer is a node other than the end of the list. (This step might wait forever.) 2970 // 21. Wait until the node after pointer is a node other than the end of the list. (This step might wait forever.)
2971 // 22. Asynchronously await a stable state... 2971 // 22. Asynchronously await a stable state...
2972 // 23. Set the element's delaying-the-load-event flag back to true (this del ays the load event again, in case 2972 // 23. Set the element's delaying-the-load-event flag back to true (this del ays the load event again, in case
2973 // it hasn't been fired yet). 2973 // it hasn't been fired yet).
2974 setShouldDelayLoadEvent(true); 2974 setShouldDelayLoadEvent(true);
2975 2975
2976 // 24. Set the networkState back to NETWORK_LOADING. 2976 // 24. Set the networkState back to NETWORK_LOADING.
2977 m_networkState = NETWORK_LOADING; 2977 m_networkState = NETWORK_LOADING;
2978 2978
2979 // 25. Jump back to the find next candidate step above. 2979 // 25. Jump back to the find next candidate step above.
2980 m_nextChildNodeToConsider = source; 2980 m_nextSourceElement = source;
2981 scheduleNextSourceChild(); 2981 scheduleNextSourceChild();
2982 } 2982 }
2983 2983
2984 void HTMLMediaElement::sourceWasRemoved(HTMLSourceElement* source) 2984 void HTMLMediaElement::sourceWasRemoved(HTMLSourceElement* source)
2985 { 2985 {
2986 WTF_LOG(Media, "HTMLMediaElement::sourceWasRemoved(%p)", source); 2986 WTF_LOG(Media, "HTMLMediaElement::sourceWasRemoved(%p)", source);
2987 2987
2988 #if !LOG_DISABLED 2988 #if !LOG_DISABLED
2989 KURL url = source->getNonEmptyURLAttribute(srcAttr); 2989 KURL url = source->getNonEmptyURLAttribute(srcAttr);
2990 WTF_LOG(Media, "HTMLMediaElement::sourceWasRemoved - 'src' is %s", urlForLog gingMedia(url).utf8().data()); 2990 WTF_LOG(Media, "HTMLMediaElement::sourceWasRemoved - 'src' is %s", urlForLog gingMedia(url).utf8().data());
2991 #endif 2991 #endif
2992 2992
2993 if (source != m_currentSourceNode && source != m_nextChildNodeToConsider) 2993 if (source != m_currentSourceElement && source != m_nextSourceElement)
2994 return; 2994 return;
2995 2995
2996 if (source == m_nextChildNodeToConsider) { 2996 if (source == m_nextSourceElement) {
2997 if (m_currentSourceNode) 2997 if (m_currentSourceElement)
2998 m_nextChildNodeToConsider = m_currentSourceNode->nextSibling(); 2998 m_nextSourceElement = Traversal<HTMLSourceElement>::nextSibling(*m_c urrentSourceElement);
2999 WTF_LOG(Media, "HTMLMediaElement::sourceRemoved - m_nextChildNodeToConsi der set to %p", m_nextChildNodeToConsider.get()); 2999 WTF_LOG(Media, "HTMLMediaElement::sourceRemoved - m_nextSourceElement se t to %p", m_nextSourceElement.get());
3000 } else if (source == m_currentSourceNode) { 3000 } else if (source == m_currentSourceElement) {
3001 // Clear the current source node pointer, but don't change the movie as the spec says: 3001 // Clear the current source element pointer, but don't change the movie as the spec says:
3002 // 4.8.8 - Dynamically modifying a source element and its attribute when the element is already 3002 // 4.8.8 - Dynamically modifying a source element and its attribute when the element is already
3003 // inserted in a video or audio element will have no effect. 3003 // inserted in a video or audio element will have no effect.
3004 m_currentSourceNode = nullptr; 3004 m_currentSourceElement = nullptr;
3005 WTF_LOG(Media, "HTMLMediaElement::sourceRemoved - m_currentSourceNode se t to 0"); 3005 WTF_LOG(Media, "HTMLMediaElement::sourceRemoved - m_currentSourceElement set to 0");
3006 } 3006 }
3007 } 3007 }
3008 3008
3009 void HTMLMediaElement::mediaPlayerTimeChanged() 3009 void HTMLMediaElement::mediaPlayerTimeChanged()
3010 { 3010 {
3011 WTF_LOG(Media, "HTMLMediaElement::mediaPlayerTimeChanged"); 3011 WTF_LOG(Media, "HTMLMediaElement::mediaPlayerTimeChanged");
3012 3012
3013 updateActiveTextTrackCues(currentTime()); 3013 updateActiveTextTrackCues(currentTime());
3014 3014
3015 invalidateCachedTime(); 3015 invalidateCachedTime();
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
3358 m_networkState = NETWORK_EMPTY; 3358 m_networkState = NETWORK_EMPTY;
3359 scheduleEvent(EventTypeNames::emptied); 3359 scheduleEvent(EventTypeNames::emptied);
3360 } 3360 }
3361 else 3361 else
3362 m_networkState = NETWORK_IDLE; 3362 m_networkState = NETWORK_IDLE;
3363 3363
3364 // 5 - Set the element's delaying-the-load-event flag to false. This stops d elaying the load event. 3364 // 5 - Set the element's delaying-the-load-event flag to false. This stops d elaying the load event.
3365 setShouldDelayLoadEvent(false); 3365 setShouldDelayLoadEvent(false);
3366 3366
3367 // 6 - Abort the overall resource selection algorithm. 3367 // 6 - Abort the overall resource selection algorithm.
3368 m_currentSourceNode = nullptr; 3368 m_currentSourceElement = nullptr;
3369 3369
3370 // Reset m_readyState since m_player is gone. 3370 // Reset m_readyState since m_player is gone.
3371 m_readyState = HAVE_NOTHING; 3371 m_readyState = HAVE_NOTHING;
3372 updateMediaController(); 3372 updateMediaController();
3373 updateActiveTextTrackCues(0); 3373 updateActiveTextTrackCues(0);
3374 } 3374 }
3375 3375
3376 void HTMLMediaElement::clearMediaPlayerAndAudioSourceProviderClientWithoutLockin g() 3376 void HTMLMediaElement::clearMediaPlayerAndAudioSourceProviderClientWithoutLockin g()
3377 { 3377 {
3378 #if ENABLE(WEB_AUDIO) 3378 #if ENABLE(WEB_AUDIO)
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
3907 if (hasMediaControls()) 3907 if (hasMediaControls())
3908 mediaControls()->mediaElementFocused(); 3908 mediaControls()->mediaElementFocused();
3909 } 3909 }
3910 HTMLElement::defaultEventHandler(event); 3910 HTMLElement::defaultEventHandler(event);
3911 } 3911 }
3912 3912
3913 void HTMLMediaElement::trace(Visitor* visitor) 3913 void HTMLMediaElement::trace(Visitor* visitor)
3914 { 3914 {
3915 visitor->trace(m_asyncEventQueue); 3915 visitor->trace(m_asyncEventQueue);
3916 visitor->trace(m_error); 3916 visitor->trace(m_error);
3917 visitor->trace(m_currentSourceNode); 3917 visitor->trace(m_currentSourceElement);
3918 visitor->trace(m_nextChildNodeToConsider); 3918 visitor->trace(m_nextSourceElement);
3919 visitor->trace(m_audioTracks); 3919 visitor->trace(m_audioTracks);
3920 visitor->trace(m_videoTracks); 3920 visitor->trace(m_videoTracks);
3921 visitor->trace(m_textTracks); 3921 visitor->trace(m_textTracks);
3922 visitor->trace(m_textTracksWhenResourceSelectionBegan); 3922 visitor->trace(m_textTracksWhenResourceSelectionBegan);
3923 visitor->trace(m_mediaController); 3923 visitor->trace(m_mediaController);
3924 #if ENABLE(WEB_AUDIO) 3924 #if ENABLE(WEB_AUDIO)
3925 visitor->registerWeakMembers<HTMLMediaElement, &HTMLMediaElement::clearWeakM embers>(this); 3925 visitor->registerWeakMembers<HTMLMediaElement, &HTMLMediaElement::clearWeakM embers>(this);
3926 #endif 3926 #endif
3927 WillBeHeapSupplementable<HTMLMediaElement>::trace(visitor); 3927 WillBeHeapSupplementable<HTMLMediaElement>::trace(visitor);
3928 HTMLElement::trace(visitor); 3928 HTMLElement::trace(visitor);
(...skipping 29 matching lines...) Expand all
3958 3958
3959 #if ENABLE(WEB_AUDIO) 3959 #if ENABLE(WEB_AUDIO)
3960 void HTMLMediaElement::clearWeakMembers(Visitor* visitor) 3960 void HTMLMediaElement::clearWeakMembers(Visitor* visitor)
3961 { 3961 {
3962 if (!visitor->isAlive(m_audioSourceNode) && audioSourceProvider()) 3962 if (!visitor->isAlive(m_audioSourceNode) && audioSourceProvider())
3963 audioSourceProvider()->setClient(0); 3963 audioSourceProvider()->setClient(0);
3964 } 3964 }
3965 #endif 3965 #endif
3966 3966
3967 } 3967 }
OLDNEW
« no previous file with comments | « Source/core/html/HTMLMediaElement.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698