|author||Vincent Sanders <firstname.lastname@example.org>||2019-05-02 11:13:09 +0100|
|committer||Vincent Sanders <email@example.com>||2019-05-02 11:13:09 +0100|
Diffstat (limited to 'docs/jsbinding.md')
1 files changed, 59 insertions, 0 deletions
diff --git a/docs/jsbinding.md b/docs/jsbinding.md
new file mode 100644
@@ -0,0 +1,59 @@
+it must use the Document Object Model (DOM) and Cascading Style Sheet
+Object Model (CSSOM) API.
+These interfaces are described using web Interface Description
+Language (IDL) within the relevant specifications
+Each interface described by the webIDL must be bound (connected) to
+the browsers internal representation for the DOM or CSS, etc. These
+bindings desciptions are processed together with the WebIDL by the
+nsgenbind tool to generate source code.
+A list of [DOM and CSSOM methods](unimplemented.html) is available
+outlining the remaining unimplemented API bindings.
+The WebIDL specification defines the interface description language used.
+These descriptions should be periodicaly updated to keep the browser
+to automaticaly update the IDL files by scraping the web specs.
+This tool needs a great deal of hand holding, not least because many of the
+source documents list the IDL fragments multiple times, some even have
+appendicies with the entrire IDL repeated.
+Interface binding introduction
+The binding files are processed by the nsgenbind tool to generate c
+CSS library and the browser. In this case that is the tuple of
+duktape, libdom, libcss and NetSurf.
+In principle other engines or libraries could be substituted
+(historicaly NetSurf unsucessfully tried to use spidermonkey) but the
+engineering to do so is formidable.
+The bindings are kept the sorce rpository within the duktape
+The root binding which contains all the interfaces initroduced into
+references all the WebIDL to be bound and includes all additional
+binding definitions to implement the interfaces.
+The bindings are a Domain Specific Language (DSL) which allows
+implementations to be added to each WebIDL method.