Bug 1015662: Drop the edge from <track> to its channel once the load is completed. r=bz

This commit is contained in:
Kyle Huey 2014-06-18 13:10:24 -07:00
Родитель a9afee92db
Коммит 8141a83378
5 изменённых файлов: 18 добавлений и 2 удалений

Просмотреть файл

@ -95,8 +95,7 @@ NS_IMPL_ADDREF_INHERITED(HTMLTrackElement, Element)
NS_IMPL_RELEASE_INHERITED(HTMLTrackElement, Element) NS_IMPL_RELEASE_INHERITED(HTMLTrackElement, Element)
NS_IMPL_CYCLE_COLLECTION_INHERITED(HTMLTrackElement, nsGenericHTMLElement, NS_IMPL_CYCLE_COLLECTION_INHERITED(HTMLTrackElement, nsGenericHTMLElement,
mTrack, mChannel, mMediaParent, mTrack, mMediaParent, mListener)
mListener)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(HTMLTrackElement) NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(HTMLTrackElement)
NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement) NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement)
@ -370,5 +369,11 @@ HTMLTrackElement::DispatchTrustedEvent(const nsAString& aName)
aName, false, false); aName, false, false);
} }
void
HTMLTrackElement::DropChannel()
{
mChannel = nullptr;
}
} // namespace dom } // namespace dom
} // namespace mozilla } // namespace mozilla

Просмотреть файл

@ -124,6 +124,9 @@ public:
void DispatchTrackRunnable(const nsString& aEventName); void DispatchTrackRunnable(const nsString& aEventName);
void DispatchTrustedEvent(const nsAString& aName); void DispatchTrustedEvent(const nsAString& aName);
void DropChannel();
protected: protected:
virtual JSObject* WrapNode(JSContext* aCx) MOZ_OVERRIDE; virtual JSObject* WrapNode(JSContext* aCx) MOZ_OVERRIDE;
void OnChannelRedirect(nsIChannel* aChannel, nsIChannel* aNewChannel, void OnChannelRedirect(nsIChannel* aChannel, nsIChannel* aNewChannel,

Просмотреть файл

@ -114,6 +114,9 @@ WebVTTListener::OnStopRequest(nsIRequest* aRequest,
if (mElement->ReadyState() != TextTrackReadyState::FailedToLoad) { if (mElement->ReadyState() != TextTrackReadyState::FailedToLoad) {
mElement->SetReadyState(TextTrackReadyState::Loaded); mElement->SetReadyState(TextTrackReadyState::Loaded);
} }
mElement->DropChannel();
return aStatus; return aStatus;
} }

Просмотреть файл

@ -0,0 +1,4 @@
<!DOCTYPE html>
<body>
<video><track src="javascript:5"></track></video>
</body>

Просмотреть файл

@ -70,4 +70,5 @@ load offline-buffer-source-ended-1.html
HTTP load media-element-source-seek-1.html HTTP load media-element-source-seek-1.html
skip-if(B2G) load oscillator-ended-1.html # intermittent B2G timeouts, bug 920338 skip-if(B2G) load oscillator-ended-1.html # intermittent B2G timeouts, bug 920338
skip-if(B2G) load oscillator-ended-2.html # intermittent B2G timeouts, bug 920338 skip-if(B2G) load oscillator-ended-2.html # intermittent B2G timeouts, bug 920338
load 1015662.html
include ../../mediasource/test/crashtests/crashtests.list include ../../mediasource/test/crashtests/crashtests.list