nsresult HTMLSourceElement::BindToTree(nsIDocument *aDocument, nsIContent *aParent, nsIContent *aBindingParent, bool aCompileEventHandlers) { nsresult rv = nsGenericHTMLElement::BindToTree(aDocument, aParent, aBindingParent, aCompileEventHandlers); NS_ENSURE_SUCCESS(rv, rv); if (aParent && aParent->IsNodeOfType(nsINode::eMEDIA)) { HTMLMediaElement* media = static_cast<HTMLMediaElement*>(aParent); media->NotifyAddedSource(); } else if (aParent && aParent->IsHTMLElement(nsGkAtoms::picture)) { // Find any img siblings after this <source> and notify them nsCOMPtr<nsIContent> sibling = AsContent(); while ( (sibling = sibling->GetNextSibling()) ) { if (sibling->IsHTMLElement(nsGkAtoms::img)) { HTMLImageElement *img = static_cast<HTMLImageElement*>(sibling.get()); img->PictureSourceAdded(AsContent()); } } } return NS_OK; }
nsresult HTMLSourceElement::BindToTree(nsIDocument *aDocument, nsIContent *aParent, nsIContent *aBindingParent, bool aCompileEventHandlers) { nsresult rv = nsGenericHTMLElement::BindToTree(aDocument, aParent, aBindingParent, aCompileEventHandlers); NS_ENSURE_SUCCESS(rv, rv); if (aParent && aParent->IsNodeOfType(nsINode::eMEDIA)) { HTMLMediaElement* media = static_cast<HTMLMediaElement*>(aParent); media->NotifyAddedSource(); } return NS_OK; }
nsresult HTMLTrackElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent, nsIContent* aBindingParent, bool aCompileEventHandlers) { nsresult rv = nsGenericHTMLElement::BindToTree(aDocument, aParent, aBindingParent, aCompileEventHandlers); NS_ENSURE_SUCCESS(rv, rv); if (!aDocument) { return NS_OK; } LOG(PR_LOG_DEBUG, ("Track Element bound to tree.")); if (!aParent || !aParent->IsNodeOfType(nsINode::eMEDIA)) { return NS_OK; } // Store our parent so we can look up its frame for display. if (!mMediaParent) { mMediaParent = static_cast<HTMLMediaElement*>(aParent); HTMLMediaElement* media = static_cast<HTMLMediaElement*>(aParent); // TODO: separate notification for 'alternate' tracks? media->NotifyAddedSource(); LOG(PR_LOG_DEBUG, ("Track element sent notification to parent.")); mMediaParent->RunInStableState( NS_NewRunnableMethod(this, &HTMLTrackElement::LoadResource)); } return NS_OK; }