| var core = require("../level1/core"), |
| defineGetter = require('../utils').defineGetter, |
| defineSetter = require('../utils').defineSetter, |
| HtmlToDom = require('../browser/htmltodom').HtmlToDom, |
| domToHtml = require('../browser/domtohtml').domToHtml; |
| |
| /* |
| valuetype DOMString sequence<unsigned short>; |
| typedef unsigned long long DOMTimeStamp; |
| typedef any DOMUserData; |
| typedef Object DOMObject; |
| |
| */ |
| // ExceptionCode |
| core.VALIDATION_ERR = 16; |
| core.TYPE_MISMATCH_ERR = 17; |
| |
| /* |
| // Introduced in DOM Level 3: |
| interface NameList { |
| DOMString getName(in unsigned long index); |
| DOMString getNamespaceURI(in unsigned long index); |
| readonly attribute unsigned long length; |
| boolean contains(in DOMString str); |
| boolean containsNS(in DOMString namespaceURI, |
| in DOMString name); |
| }; |
| |
| // Introduced in DOM Level 3: |
| interface DOMImplementationList { |
| DOMImplementation item(in unsigned long index); |
| readonly attribute unsigned long length; |
| }; |
| |
| // Introduced in DOM Level 3: |
| interface DOMImplementationSource { |
| DOMImplementation getDOMImplementation(in DOMString features); |
| DOMImplementationList getDOMImplementationList(in DOMString features); |
| }; |
| */ |
| |
| |
| core.DOMImplementation.prototype.getFeature = function(feature, version) { |
| |
| }; |
| |
| /* |
| interface Node { |
| // Modified in DOM Level 3: |
| Node insertBefore(in Node newChild, |
| in Node refChild) |
| raises(DOMException); |
| // Modified in DOM Level 3: |
| Node replaceChild(in Node newChild, |
| in Node oldChild) |
| raises(DOMException); |
| // Modified in DOM Level 3: |
| Node removeChild(in Node oldChild) |
| raises(DOMException); |
| // Modified in DOM Level 3: |
| Node appendChild(in Node newChild) |
| raises(DOMException); |
| boolean hasChildNodes(); |
| Node cloneNode(in boolean deep); |
| // Modified in DOM Level 3: |
| void normalize(); |
| // Introduced in DOM Level 3: |
| readonly attribute DOMString baseURI; |
| */ |
| |
| // Compare Document Position |
| var DOCUMENT_POSITION_DISCONNECTED = core.Node.DOCUMENT_POSITION_DISCONNECTED = |
| core.Node.prototype.DOCUMENT_POSITION_DISCONNECTED = 0x01; |
| |
| var DOCUMENT_POSITION_PRECEDING = core.Node.DOCUMENT_POSITION_PRECEDING = |
| core.Node.prototype.DOCUMENT_POSITION_PRECEDING = 0x02; |
| |
| var DOCUMENT_POSITION_FOLLOWING = core.Node.DOCUMENT_POSITION_FOLLOWING = |
| core.Node.prototype.DOCUMENT_POSITION_FOLLOWING = 0x04; |
| |
| var DOCUMENT_POSITION_CONTAINS = core.Node.DOCUMENT_POSITION_CONTAINS = |
| core.Node.prototype.DOCUMENT_POSITION_CONTAINS = 0x08; |
| |
| var DOCUMENT_POSITION_CONTAINED_BY = core.Node.DOCUMENT_POSITION_CONTAINED_BY = |
| core.Node.prototype.DOCUMENT_POSITION_CONTAINED_BY = 0x10; |
| |
| var DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = core.Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = |
| core.Node.prototype.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20; |
| |
| var DOCUMENT_TYPE_NODE = core.Node.prototype.DOCUMENT_TYPE_NODE; |
| |
| core.Node.prototype.compareDocumentPosition = function compareDocumentPosition( otherNode ) { |
| if( !(otherNode instanceof core.Node) ) { |
| throw Error("Comparing position against non-Node values is not allowed") |
| } |
| var thisOwner, otherOwner; |
| |
| if( this.nodeType === this.DOCUMENT_NODE) |
| thisOwner = this |
| else |
| thisOwner = this.ownerDocument |
| |
| if( otherNode.nodeType === this.DOCUMENT_NODE) |
| otherOwner = otherNode |
| else |
| otherOwner = otherNode.ownerDocument |
| |
| if( this === otherNode ) return 0 |
| if( this === otherNode.ownerDocument ) return DOCUMENT_POSITION_FOLLOWING + DOCUMENT_POSITION_CONTAINED_BY |
| if( this.ownerDocument === otherNode ) return DOCUMENT_POSITION_PRECEDING + DOCUMENT_POSITION_CONTAINS |
| if( thisOwner !== otherOwner ) return DOCUMENT_POSITION_DISCONNECTED |
| |
| // Text nodes for attributes does not have a _parentNode. So we need to find them as attribute child. |
| if( this.nodeType === this.ATTRIBUTE_NODE && this._childNodes && this._childNodes.indexOf(otherNode) !== -1) |
| return DOCUMENT_POSITION_FOLLOWING + DOCUMENT_POSITION_CONTAINED_BY |
| |
| if( otherNode.nodeType === this.ATTRIBUTE_NODE && otherNode._childNodes && otherNode._childNodes.indexOf(this) !== -1) |
| return DOCUMENT_POSITION_PRECEDING + DOCUMENT_POSITION_CONTAINS |
| |
| var point = this |
| var parents = [ ] |
| var previous = null |
| while( point ) { |
| if( point == otherNode ) return DOCUMENT_POSITION_PRECEDING + DOCUMENT_POSITION_CONTAINS |
| parents.push( point ) |
| point = point._parentNode |
| } |
| point = otherNode |
| previous = null |
| while( point ) { |
| if( point == this ) return DOCUMENT_POSITION_FOLLOWING + DOCUMENT_POSITION_CONTAINED_BY |
| var location_index = parents.indexOf( point ) |
| if( location_index !== -1) { |
| var smallest_common_ancestor = parents[ location_index ] |
| var this_index = smallest_common_ancestor._childNodes.indexOf( parents[location_index - 1] ) |
| var other_index = smallest_common_ancestor._childNodes.indexOf( previous ) |
| if( this_index > other_index ) { |
| return DOCUMENT_POSITION_PRECEDING |
| } |
| else { |
| return DOCUMENT_POSITION_FOLLOWING |
| } |
| } |
| previous = point |
| point = point._parentNode |
| } |
| return DOCUMENT_POSITION_DISCONNECTED |
| }; |
| /* |
| // Introduced in DOM Level 3: |
| attribute DOMString textContent; |
| // raises(DOMException) on setting |
| // raises(DOMException) on retrieval |
| */ |
| core.Node.prototype.isSameNode = function(other) { |
| return (other === this); |
| }; |
| |
| // @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#Node3-textContent |
| defineGetter(core.Node.prototype, 'textContent', function() { |
| switch (this.nodeType) { |
| case this.COMMENT_NODE: |
| case this.CDATA_SECTION_NODE: |
| case this.PROCESSING_INSTRUCTION_NODE: |
| case this.TEXT_NODE: |
| return this.nodeValue; |
| |
| case this.ATTRIBUTE_NODE: |
| case this.DOCUMENT_FRAGMENT_NODE: |
| case this.ELEMENT_NODE: |
| var out = ''; |
| for (var i = 0 ; i < this._childNodes.length ; ++i) { |
| if (this._childNodes[i].nodeType !== this.COMMENT_NODE && |
| this._childNodes[i].nodeType !== this.PROCESSING_INSTRUCTION_NODE) { |
| out += this._childNodes[i].textContent || ''; |
| } |
| } |
| return out; |
| |
| default: |
| return null; |
| } |
| }); |
| |
| defineSetter(core.Node.prototype, 'textContent', function(txt) { |
| switch (this.nodeType) { |
| case this.COMMENT_NODE: |
| case this.CDATA_SECTION_NODE: |
| case this.PROCESSING_INSTRUCTION_NODE: |
| case this.TEXT_NODE: |
| return this.nodeValue = String(txt); |
| } |
| |
| for (var i = this._childNodes.length; --i >=0;) { |
| this.removeChild(this._childNodes[i]); |
| } |
| if (txt !== "" && txt != null) { |
| this.appendChild(this._ownerDocument.createTextNode(txt)); |
| } |
| return txt; |
| }); |
| |
| /* |
| // Introduced in DOM Level 3: |
| DOMString lookupPrefix(in DOMString namespaceURI); |
| // Introduced in DOM Level 3: |
| boolean isDefaultNamespace(in DOMString namespaceURI); |
| // Introduced in DOM Level 3: |
| DOMString lookupNamespaceURI(in DOMString prefix); |
| */ |
| // Introduced in DOM Level 3: |
| core.Node.prototype.isEqualNode = function(other) { |
| var self = this; |
| var diffValues = function() { |
| for (var i=0;i<arguments.length;i++) { |
| var k = arguments[i]; |
| if (self[k] != other[k]) return(true); |
| } |
| return(false); |
| }; |
| var diffNamedNodeMaps = function(snnm, onnm) { |
| if ((snnm == null) && (onnm == null)) return(false); |
| if ((snnm == null) || (onnm == null)) return(true); |
| if (snnm.length != onnm.length) return(true); |
| var js = []; |
| for (var j=0;j<onnm.length;j++) { js[j] = j } |
| for (var i=0;i<snnm.length;i++) { |
| var found=false; |
| for (var j=0;j<js.length;j++) { |
| if (snnm.item(i).isEqualNode(onnm.item(js[j]))) { |
| found = true; |
| // in order to be 100% accurate, we remove index values from consideration once they've matched |
| js.splice(j,1); |
| break; |
| } |
| } |
| if (!found) return(true); |
| } |
| return(false); |
| }; |
| var diffNodeLists = function(snl, onl) { |
| if ((snl == null) && (onl == null)) return(false); |
| if ((snl == null) || (onl == null)) return(true); |
| if (snl.length != onl.length) return(true); |
| for (var i=0;i<snl.length;i++) { |
| if (!snl.item(i).isEqualNode(onl.item(i))) return(true); |
| } |
| return(false); |
| }; |
| if (!other) return(false); |
| if (this.isSameNode(other)) return(true); |
| if (this.nodeType != other.nodeType) return(false); |
| if (diffValues('nodeName', 'localName', 'namespaceURI', 'prefix', 'nodeValue')) return(false); |
| if (diffNamedNodeMaps(this.attributes, other.attributes)) return(false); |
| if (diffNodeLists(this._childNodes, other._childNodes)) return(false); |
| if (this.nodeType == DOCUMENT_TYPE_NODE) { |
| if (diffValues('publicId', 'systemId', 'internalSubset')) return(false); |
| if (diffNamedNodeMaps(this.entities, other.entities)) return(false); |
| if (diffNamedNodeMaps(this.notations, other.notations)) return(false); |
| } |
| return (true); |
| }; |
| /* |
| // Introduced in DOM Level 3: |
| DOMObject getFeature(in DOMString feature, |
| in DOMString version); |
| */ |
| // Introduced in DOM Level 3: |
| core.Node.prototype.setUserData = function(key, data, handler) { |
| var r = this[key] || null; |
| this[key] = data; |
| return(r); |
| }; |
| |
| // Introduced in DOM Level 3: |
| core.Node.prototype.getUserData = function(key) { |
| var r = this[key] || null; |
| return(r); |
| }; |
| /* |
| interface NodeList { |
| Node item(in unsigned long index); |
| readonly attribute unsigned long length; |
| }; |
| |
| interface NamedNodeMap { |
| Node getNamedItem(in DOMString name); |
| Node setNamedItem(in Node arg) |
| raises(DOMException); |
| Node removeNamedItem(in DOMString name) |
| raises(DOMException); |
| Node item(in unsigned long index); |
| readonly attribute unsigned long length; |
| // Introduced in DOM Level 2: |
| Node getNamedItemNS(in DOMString namespaceURI, |
| in DOMString localName) |
| raises(DOMException); |
| // Introduced in DOM Level 2: |
| Node setNamedItemNS(in Node arg) |
| raises(DOMException); |
| // Introduced in DOM Level 2: |
| Node removeNamedItemNS(in DOMString namespaceURI, |
| in DOMString localName) |
| raises(DOMException); |
| }; |
| |
| interface CharacterData : Node { |
| attribute DOMString data; |
| // raises(DOMException) on setting |
| // raises(DOMException) on retrieval |
| |
| readonly attribute unsigned long length; |
| DOMString substringData(in unsigned long offset, |
| in unsigned long count) |
| raises(DOMException); |
| void appendData(in DOMString arg) |
| raises(DOMException); |
| void insertData(in unsigned long offset, |
| in DOMString arg) |
| raises(DOMException); |
| void deleteData(in unsigned long offset, |
| in unsigned long count) |
| raises(DOMException); |
| void replaceData(in unsigned long offset, |
| in unsigned long count, |
| in DOMString arg) |
| raises(DOMException); |
| }; |
| |
| interface Attr : Node { |
| readonly attribute DOMString name; |
| readonly attribute boolean specified; |
| attribute DOMString value; |
| // raises(DOMException) on setting |
| |
| // Introduced in DOM Level 2: |
| readonly attribute Element ownerElement; |
| // Introduced in DOM Level 3: |
| readonly attribute TypeInfo schemaTypeInfo; |
| |
| */ |
| // Introduced in DOM Level 3: |
| defineGetter(core.Attr.prototype, 'isId', function() { |
| return (this.name.toLowerCase() === 'id'); |
| }); |
| /* |
| }; |
| |
| interface Element : Node { |
| readonly attribute DOMString tagName; |
| DOMString getAttribute(in DOMString name); |
| void setAttribute(in DOMString name, |
| in DOMString value) |
| raises(DOMException); |
| void removeAttribute(in DOMString name) |
| raises(DOMException); |
| Attr getAttributeNode(in DOMString name); |
| Attr setAttributeNode(in Attr newAttr) |
| raises(DOMException); |
| Attr removeAttributeNode(in Attr oldAttr) |
| raises(DOMException); |
| NodeList getElementsByTagName(in DOMString name); |
| // Introduced in DOM Level 2: |
| DOMString getAttributeNS(in DOMString namespaceURI, |
| in DOMString localName) |
| raises(DOMException); |
| // Introduced in DOM Level 2: |
| void setAttributeNS(in DOMString namespaceURI, |
| in DOMString qualifiedName, |
| in DOMString value) |
| raises(DOMException); |
| // Introduced in DOM Level 2: |
| void removeAttributeNS(in DOMString namespaceURI, |
| in DOMString localName) |
| raises(DOMException); |
| // Introduced in DOM Level 2: |
| Attr getAttributeNodeNS(in DOMString namespaceURI, |
| in DOMString localName) |
| raises(DOMException); |
| // Introduced in DOM Level 2: |
| Attr setAttributeNodeNS(in Attr newAttr) |
| raises(DOMException); |
| // Introduced in DOM Level 2: |
| NodeList getElementsByTagNameNS(in DOMString namespaceURI, |
| in DOMString localName) |
| raises(DOMException); |
| // Introduced in DOM Level 2: |
| boolean hasAttribute(in DOMString name); |
| // Introduced in DOM Level 2: |
| boolean hasAttributeNS(in DOMString namespaceURI, |
| in DOMString localName) |
| raises(DOMException); |
| // Introduced in DOM Level 3: |
| readonly attribute TypeInfo schemaTypeInfo; |
| // Introduced in DOM Level 3: |
| void setIdAttribute(in DOMString name, |
| in boolean isId) |
| raises(DOMException); |
| // Introduced in DOM Level 3: |
| void setIdAttributeNS(in DOMString namespaceURI, |
| in DOMString localName, |
| in boolean isId) |
| raises(DOMException); |
| // Introduced in DOM Level 3: |
| void setIdAttributeNode(in Attr idAttr, |
| in boolean isId) |
| raises(DOMException); |
| }; |
| |
| interface Text : CharacterData { |
| Text splitText(in unsigned long offset) |
| raises(DOMException); |
| // Introduced in DOM Level 3: |
| readonly attribute boolean isElementContentWhitespace; |
| // Introduced in DOM Level 3: |
| readonly attribute DOMString wholeText; |
| // Introduced in DOM Level 3: |
| Text replaceWholeText(in DOMString content) |
| raises(DOMException); |
| }; |
| |
| interface Comment : CharacterData { |
| }; |
| |
| // Introduced in DOM Level 3: |
| interface TypeInfo { |
| readonly attribute DOMString typeName; |
| readonly attribute DOMString typeNamespace; |
| |
| // DerivationMethods |
| const unsigned long DERIVATION_RESTRICTION = 0x00000001; |
| const unsigned long DERIVATION_EXTENSION = 0x00000002; |
| const unsigned long DERIVATION_UNION = 0x00000004; |
| const unsigned long DERIVATION_LIST = 0x00000008; |
| |
| boolean isDerivedFrom(in DOMString typeNamespaceArg, |
| in DOMString typeNameArg, |
| in unsigned long derivationMethod); |
| }; |
| */ |
| // Introduced in DOM Level 3: |
| core.UserDataHandler = function() {}; |
| core.UserDataHandler.prototype.NODE_CLONED = 1; |
| core.UserDataHandler.prototype.NODE_IMPORTED = 2; |
| core.UserDataHandler.prototype.NODE_DELETED = 3; |
| core.UserDataHandler.prototype.NODE_RENAMED = 4; |
| core.UserDataHandler.prototype.NODE_ADOPTED = 5; |
| core.UserDataHandler.prototype.handle = function(operation, key, data, src, dst) {}; |
| |
| // Introduced in DOM Level 3: |
| core.DOMError = function(severity, message, type, relatedException, relatedData, location) { |
| this._severity = severity; |
| this._message = message; |
| this._type = type; |
| this._relatedException = relatedException; |
| this._relatedData = relatedData; |
| this._location = location; |
| }; |
| core.DOMError.prototype = {}; |
| core.DOMError.prototype.SEVERITY_WARNING = 1; |
| core.DOMError.prototype.SEVERITY_ERROR = 2; |
| core.DOMError.prototype.SEVERITY_FATAL_ERROR = 3; |
| defineGetter(core.DOMError.prototype, 'severity', function() { |
| return this._severity; |
| }); |
| defineGetter(core.DOMError.prototype, 'message', function() { |
| return this._message; |
| }); |
| defineGetter(core.DOMError.prototype, 'type', function() { |
| return this._type; |
| }); |
| defineGetter(core.DOMError.prototype, 'relatedException', function() { |
| return this._relatedException; |
| }); |
| defineGetter(core.DOMError.prototype, 'relatedData', function() { |
| return this._relatedData; |
| }); |
| defineGetter(core.DOMError.prototype, 'location', function() { |
| return this._location; |
| }); |
| |
| /* |
| // Introduced in DOM Level 3: |
| interface DOMErrorHandler { |
| boolean handleError(in DOMError error); |
| }; |
| |
| // Introduced in DOM Level 3: |
| interface DOMLocator { |
| readonly attribute long lineNumber; |
| readonly attribute long columnNumber; |
| readonly attribute long byteOffset; |
| readonly attribute long utf16Offset; |
| readonly attribute Node relatedNode; |
| readonly attribute DOMString uri; |
| }; |
| */ |
| |
| // Introduced in DOM Level 3: |
| core.DOMConfiguration = function(){ |
| var possibleParameterNames = { |
| 'canonical-form': [false, true], // extra rules for true |
| 'cdata-sections': [true, false], |
| 'check-character-normalization': [false, true], |
| 'comments': [true, false], |
| 'datatype-normalization': [false, true], |
| 'element-content-whitespace': [true, false], |
| 'entities': [true, false], |
| // 'error-handler': [], |
| 'infoset': [undefined, true, false], // extra rules for true |
| 'namespaces': [true, false], |
| 'namespace-declarations': [true, false], // only checked if namespaces is true |
| 'normalize-characters': [false, true], |
| // 'schema-location': [], |
| // 'schema-type': [], |
| 'split-cdata-sections': [true, false], |
| 'validate': [false, true], |
| 'validate-if-schema': [false, true], |
| 'well-formed': [true, false] |
| } |
| }; |
| |
| core.DOMConfiguration.prototype = { |
| setParameter: function(name, value) {}, |
| getParameter: function(name) {}, |
| canSetParameter: function(name, value) {}, |
| parameterNames: function() {} |
| }; |
| |
| //core.Document.prototype._domConfig = new core.DOMConfiguration(); |
| defineGetter(core.Document.prototype, 'domConfig', function() { |
| return this._domConfig || new core.DOMConfiguration();; |
| }); |
| |
| // Introduced in DOM Level 3: |
| core.DOMStringList = function() {}; |
| |
| core.DOMStringList.prototype = { |
| item: function() {}, |
| length: function() {}, |
| contains: function() {} |
| }; |
| |
| |
| /* |
| interface CDATASection : Text { |
| }; |
| |
| interface DocumentType : Node { |
| readonly attribute DOMString name; |
| readonly attribute NamedNodeMap entities; |
| readonly attribute NamedNodeMap notations; |
| // Introduced in DOM Level 2: |
| readonly attribute DOMString publicId; |
| // Introduced in DOM Level 2: |
| readonly attribute DOMString systemId; |
| // Introduced in DOM Level 2: |
| readonly attribute DOMString internalSubset; |
| }; |
| |
| interface Notation : Node { |
| readonly attribute DOMString publicId; |
| readonly attribute DOMString systemId; |
| }; |
| |
| interface Entity : Node { |
| readonly attribute DOMString publicId; |
| readonly attribute DOMString systemId; |
| readonly attribute DOMString notationName; |
| // Introduced in DOM Level 3: |
| readonly attribute DOMString inputEncoding; |
| // Introduced in DOM Level 3: |
| readonly attribute DOMString xmlEncoding; |
| // Introduced in DOM Level 3: |
| readonly attribute DOMString xmlVersion; |
| }; |
| |
| interface EntityReference : Node { |
| }; |
| |
| interface ProcessingInstruction : Node { |
| readonly attribute DOMString target; |
| attribute DOMString data; |
| // raises(DOMException) on setting |
| |
| }; |
| |
| interface DocumentFragment : Node { |
| }; |
| |
| interface Document : Node { |
| // Modified in DOM Level 3: |
| readonly attribute DocumentType doctype; |
| readonly attribute DOMImplementation implementation; |
| readonly attribute Element documentElement; |
| Element createElement(in DOMString tagName) |
| raises(DOMException); |
| DocumentFragment createDocumentFragment(); |
| Text createTextNode(in DOMString data); |
| Comment createComment(in DOMString data); |
| CDATASection createCDATASection(in DOMString data) |
| raises(DOMException); |
| ProcessingInstruction createProcessingInstruction(in DOMString target, |
| in DOMString data) |
| raises(DOMException); |
| Attr createAttribute(in DOMString name) |
| raises(DOMException); |
| EntityReference createEntityReference(in DOMString name) |
| raises(DOMException); |
| NodeList getElementsByTagName(in DOMString tagname); |
| // Introduced in DOM Level 2: |
| Node importNode(in Node importedNode, |
| in boolean deep) |
| raises(DOMException); |
| // Introduced in DOM Level 2: |
| Element createElementNS(in DOMString namespaceURI, |
| in DOMString qualifiedName) |
| raises(DOMException); |
| // Introduced in DOM Level 2: |
| Attr createAttributeNS(in DOMString namespaceURI, |
| in DOMString qualifiedName) |
| raises(DOMException); |
| // Introduced in DOM Level 2: |
| NodeList getElementsByTagNameNS(in DOMString namespaceURI, |
| in DOMString localName); |
| // Introduced in DOM Level 2: |
| Element getElementById(in DOMString elementId); |
| */ |
| /* |
| // Introduced in DOM Level 3: |
| readonly attribute DOMString xmlEncoding; |
| // Introduced in DOM Level 3: |
| attribute boolean xmlStandalone; |
| // raises(DOMException) on setting |
| |
| // Introduced in DOM Level 3: |
| attribute DOMString xmlVersion; |
| // raises(DOMException) on setting |
| |
| // Introduced in DOM Level 3: |
| attribute boolean strictErrorChecking; |
| // Introduced in DOM Level 3: |
| attribute DOMString documentURI; |
| // Introduced in DOM Level 3: |
| Node adoptNode(in Node source) |
| raises(DOMException); |
| // Introduced in DOM Level 3: |
| readonly attribute DOMConfiguration domConfig; |
| // Introduced in DOM Level 3: |
| void normalizeDocument(); |
| // Introduced in DOM Level 3: |
| Node renameNode(in Node n, |
| in DOMString namespaceURI, |
| in DOMString qualifiedName) |
| raises(DOMException); |
| }; |
| }; |
| |
| #endif // _DOM_IDL_ |
| */ |