Skip to content
  • eric.carlson@apple.com's avatar
    2010-10-19 Eric Carlson <eric.carlson@apple.com> · d041ae7b
    eric.carlson@apple.com authored
            Reviewed by Darin Adler.
    
            https://bugs.webkit.org/show_bug.cgi?id=46763
            CRASH in WebCore::ThreadTimers::sharedTimerFiredInternal
    
            Fix crashes caused by moving and deleting <source> element(s) of active media element.
    
            Tests: media/video-source-moved.html
                   media/video-source-removed.html
    
            * html/HTMLMediaElement.cpp:
            (WebCore::HTMLMediaElement::HTMLMediaElement): Add logging. Initialize selectNextSourceChild.
            (WebCore::HTMLMediaElement::~HTMLMediaElement): Ditto.
            (WebCore::HTMLMediaElement::insertedIntoDocument): Ditto.
            (WebCore::HTMLMediaElement::removedFromDocument): Ditto.
            (WebCore::HTMLMediaElement::scheduleLoad): Ditto.
            (WebCore::HTMLMediaElement::setNetworkState): Deal with m_currentSourceNode being null when
            the media engine signals a failure by skipping the error message and continuing as usual.
            (WebCore::HTMLMediaElement::setVolume): Fix logging typo.
            (WebCore::HTMLMediaElement::havePotentialSourceChild): Save and restore m_nextChildNodeToConsider
            around call to selectNextSourceChild because they are both significant.
            (WebCore::HTMLMediaElement::selectNextSourceChild): Use m_nextChildNodeToConsider to pick
            the first node to consider. Bail immediately if it signals that we have already processed 
            every <source> node. Stach the node following the current source element in m_nextChildNodeToConsider
            so we can resume the search even if m_currentSourceNode is removed while it is being processed.
            (WebCore::HTMLMediaElement::sourceWasAdded): New, move logic from HTMLSourceElement::insertedIntoTree
            here and correct it to deal with a <source> node being inserted immediately after the
            current <source> node and a new <source> node being inserted at the end of the list after
            all candidates have failed.
            (WebCore::HTMLMediaElement::sourceWillBeRemoved): New, deal with current source node and next
            potential node being removed.
            * html/HTMLMediaElement.h:
            (WebCore::HTMLMediaElement::sourceChildEndOfListValue): New, define sentinal value used to indicate
            that all nodes have been processed.
    
            * html/HTMLSourceElement.cpp:
            (WebCore::HTMLSourceElement::HTMLSourceElement): Add logging.
            (WebCore::HTMLSourceElement::insertedIntoTree): Call mediaElement->sourceWasAdded instead
            of having logic here.
            (WebCore::HTMLSourceElement::willRemove): New, call mediaElement->sourceWillBeRemoved
            (WebCore::HTMLSourceElement::scheduleErrorEvent): Add logging.
            (WebCore::HTMLSourceElement::cancelPendingErrorEvent): Add logging.
            * html/HTMLSourceElement.h:
    
    2010-10-19  Eric Carlson  <eric.carlson@apple.com>
    
            Reviewed by Darin Adler.
    
            https://bugs.webkit.org/show_bug.cgi?id=46763
            CRASH in WebCore::ThreadTimers::sharedTimerFiredInternal
    
            Test moving and deleting <source> element(s) of active <video>.
    
            * media/media-file.js:
            (mimeTypeForExtension): New, added to make it possible to set 'type' attribute on <source>.
    
            * media/video-source-moved-expected.txt: Added.
            * media/video-source-moved.html: Added.
            * media/video-source-removed-expected.txt: Added.
            * media/video-source-removed.html: Added.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@70063 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    d041ae7b