Node.prototype.rootNode is not Web compatible
[WebKit.git] / Source / WebCore / dom / Node.idl
1 /*
2  * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3  * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public License
16  * along with this library; see the file COPYING.LIB.  If not, write to
17  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA 02110-1301, USA.
19  */
20
21 [
22     CustomIsReachable,
23     CustomToJSObject,
24     ExportMacro=WEBCORE_EXPORT,
25     JSCustomHeader,
26     JSCustomMarkFunction,
27     JSCustomPushEventHandlerScope,
28     ObjCPolymorphic,
29 ] interface Node
30 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
31     : Object, EventTarget
32 #else
33     : EventTarget
34 #endif
35  {
36     // NodeType
37     const unsigned short      ELEMENT_NODE                   = 1;
38     const unsigned short      ATTRIBUTE_NODE                 = 2;
39     const unsigned short      TEXT_NODE                      = 3;
40     const unsigned short      CDATA_SECTION_NODE             = 4;
41     const unsigned short      ENTITY_REFERENCE_NODE          = 5;
42     const unsigned short      ENTITY_NODE                    = 6;
43     const unsigned short      PROCESSING_INSTRUCTION_NODE    = 7;
44     const unsigned short      COMMENT_NODE                   = 8;
45     const unsigned short      DOCUMENT_NODE                  = 9;
46     const unsigned short      DOCUMENT_TYPE_NODE             = 10;
47     const unsigned short      DOCUMENT_FRAGMENT_NODE         = 11;
48     const unsigned short      NOTATION_NODE                  = 12;
49
50     readonly attribute DOMString nodeName;
51
52     // FIXME: the spec says this can also raise on retrieval.
53     [SetterRaisesException] attribute DOMString? nodeValue;
54
55     readonly attribute unsigned short   nodeType;
56     readonly attribute Node             parentNode;
57     readonly attribute NodeList         childNodes;
58     readonly attribute Node             firstChild;
59     readonly attribute Node             lastChild;
60     readonly attribute Node             previousSibling;
61     readonly attribute Node             nextSibling;
62     readonly attribute Document         ownerDocument;
63
64     // FIXME: newChild should not be nullable.
65     [ObjCLegacyUnnamedParameters, Custom, RaisesException] Node insertBefore([CustomReturn] Node? newChild,
66                                                             Node? refChild);
67     // FIXME: newChild and oldChild should not be nullable.
68     [ObjCLegacyUnnamedParameters, Custom, RaisesException] Node replaceChild(Node? newChild,
69                                                             [CustomReturn] Node? oldChild);
70     // FIXME: oldChild should not be nullable.
71     [Custom, RaisesException] Node removeChild([CustomReturn] Node? oldChild);
72     // FIXME: newChild should not be nullable.
73     [Custom, RaisesException] Node appendChild([CustomReturn] Node? newChild);
74
75     boolean            hasChildNodes();
76
77     [NewObject, RaisesException, ImplementedAs=cloneNodeForBindings, InvokesCustomElementLifecycleCallbacks]
78     Node cloneNode(optional boolean deep = false);
79
80     void               normalize();
81
82     // Introduced in DOM Level 2:
83
84 #if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
85     [ObjCLegacyUnnamedParameters, ImplementedAs=isSupportedForBindings] boolean isSupported(optional DOMString feature, optional DOMString version);
86 #endif
87
88     readonly attribute DOMString?        namespaceURI;
89     [SetterRaisesException] attribute DOMString? prefix;
90     readonly attribute DOMString?        localName;
91
92 #if defined(LANGUAGE_OBJECTIVE_C)
93     readonly attribute NamedNodeMap     attributes;
94     boolean            hasAttributes();
95 #endif
96
97
98     // Introduced in DOM Level 3:
99
100     readonly attribute DOMString?       baseURI;
101
102     // FIXME: the spec says this can also raise on retrieval.
103     [SetterRaisesException] attribute DOMString? textContent;
104
105     // FIXME: other should not be optional.
106     boolean            isSameNode(optional Node? other = null);
107     // FIXME: other should not be optional.
108     boolean            isEqualNode(optional Node? other = null);
109
110     DOMString?         lookupPrefix(optional DOMString? namespaceURI = null);
111     boolean            isDefaultNamespace(optional DOMString? namespaceURI = null);
112     DOMString?         lookupNamespaceURI(optional DOMString? prefix = null);
113
114     // DocumentPosition
115     const unsigned short      DOCUMENT_POSITION_DISCONNECTED = 0x01;
116     const unsigned short      DOCUMENT_POSITION_PRECEDING    = 0x02;
117     const unsigned short      DOCUMENT_POSITION_FOLLOWING    = 0x04;
118     const unsigned short      DOCUMENT_POSITION_CONTAINS     = 0x08;
119     const unsigned short      DOCUMENT_POSITION_CONTAINED_BY = 0x10;
120     const unsigned short      DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
121
122     // FIXME: other should be neither optional nor nullable.
123     unsigned short     compareDocumentPosition(optional Node? other = null);
124
125     // Introduced in DOM4
126     // FIXME: other should not be optional.
127     boolean contains(optional Node? other = null);
128
129     // IE extensions
130     readonly attribute Element          parentElement;
131
132 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
133     // Objective-C extensions
134     readonly attribute boolean          isContentEditable;
135
136     void inspect();
137 #endif
138 };
139