mirror of
https://github.com/RGBCube/serenity
synced 2025-05-22 14:35:07 +00:00

This implements basic support for dynamic markup insertion, adding * Document::open() * Document::write(Vector<String> const&) * Document::writeln(Vector<String> const&) * Document::close() The HTMLParser is modified to make it possible to create a script-created parser which initially only contains a HTMLTokenizer without any data. Aditionally the HTMLParser::run method gains an overload which does not modify the Document and does not run HTMLParser::the_end() so that we can reenter the parser at a later time. Furthermore all FIXMEs that consern the insertion point are implemented wich is defined in the HTMLTokenizer. Additionally the following member-variables of the HTMLParser are now exposed by getter funcions: * m_tokenizer * m_aborted * m_script_nesting_level The HTMLTokenizer is modified so that it contains an insertion point which keeps track of where the next input from the Document::write functions will be inserted. The insertion point is implemented as the charakter offset into m_decoded_input and a boolean describing if the insertion point is defined. Functions to update, check and {re}store the insertion point are also added. The function HTMLTokenizer::insert_eof is added to tell a script-created parser that document::close was called and HTMLParser::the_end() should be called. Lastly an explicit default constructor is added to HTMLTokenizer to create a empty HTMLTokenizer into which data can be inserted.
176 lines
6.4 KiB
Text
176 lines
6.4 KiB
Text
#import <CSS/StyleSheetList.idl>
|
|
#import <DOM/Comment.idl>
|
|
#import <DOM/DOMImplementation.idl>
|
|
#import <DOM/DocumentFragment.idl>
|
|
#import <DOM/DocumentType.idl>
|
|
#import <DOM/Element.idl>
|
|
#import <DOM/Event.idl>
|
|
#import <DOM/HTMLCollection.idl>
|
|
#import <DOM/Node.idl>
|
|
#import <DOM/NodeList.idl>
|
|
#import <DOM/Range.idl>
|
|
#import <DOM/Text.idl>
|
|
#import <HTML/HTMLElement.idl>
|
|
#import <HTML/HTMLHeadElement.idl>
|
|
#import <HTML/HTMLScriptElement.idl>
|
|
|
|
interface Document : Node {
|
|
|
|
constructor();
|
|
|
|
boolean hasFocus();
|
|
|
|
// FIXME: These attributes currently don't do anything.
|
|
[PutForwards=href, LegacyUnforgeable] readonly attribute Location? location;
|
|
|
|
readonly attribute DOMImplementation implementation;
|
|
|
|
readonly attribute DOMString characterSet;
|
|
readonly attribute DOMString charset;
|
|
readonly attribute DOMString inputEncoding;
|
|
readonly attribute DOMString contentType;
|
|
|
|
readonly attribute Window? defaultView;
|
|
|
|
[CEReactions] Document open(optional DOMString unused1, optional DOMString unused2);
|
|
// FIXME: implement ExceptionOr<Window> Document::open(...)
|
|
// WindowProxy? open(USVString url, DOMString name, DOMString features);
|
|
[CEReactions] undefined close();
|
|
[CEReactions] undefined write(DOMString... text);
|
|
[CEReactions] undefined writeln(DOMString... text);
|
|
|
|
attribute DOMString cookie;
|
|
|
|
readonly attribute USVString referrer;
|
|
|
|
readonly attribute Element? activeElement;
|
|
|
|
Element? getElementById(DOMString id);
|
|
HTMLCollection getElementsByName(DOMString name);
|
|
HTMLCollection getElementsByTagName(DOMString tagName);
|
|
HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
|
|
HTMLCollection getElementsByClassName(DOMString className);
|
|
|
|
readonly attribute HTMLCollection applets;
|
|
readonly attribute HTMLCollection anchors;
|
|
readonly attribute HTMLCollection images;
|
|
readonly attribute HTMLCollection embeds;
|
|
readonly attribute HTMLCollection plugins;
|
|
readonly attribute HTMLCollection links;
|
|
readonly attribute HTMLCollection forms;
|
|
readonly attribute HTMLCollection scripts;
|
|
|
|
Element createElement(DOMString tagName);
|
|
Element createElementNS(DOMString? namespace, DOMString qualifiedName);
|
|
DocumentFragment createDocumentFragment();
|
|
Text createTextNode(DOMString data);
|
|
Comment createComment(DOMString data);
|
|
Range createRange();
|
|
Event createEvent(DOMString interface);
|
|
|
|
[CEReactions, NewObject] Node importNode(Node node, optional boolean deep = false);
|
|
[CEReactions, ImplementedAs=adopt_node_binding] Node adoptNode(Node node);
|
|
|
|
[ImplementedAs=style_sheets_for_bindings] readonly attribute StyleSheetList styleSheets;
|
|
|
|
readonly attribute DOMString compatMode;
|
|
readonly attribute DocumentType? doctype;
|
|
|
|
readonly attribute Element? documentElement;
|
|
attribute HTMLElement? body;
|
|
readonly attribute HTMLHeadElement? head;
|
|
readonly attribute HTMLScriptElement? currentScript;
|
|
|
|
readonly attribute DOMString readyState;
|
|
|
|
attribute DOMString title;
|
|
|
|
// FIXME: These should all come from a ParentNode mixin
|
|
readonly attribute Element? firstElementChild;
|
|
readonly attribute Element? lastElementChild;
|
|
readonly attribute unsigned long childElementCount;
|
|
|
|
[CEReactions, Unscopable] undefined prepend((Node or DOMString)... nodes);
|
|
[CEReactions, Unscopable] undefined append((Node or DOMString)... nodes);
|
|
[CEReactions, Unscopable] undefined replaceChildren((Node or DOMString)... nodes);
|
|
|
|
Element? querySelector(DOMString selectors);
|
|
[NewObject] NodeList querySelectorAll(DOMString selectors);
|
|
|
|
[SameObject] readonly attribute HTMLCollection children;
|
|
|
|
// FIXME: These should all come from a GlobalEventHandlers mixin
|
|
attribute EventHandler onabort;
|
|
attribute EventHandler onauxclick;
|
|
attribute EventHandler onblur;
|
|
attribute EventHandler oncancel;
|
|
attribute EventHandler oncanplay;
|
|
attribute EventHandler oncanplaythrough;
|
|
attribute EventHandler onchange;
|
|
attribute EventHandler onclick;
|
|
attribute EventHandler onclose;
|
|
attribute EventHandler oncontextmenu;
|
|
attribute EventHandler oncuechange;
|
|
attribute EventHandler ondblclick;
|
|
attribute EventHandler ondrag;
|
|
attribute EventHandler ondragend;
|
|
attribute EventHandler ondragenter;
|
|
attribute EventHandler ondragleave;
|
|
attribute EventHandler ondragover;
|
|
attribute EventHandler ondragstart;
|
|
attribute EventHandler ondrop;
|
|
attribute EventHandler ondurationchange;
|
|
attribute EventHandler onemptied;
|
|
attribute EventHandler onended;
|
|
|
|
// FIXME: Should be an OnErrorEventHandler
|
|
attribute EventHandler onerror;
|
|
|
|
attribute EventHandler onfocus;
|
|
attribute EventHandler onformdata;
|
|
attribute EventHandler oninput;
|
|
attribute EventHandler oninvalid;
|
|
attribute EventHandler onkeydown;
|
|
attribute EventHandler onkeypress;
|
|
attribute EventHandler onkeyup;
|
|
attribute EventHandler onload;
|
|
attribute EventHandler onloadeddata;
|
|
attribute EventHandler onloadedmetadata;
|
|
attribute EventHandler onloadstart;
|
|
attribute EventHandler onmousedown;
|
|
[LegacyLenientThis] attribute EventHandler onmouseenter;
|
|
[LegacyLenientThis] attribute EventHandler onmouseleave;
|
|
attribute EventHandler onmousemove;
|
|
attribute EventHandler onmouseout;
|
|
attribute EventHandler onmouseover;
|
|
attribute EventHandler onmouseup;
|
|
attribute EventHandler onpause;
|
|
attribute EventHandler onplay;
|
|
attribute EventHandler onplaying;
|
|
attribute EventHandler onprogress;
|
|
attribute EventHandler onratechange;
|
|
attribute EventHandler onreset;
|
|
attribute EventHandler onresize;
|
|
attribute EventHandler onscroll;
|
|
attribute EventHandler onsecuritypolicyviolation;
|
|
attribute EventHandler onseeked;
|
|
attribute EventHandler onseeking;
|
|
attribute EventHandler onselect;
|
|
attribute EventHandler onslotchange;
|
|
attribute EventHandler onstalled;
|
|
attribute EventHandler onsubmit;
|
|
attribute EventHandler onsuspend;
|
|
attribute EventHandler ontimeupdate;
|
|
attribute EventHandler ontoggle;
|
|
attribute EventHandler onvolumechange;
|
|
attribute EventHandler onwaiting;
|
|
attribute EventHandler onwebkitanimationend;
|
|
attribute EventHandler onwebkitanimationiteration;
|
|
attribute EventHandler onwebkitanimationstart;
|
|
attribute EventHandler onwebkittransitionend;
|
|
attribute EventHandler onwheel;
|
|
|
|
readonly boolean hidden;
|
|
readonly DOMString visibilityState;
|
|
|
|
};
|