/// <summary> /// See 8.2.5.4.19 The "in frameset" insertion mode. /// </summary> /// <param name="token">The passed token.</param> void InFrameset(HtmlToken token) { if (token.Type == HtmlTokenType.Character) { var chrs = (HtmlCharacterToken)token; var str = chrs.TrimStart(); InsertCharacters(str); if (chrs.IsEmpty) return; } else if (token.Type == HtmlTokenType.Comment) { AddComment(CurrentNode, token); return; } else if (token.Type == HtmlTokenType.DOCTYPE) { RaiseErrorOccurred(ErrorCode.DoctypeTagInappropriate); return; } else if (token.Type == HtmlTokenType.StartTag) { var tag = (HtmlTagToken)token; if (tag.Name == HTMLHtmlElement.Tag) { InBody(token); return; } else if (tag.Name == HTMLFrameSetElement.Tag) { var element = new HTMLFrameSetElement(); AddElementToCurrentNode(element, token); return; } else if (tag.Name == HTMLFrameElement.Tag) { var element = new HTMLFrameElement(); AddElementToCurrentNode(element, token, true); CloseCurrentNode(); return; } else if (tag.Name == HTMLNoElement.NoFramesTag) { InHead(token); return; } } else if (token.Type == HtmlTokenType.EndTag && ((HtmlTagToken)token).Name == HTMLFrameSetElement.Tag) { if (CurrentNode != doc.DocumentElement) { CloseCurrentNode(); if (IsFragmentCase && CurrentNode.NodeName != HTMLFrameSetElement.Tag) insert = HtmlTreeMode.AfterFrameset; } else RaiseErrorOccurred(ErrorCode.CurrentNodeIsRoot); return; } else if (token.Type == HtmlTokenType.EOF) { if (CurrentNode != doc.DocumentElement) RaiseErrorOccurred(ErrorCode.CurrentNodeIsNotRoot); End(); return; } RaiseErrorOccurred(ErrorCode.TokenNotPossible); }
/// <summary> /// See 8.2.5.4.19 The "in frameset" insertion mode. /// </summary> /// <param name="token">The passed token.</param> void InFrameset(HtmlToken token) { if (token.IsIgnorable) InsertCharacter(((HtmlCharacterToken)token).Data); else if (token.Type == HtmlTokenType.Comment) { AddComment(CurrentNode, token); } else if (token.Type == HtmlTokenType.DOCTYPE) { RaiseErrorOccurred(ErrorCode.DoctypeTagInappropriate); } else if (token.Type == HtmlTokenType.StartTag) { var tag = (HtmlTagToken)token; if (tag.Name == HTMLHtmlElement.Tag) InBody(token); else if (tag.Name == HTMLFrameSetElement.Tag) { var element = new HTMLFrameSetElement(); AddElementToCurrentNode(element, token); } else if (tag.Name == HTMLFrameElement.Tag) { var element = new HTMLFrameElement(); AddElementToCurrentNode(element, token, true); CloseCurrentNode(); } else if (tag.Name == HTMLNoElement.NoFramesTag) InHead(token); else RaiseErrorOccurred(ErrorCode.TokenNotPossible); } else if (token.Type == HtmlTokenType.EndTag && ((HtmlTagToken)token).Name == HTMLFrameSetElement.Tag) { if (CurrentNode != doc.DocumentElement) { CloseCurrentNode(); if (fragment && CurrentNode.NodeName != HTMLFrameSetElement.Tag) insert = HtmlTreeMode.AfterFrameset; } else RaiseErrorOccurred(ErrorCode.CurrentNodeIsRoot); } else if (token.Type == HtmlTokenType.EOF) { if (CurrentNode != doc.DocumentElement) RaiseErrorOccurred(ErrorCode.CurrentNodeIsNotRoot); End(); } else { RaiseErrorOccurred(ErrorCode.TokenNotPossible); } }