summaryrefslogtreecommitdiff
path: root/javascript
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2015-11-04 16:15:00 +0000
committerVincent Sanders <vince@kyllikki.org>2015-11-04 16:15:00 +0000
commitb54174e54a7f55cb6e11b6fb20f6615b37f5b65a (patch)
treec1f29af37eae95b6b9e7dd58c47b9bcb03887a2b /javascript
parenta7324d39a46a561535dcb26fac3fbd8f593dbf94 (diff)
downloadnetsurf-b54174e54a7f55cb6e11b6fb20f6615b37f5b65a.tar.gz
netsurf-b54174e54a7f55cb6e11b6fb20f6615b37f5b65a.tar.bz2
Add CSS object model and DOM parsing IDL ready for implementation
Diffstat (limited to 'javascript')
-rw-r--r--javascript/WebIDL/Makefile10
-rw-r--r--javascript/WebIDL/cssom.idl157
-rw-r--r--javascript/WebIDL/dom-parsing.idl35
-rw-r--r--javascript/duktape/netsurf.bnd2
4 files changed, 201 insertions, 3 deletions
diff --git a/javascript/WebIDL/Makefile b/javascript/WebIDL/Makefile
index 6319bbddd..7d901cee1 100644
--- a/javascript/WebIDL/Makefile
+++ b/javascript/WebIDL/Makefile
@@ -16,12 +16,13 @@
.PHONY:all clean
-all: dom.idl html.idl uievents.idl
+all: dom.idl html.idl uievents.idl cssom.idl
-.INTERMEDIATE:dom-spec.html dom-spec.xml dom-idl.html
+.INTERMEDIATE:dom-spec.html dom-spec.xml dom-idl.html
.INTERMEDIATE:html-spec.html html-spec.xml html-idl.html
.INTERMEDIATE:uievents-spec.html uievents-spec.xml uievents-idl.html
.INTERMEDIATE:urlutils-spec.html urlutils-spec.xml urlutils-idl.html
+.INTERMEDIATE:cssom-spec.html cssom-spec.xml cssom-idl.html
dom-spec.html:
curl -s https://dom.spec.whatwg.org/ -o $@
@@ -35,8 +36,11 @@ uievents-spec.html:
urlutils-spec.html:
curl -s https://url.spec.whatwg.org/ -o $@
+cssom-spec.html:
+ curl -s https://drafts.csswg.org/cssom-1/ -o $@
+
%-spec.xml: %-spec.html
- -tidy -q -f $@.errors --new-blocklevel-tags header,hgroup,figure,time,main,nav,svg,rect,text,image,mark,figcaption,section -o $@ -asxml $<
+ -tidy -q -f $@.errors --new-blocklevel-tags header,hgroup,figure,time,main,nav,svg,rect,text,image,mark,figcaption,section,g,path,circle -o $@ -asxml $<
%-idl.html: %-spec.xml
hxselect 'pre[class="idl"]' < $< > $@
diff --git a/javascript/WebIDL/cssom.idl b/javascript/WebIDL/cssom.idl
new file mode 100644
index 000000000..95c97e42a
--- /dev/null
+++ b/javascript/WebIDL/cssom.idl
@@ -0,0 +1,157 @@
+// Retrived from https://drafts.csswg.org/cssom-1/
+// Wed Nov 4 15:39:43 GMT 2015
+// Removed duplicate IDL from appendix
+
+
+[ArrayClass]interface MediaList {
+ [TreatNullAs=EmptyString] stringifier attribute DOMString mediaText;
+ readonly attribute unsigned long length;
+ getter DOMString? item(unsigned long index );
+ void appendMedium(DOMString medium );
+ void deleteMedium(DOMString medium );
+};
+
+interface StyleSheet {
+ readonly attribute DOMString type;
+ readonly attribute DOMString? href;
+ readonly attribute (Element or ProcessingInstruction)? ownerNode;
+ readonly attribute StyleSheet? parentStyleSheet;
+ readonly attribute DOMString? title;
+ [SameObject, PutForwards=mediaText] readonly attribute MediaList media;
+ attribute boolean disabled;
+};
+
+interface CSSStyleSheet : StyleSheet {
+ readonly attribute CSSRule? ownerRule;
+ [SameObject] readonly attribute CSSRuleList cssRules;
+ unsigned long insertRule(DOMString rule , unsigned long index );
+ void deleteRule(unsigned long index );
+};
+
+[ArrayClass]interface StyleSheetList {
+ getter StyleSheet? item(unsigned long index );
+ readonly attribute unsigned long length;
+};
+
+partial interface Document {
+ [SameObject] readonly attribute StyleSheetList styleSheets;
+ attribute DOMString? selectedStyleSheetSet;
+ readonly attribute DOMString? lastStyleSheetSet;
+ readonly attribute DOMString? preferredStyleSheetSet;
+ readonly attribute DOMString[] styleSheetSets;
+ void enableStyleSheetsForSet(DOMString? name );
+};
+
+[NoInterfaceObject]interface LinkStyle {
+ readonly attribute StyleSheet? sheet;
+};
+
+ProcessingInstruction implements LinkStyle;
+
+[ArrayClass]interface CSSRuleList {
+ getter CSSRule? item(unsigned long index );
+ readonly attribute unsigned long length;
+};
+
+interface CSSRule {
+ const unsigned short STYLE_RULE = 1;
+ const unsigned short CHARSET_RULE = 2; // historical
+ const unsigned short IMPORT_RULE = 3;
+ const unsigned short MEDIA_RULE = 4;
+ const unsigned short FONT_FACE_RULE = 5;
+ const unsigned short PAGE_RULE = 6;
+ const unsigned short MARGIN_RULE = 9;
+ const unsigned short NAMESPACE_RULE = 10;
+ readonly attribute unsigned short type;
+ attribute DOMString cssText;
+ readonly attribute CSSRule? parentRule;
+ readonly attribute CSSStyleSheet? parentStyleSheet;
+};
+
+interface CSSStyleRule : CSSRule {
+ attribute DOMString selectorText;
+ [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
+};
+
+interface CSSImportRule : CSSRule {
+ readonly attribute DOMString href;
+ [SameObject, PutForwards=mediaText] readonly attribute MediaList media;
+ [SameObject] readonly attribute CSSStyleSheet styleSheet;
+};
+
+interface CSSGroupingRule : CSSRule {
+ [SameObject] readonly attribute CSSRuleList cssRules;
+ unsigned long insertRule(DOMString rule , unsigned long index );
+ void deleteRule(unsigned long index );
+};
+
+interface CSSMediaRule : CSSGroupingRule {
+ [SameObject, PutForwards=mediaText] readonly attribute MediaList media ;
+};
+
+interface CSSPageRule : CSSGroupingRule {
+ attribute DOMString selectorText ;
+ [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style ;
+};
+
+interface CSSMarginRule : CSSRule {
+ readonly attribute DOMString name;
+ [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
+};
+
+interface CSSNamespaceRule : CSSRule {
+ readonly attribute DOMString namespaceURI;
+ readonly attribute DOMString prefix;
+};
+
+interface CSSStyleDeclaration {
+ attribute DOMString cssText;
+ readonly attribute unsigned long length;
+ getter DOMString item(unsigned long index );
+ DOMString getPropertyValue(DOMString property );
+ DOMString getPropertyPriority(DOMString property );
+ void setProperty(DOMString property , [TreatNullAs=EmptyString] DOMString value , [TreatNullAs=EmptyString] optional DOMString priority = "");
+ void setPropertyValue(DOMString property , [TreatNullAs=EmptyString] DOMString value );
+ void setPropertyPriority(DOMString property , [TreatNullAs=EmptyString] DOMString priority );
+ DOMString removeProperty(DOMString property );
+ readonly attribute CSSRule? parentRule;
+ [TreatNullAs=EmptyString] attribute DOMString cssFloat;
+};
+
+partial interface CSSStyleDeclaration {
+ [TreatNullAs=EmptyString] attribute DOMString _dashed_attribute ;
+};
+
+[NoInterfaceObject]interface ElementCSSInlineStyle {
+ [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
+};
+
+HTMLElement implements ElementCSSInlineStyle;
+
+SVGElement implements ElementCSSInlineStyle;
+
+partial interface Window {
+ [NewObject] CSSStyleDeclaration getComputedStyle(Element elt , optional DOMString? pseudoElt );
+};
+
+[NoInterfaceObject]interface GetStyleUtils {
+ [SameObject] readonly attribute CSSStyleDeclaration cascadedStyle;
+ [SameObject] readonly attribute CSSStyleDeclaration defaultStyle;
+ [SameObject] readonly attribute CSSStyleDeclaration rawComputedStyle;
+ [SameObject] readonly attribute CSSStyleDeclaration usedStyle;
+};
+
+partial interface Element {
+ PseudoElement? pseudo(DOMString pseudoElt );
+};
+
+Element implements GetStyleUtils;
+
+interface PseudoElement {
+};
+
+PseudoElement implements GetStyleUtils;
+
+interface CSS {
+ static DOMString escape(DOMString ident );
+};
diff --git a/javascript/WebIDL/dom-parsing.idl b/javascript/WebIDL/dom-parsing.idl
new file mode 100644
index 000000000..d2581328e
--- /dev/null
+++ b/javascript/WebIDL/dom-parsing.idl
@@ -0,0 +1,35 @@
+// Retrived from http://www.w3.org/TR/DOM-Parsing/
+// Wed Nov 4 15:39:43 GMT 2015
+// Manually extracted IDL
+
+enum SupportedType {
+ "text/html",
+ "text/xml",
+ "application/xml",
+ "application/xhtml+xml",
+ "image/svg+xml"
+};
+
+[Constructor]
+interface DOMParser {
+ [NewObject]
+ Document parseFromString (DOMString str, SupportedType type);
+};
+
+[Constructor]
+interface XMLSerializer {
+ DOMString serializeToString (Node root);
+};
+
+partial interface Element {
+ [TreatNullAs=EmptyString]
+ attribute DOMString innerHTML;
+ [TreatNullAs=EmptyString]
+ attribute DOMString outerHTML;
+ void insertAdjacentHTML (DOMString position, DOMString text);
+};
+
+partial interface Range {
+ [NewObject]
+ DocumentFragment createContextualFragment (DOMString fragment);
+};
diff --git a/javascript/duktape/netsurf.bnd b/javascript/duktape/netsurf.bnd
index 1f3938627..4aca4752f 100644
--- a/javascript/duktape/netsurf.bnd
+++ b/javascript/duktape/netsurf.bnd
@@ -10,7 +10,9 @@
binding duk_libdom {
webidl "dom.idl";
+ webidl "dom-parsing.idl";
webidl "html.idl";
+ webidl "cssom.idl";
webidl "uievents.idl";
webidl "urlutils.idl";
webidl "console.idl";