Bug 689834. Only look at the muted attribute when initially creating the element. r=bzbarsky

This commit is contained in:
Andrew Quartey 2011-12-15 14:36:46 -05:00
Родитель 61d114cfc7
Коммит d9f501a4df
6 изменённых файлов: 23 добавлений и 6 удалений

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

@ -118,6 +118,7 @@ public:
bool aCompileEventHandlers);
virtual void UnbindFromTree(bool aDeep = true,
bool aNullParent = true);
virtual void DoneCreatingElement();
/**
* Call this to reevaluate whether we should start/stop due to our owner

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

@ -1504,6 +1504,12 @@ bool nsHTMLMediaElement::ParseAttribute(PRInt32 aNamespaceID,
aResult);
}
void nsHTMLMediaElement::DoneCreatingElement()
{
if (HasAttr(kNameSpaceID_None, nsGkAtoms::muted))
mMuted = true;
}
nsresult nsHTMLMediaElement::SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName,
nsIAtom* aPrefix, const nsAString& aValue,
bool aNotify)
@ -1516,9 +1522,6 @@ nsresult nsHTMLMediaElement::SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName,
if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::src) {
Load();
}
if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::muted) {
mMuted = true;
}
if (aNotify && aNameSpaceID == kNameSpaceID_None) {
if (aName == nsGkAtoms::autoplay) {
StopSuspendingAfterFirstFrame();

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

@ -808,6 +808,8 @@ SinkContext::OpenContainer(const nsIParserNode& aNode)
break;
case eHTMLTag_button:
case eHTMLTag_audio:
case eHTMLTag_video:
content->DoneCreatingElement();
break;

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

@ -1077,7 +1077,9 @@ nsXMLContentSink::HandleStartElement(const PRUnichar *aName,
if (nodeInfo->NamespaceID() == kNameSpaceID_XHTML) {
if (nodeInfo->NameAtom() == nsGkAtoms::input ||
nodeInfo->NameAtom() == nsGkAtoms::button ||
nodeInfo->NameAtom() == nsGkAtoms::menuitem) {
nodeInfo->NameAtom() == nsGkAtoms::menuitem ||
nodeInfo->NameAtom() == nsGkAtoms::audio ||
nodeInfo->NameAtom() == nsGkAtoms::video) {
content->DoneCreatingElement();
} else if (nodeInfo->NameAtom() == nsGkAtoms::head && !mCurrentHead) {
mCurrentHead = content;

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

@ -338,9 +338,11 @@ txMozillaXMLOutput::endElement()
} else if (ns == kNameSpaceID_XHTML &&
(localName == nsGkAtoms::input ||
localName == nsGkAtoms::button ||
localName == nsGkAtoms::menuitem)) {
localName == nsGkAtoms::menuitem ||
localName == nsGkAtoms::audio ||
localName == nsGkAtoms::video )) {
element->DoneCreatingElement();
}
}
}
if (mCreatingNewDocument) {

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

@ -566,6 +566,13 @@ nsHtml5TreeBuilder::elementPopped(PRInt32 aNamespace, nsIAtom* aName, nsIContent
treeOp->Init(eTreeOpProcessMeta, aElement);
return;
}
if (aName == nsHtml5Atoms::audio || aName == nsHtml5Atoms::video) {
nsHtml5TreeOperation* treeOp = mOpQueue.AppendElement();
NS_ASSERTION(treeOp, "Tree op allocation failed.");
treeOp->Init(eTreeOpDoneCreatingElement, aElement);
return;
}
return;
}