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); |
+} |
+ |
} |