Bug 490271 - Make form state pick up input state in HTML5 parser

This commit is contained in:
Henri Sivonen 2009-04-30 14:45:05 -07:00
Родитель f443521aed
Коммит 1bac8ebc71
3 изменённых файлов: 14 добавлений и 3 удалений

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

@ -404,6 +404,7 @@ nsHtml5TreeBuilder::elementPopped(PRInt32 aNamespace, nsIAtom* aName, nsIContent
// Some HTML nodes need DoneAddingChildren() called to initialize
// properly (eg form state restoration).
// XXX expose ElementName group here and do switch
if (aName == nsHtml5Atoms::select ||
aName == nsHtml5Atoms::textarea ||
#ifdef MOZ_MEDIA
@ -417,6 +418,14 @@ nsHtml5TreeBuilder::elementPopped(PRInt32 aNamespace, nsIAtom* aName, nsIContent
treeOp->Init(eTreeOpDoneAddingChildren, aElement);
return;
}
if (aName == nsHtml5Atoms::input ||
aName == nsHtml5Atoms::button) {
nsHtml5TreeOperation* treeOp = mOpQueue.AppendElement();
// XXX if null, OOM!
treeOp->Init(eTreeOpDoneCreatingElement, aElement);
return;
}
if (aName == nsHtml5Atoms::base) {
nsHtml5TreeOperation* treeOp = mOpQueue.AppendElement();

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

@ -138,17 +138,18 @@ nsHtml5TreeOperation::Perform(nsHtml5TreeBuilder* aBuilder)
return rv;
}
case eTreeOpDoneAddingChildren: {
// aBuilder->FlushPendingAppendNotifications();
mNode->DoneAddingChildren(PR_FALSE);
return rv;
}
case eTreeOpDoneCreatingElement: {
mNode->DoneCreatingElement();
return rv;
}
case eTreeOpUpdateStyleSheet: {
// aBuilder->FlushPendingAppendNotifications();
aBuilder->UpdateStyleSheet(mNode);
return rv;
}
case eTreeOpProcessBase: {
// aBuilder->FlushPendingAppendNotifications();
rv = aBuilder->ProcessBase(mNode);
return rv;
}

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

@ -53,6 +53,7 @@ enum eHtml5TreeOperation {
// Gecko-specific on-pop ops
eTreeOpScriptEnd,
eTreeOpDoneAddingChildren,
eTreeOpDoneCreatingElement,
eTreeOpUpdateStyleSheet,
eTreeOpProcessBase,
eTreeOpStartLayout