Chromium Code Reviews| Index: Source/core/html/HTMLMediaElement.cpp |
| diff --git a/Source/core/html/HTMLMediaElement.cpp b/Source/core/html/HTMLMediaElement.cpp |
| index 42cc83a9bf4b607fcb738555d6388a217896763d..d7d2c21be9277d6f340824ee9458cbb4980c5119 100644 |
| --- a/Source/core/html/HTMLMediaElement.cpp |
| +++ b/Source/core/html/HTMLMediaElement.cpp |
| @@ -664,7 +664,7 @@ void HTMLMediaElement::prepareForLoad() |
| // 1 - Abort any already-running instance of the resource selection algorithm for this element. |
| m_loadState = WaitingForSource; |
| - m_currentSourceNode = 0; |
| + m_currentSourceNode = nullptr; |
| // 2 - If there are any tasks from the media element's media element event task source in |
| // one of the task queues, then remove those tasks. |
| @@ -781,8 +781,8 @@ void HTMLMediaElement::selectMediaResource() |
| // source element child in tree order. |
| if (node) { |
| mode = children; |
| - m_nextChildNodeToConsider = node; |
| - m_currentSourceNode = 0; |
| + m_nextChildNodeToConsider = adoptRawResult(node); |
| + m_currentSourceNode = nullptr; |
| } else { |
| // Otherwise the media element has neither a src attribute nor a source element |
| // child: set the networkState to NETWORK_EMPTY, and abort these steps; the |
| @@ -1381,7 +1381,7 @@ void HTMLMediaElement::noneSupported() |
| stopPeriodicTimers(); |
| m_loadState = WaitingForSource; |
| - m_currentSourceNode = 0; |
| + m_currentSourceNode = nullptr; |
| // 4.8.10.5 |
| // 6 - Reaching this step indicates that the media resource failed to load or that the given |
| @@ -1439,7 +1439,7 @@ void HTMLMediaElement::mediaEngineError(PassRefPtr<MediaError> err) |
| setShouldDelayLoadEvent(false); |
| // 6 - Abort the overall resource selection algorithm. |
| - m_currentSourceNode = 0; |
| + m_currentSourceNode = nullptr; |
| } |
| void HTMLMediaElement::cancelPendingEventsAndCallbacks() |
| @@ -3027,8 +3027,8 @@ bool HTMLMediaElement::havePotentialSourceChild() |
| { |
| // Stash the current <source> node and next nodes so we can restore them after checking |
| // to see there is another potential. |
| - RefPtr<HTMLSourceElement> currentSourceNode = m_currentSourceNode; |
| - RefPtr<Node> nextNode = m_nextChildNodeToConsider; |
| + Handle<HTMLSourceElement> currentSourceNode = m_currentSourceNode; |
| + Handle<Node> nextNode = m_nextChildNodeToConsider; |
| KURL nextURL = selectNextSourceChild(0, 0, DoNothing); |
| @@ -3069,7 +3069,7 @@ KURL HTMLMediaElement::selectNextSourceChild(ContentType* contentType, String* k |
| for (unsigned i = 0; !canUseSourceElement && i < potentialSourceNodes.size(); ++i) { |
|
Mads Ager (chromium)
2013/07/25 13:35:12
HandleScope?
haraken
2013/07/25 13:44:49
Done.
|
| node = potentialSourceNodes[i].get(); |
| - if (lookingForStartNode && m_nextChildNodeToConsider != node) |
| + if (lookingForStartNode && Handle<Node>(m_nextChildNodeToConsider).raw() != node) |
| continue; |
| lookingForStartNode = false; |
| @@ -3138,16 +3138,16 @@ check_again: |
| *contentType = ContentType(type); |
| if (keySystem) |
| *keySystem = system; |
| - m_currentSourceNode = source; |
| - m_nextChildNodeToConsider = source->nextSibling(); |
| + m_currentSourceNode = adoptRawResult(source); |
| + m_nextChildNodeToConsider = adoptRawResult(source->nextSibling()); |
| } else { |
| - m_currentSourceNode = 0; |
| - m_nextChildNodeToConsider = 0; |
| + m_currentSourceNode = nullptr; |
| + m_nextChildNodeToConsider = nullptr; |
| } |
| #if !LOG_DISABLED |
| if (shouldLog) |
| - LOG(Media, "HTMLMediaElement::selectNextSourceChild -> %p, %s", m_currentSourceNode.get(), canUseSourceElement ? urlForLoggingMedia(mediaURL).utf8().data() : ""); |
| + LOG(Media, "HTMLMediaElement::selectNextSourceChild -> %p, %s", Handle<HTMLSourceElement>(m_currentSourceNode).raw(), canUseSourceElement ? urlForLoggingMedia(mediaURL).utf8().data() : ""); |
| #endif |
| return canUseSourceElement ? mediaURL : KURL(); |
| } |
| @@ -3172,13 +3172,13 @@ void HTMLMediaElement::sourceWasAdded(HTMLSourceElement* source) |
| // the media element's resource selection algorithm. |
| if (networkState() == HTMLMediaElement::NETWORK_EMPTY) { |
| scheduleDelayedAction(LoadMediaResource); |
| - m_nextChildNodeToConsider = source; |
| + m_nextChildNodeToConsider = adoptRawResult(source); |
| return; |
| } |
| if (m_currentSourceNode && source == m_currentSourceNode->nextSibling()) { |
| LOG(Media, "HTMLMediaElement::sourceWasAdded - <source> inserted immediately after current source"); |
| - m_nextChildNodeToConsider = source; |
| + m_nextChildNodeToConsider = adoptRawResult(source); |
| return; |
| } |
| @@ -3196,7 +3196,7 @@ void HTMLMediaElement::sourceWasAdded(HTMLSourceElement* source) |
| m_networkState = NETWORK_LOADING; |
| // 25. Jump back to the find next candidate step above. |
| - m_nextChildNodeToConsider = source; |
| + m_nextChildNodeToConsider = adoptRawResult(source); |
| scheduleNextSourceChild(); |
| } |
| @@ -3211,18 +3211,18 @@ void HTMLMediaElement::sourceWasRemoved(HTMLSourceElement* source) |
| } |
| #endif |
| - if (source != m_currentSourceNode && source != m_nextChildNodeToConsider) |
| + if (source != Handle<HTMLSourceElement>(m_currentSourceNode).raw() && source != Handle<Node>(m_nextChildNodeToConsider).raw()) |
|
Mads Ager (chromium)
2013/07/25 13:35:12
Do you need the handle wrapping followed by raw()
haraken
2013/07/25 13:44:49
I reverted the members to RefPtrs (and remove thes
|
| return; |
| - if (source == m_nextChildNodeToConsider) { |
| + if (source == Handle<Node>(m_nextChildNodeToConsider).raw()) { |
| if (m_currentSourceNode) |
| - m_nextChildNodeToConsider = m_currentSourceNode->nextSibling(); |
| - LOG(Media, "HTMLMediaElement::sourceRemoved - m_nextChildNodeToConsider set to %p", m_nextChildNodeToConsider.get()); |
| - } else if (source == m_currentSourceNode) { |
| + m_nextChildNodeToConsider = adoptRawResult(m_currentSourceNode->nextSibling()); |
| + LOG(Media, "HTMLMediaElement::sourceRemoved - m_nextChildNodeToConsider set to %p", Handle<Node>(m_nextChildNodeToConsider).raw()); |
| + } else if (source == Handle<HTMLSourceElement>(m_currentSourceNode).raw()) { |
| // Clear the current source node pointer, but don't change the movie as the spec says: |
| // 4.8.8 - Dynamically modifying a source element and its attribute when the element is already |
| // inserted in a video or audio element will have no effect. |
| - m_currentSourceNode = 0; |
| + m_currentSourceNode = nullptr; |
| LOG(Media, "HTMLMediaElement::sourceRemoved - m_currentSourceNode set to 0"); |
| } |
| } |
| @@ -3679,7 +3679,7 @@ void HTMLMediaElement::userCancelledLoad() |
| setShouldDelayLoadEvent(false); |
| // 6 - Abort the overall resource selection algorithm. |
| - m_currentSourceNode = 0; |
| + m_currentSourceNode = nullptr; |
| // Reset m_readyState since m_player is gone. |
| m_readyState = HAVE_NOTHING; |
| @@ -4458,4 +4458,11 @@ void HTMLMediaElement::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) con |
| } |
| +void HTMLMediaElement::acceptHeapVisitor(Visitor* visitor) const |
| +{ |
| + visitor->visit(m_currentSourceNode); |
| + visitor->visit(m_nextChildNodeToConsider); |
| + HTMLElement::acceptHeapVisitor(visitor); |
| +} |
| + |
| } |