- fixed the following bugs:
[WebKit-https.git] / WebKit / DOM.subproj / DOM.h
1 /*
2  * Copyright (C) 2004 Apple Computer, Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #import <Foundation/Foundation.h>
27
28 //=========================================================================
29 //=========================================================================
30 //=========================================================================
31
32 // Important Note:
33 // Though this file appears as an exported header from WebKit, the
34 // version you should edit is in WebCore. The WebKit version is copied
35 // to WebKit during the build process.
36
37 //=========================================================================
38 //=========================================================================
39 //=========================================================================
40
41 enum {
42     //
43     // DOM node types
44     //
45     DOM_ELEMENT_NODE                  = 1,
46     DOM_ATTRIBUTE_NODE                = 2,
47     DOM_TEXT_NODE                     = 3,
48     DOM_CDATA_SECTION_NODE            = 4,
49     DOM_ENTITY_REFERENCE_NODE         = 5,
50     DOM_ENTITY_NODE                   = 6,
51     DOM_PROCESSING_INSTRUCTION_NODE   = 7,
52     DOM_COMMENT_NODE                  = 8,
53     DOM_DOCUMENT_NODE                 = 9,
54     DOM_DOCUMENT_TYPE_NODE            = 10,
55     DOM_DOCUMENT_FRAGMENT_NODE        = 11,
56     DOM_NOTATION_NODE                 = 12,
57     //
58     // DOM core exception codes
59     //
60     DOM_INDEX_SIZE_ERR                = 1,
61     DOM_DOMSTRING_SIZE_ERR            = 2,
62     DOM_HIERARCHY_REQUEST_ERR         = 3,
63     DOM_WRONG_DOCUMENT_ERR            = 4,
64     DOM_INVALID_CHARACTER_ERR         = 5,
65     DOM_NO_DATA_ALLOWED_ERR           = 6,
66     DOM_NO_MODIFICATION_ALLOWED_ERR   = 7,
67     DOM_NOT_FOUND_ERR                 = 8,
68     DOM_NOT_SUPPORTED_ERR             = 9,
69     DOM_INUSE_ATTRIBUTE_ERR           = 10,
70     DOM_INVALID_STATE_ERR             = 11,
71     DOM_SYNTAX_ERR                    = 12,
72     DOM_INVALID_MODIFICATION_ERR      = 13,
73     DOM_NAMESPACE_ERR                 = 14,
74     DOM_INVALID_ACCESS_ERR            = 15,
75     //
76     // DOM range exception codes
77     //
78     DOM_BAD_BOUNDARYPOINTS_ERR        = 1,
79     DOM_INVALID_NODE_TYPE_ERR         = 2,
80     //
81     // DOM Range comparison codes
82     //
83     DOM_START_TO_START                = 0,
84     DOM_START_TO_END                  = 1,
85     DOM_END_TO_END                    = 2,
86     DOM_END_TO_START                  = 3,
87 };
88
89 extern NSString * const DOMException;
90 extern NSString * const DOMRangeException;
91
92 @class CSSStyleDeclaration;
93 @class CSSStyleSheet;
94 @class DOMAttr;
95 @class DOMCDATASection;
96 @class DOMComment;
97 @class DOMDocument;
98 @class DOMDocumentType;
99 @class DOMElement;
100 @class DOMEntityReference;
101 @class DOMNamedNodeMap;
102 @class DOMNodeList;
103 @class DOMProcessingInstruction;
104 @class DOMRange;
105 @class DOMStyleSheetList;
106 @class DOMText;
107
108 @protocol DOMDocumentRange;
109 @protocol DOMViewCSS;
110 @protocol DOMDocumentCSS;
111 @protocol DOMImplementationCSS;
112 @protocol DOMElementCSSInlineStyle;
113
114 typedef struct DOMObjectInternal DOMObjectInternal;
115
116 @interface DOMObject : NSObject <NSCopying>
117 {
118     DOMObjectInternal *_internal;
119 }
120 @end
121
122 @interface DOMNode : DOMObject
123 - (NSString *)nodeName;
124 - (NSString *)nodeValue;
125 - (void)setNodeValue:(NSString *)string;
126 - (unsigned short)nodeType;
127 - (DOMNode *)parentNode;
128 - (DOMNodeList *)childNodes;
129 - (DOMNode *)firstChild;
130 - (DOMNode *)lastChild;
131 - (DOMNode *)previousSibling;
132 - (DOMNode *)nextSibling;
133 - (DOMNamedNodeMap *)attributes;
134 - (DOMDocument *)ownerDocument;
135 - (DOMNode *)insertBefore:(DOMNode *)newChild :(DOMNode *)refChild;
136 - (DOMNode *)replaceChild:(DOMNode *)newChild :(DOMNode *)oldChild;
137 - (DOMNode *)removeChild:(DOMNode *)oldChild;
138 - (DOMNode *)appendChild:(DOMNode *)newChild;
139 - (BOOL)hasChildNodes;
140 - (DOMNode *)cloneNode:(BOOL)deep;
141 - (void)normalize;
142 - (BOOL)isSupported:(NSString *)feature :(NSString *)version;
143 - (NSString *)namespaceURI;
144 - (NSString *)prefix;
145 - (void)setPrefix:(NSString *)prefix;
146 - (NSString *)localName;
147 - (BOOL)hasAttributes;
148 - (NSString *)HTMLString;
149 @end
150
151 @interface DOMNamedNodeMap : DOMObject
152 - (DOMNode *)getNamedItem:(NSString *)name;
153 - (DOMNode *)setNamedItem:(DOMNode *)arg;
154 - (DOMNode *)removeNamedItem:(NSString *)name;
155 - (DOMNode *)item:(unsigned long)index;
156 - (unsigned long)length;
157 - (DOMNode *)getNamedItemNS:(NSString *)namespaceURI :(NSString *)localName;
158 - (DOMNode *)setNamedItemNS:(DOMNode *)arg;
159 - (DOMNode *)removeNamedItemNS:(NSString *)namespaceURI :(NSString *)localName;
160 @end
161
162
163 @interface DOMNodeList : DOMObject
164 - (DOMNode *)item:(unsigned long)index;
165 - (unsigned long)length;
166 @end
167
168
169 @interface DOMImplementation : DOMObject <DOMImplementationCSS>
170 - (BOOL)hasFeature:(NSString *)feature :(NSString *)version;
171 - (DOMDocumentType *)createDocumentType:(NSString *)qualifiedName :(NSString *)publicId :(NSString *)systemId;
172 - (DOMDocument *)createDocument:(NSString *)namespaceURI :(NSString *)qualifiedName :(DOMDocumentType *)doctype;
173 - (CSSStyleSheet *)createCSSStyleSheet:(NSString *)title :(NSString *)media;
174 @end
175
176
177 @interface DOMDocumentFragment : DOMNode
178 @end
179
180
181 @interface DOMDocument : DOMNode <DOMDocumentRange, DOMViewCSS, DOMDocumentCSS>
182 - (DOMDocumentType *)doctype;
183 - (DOMImplementation *)implementation;
184 - (DOMElement *)documentElement;
185 - (DOMElement *)createElement:(NSString *)tagName;
186 - (DOMDocumentFragment *)createDocumentFragment;
187 - (DOMText *)createTextNode:(NSString *)data;
188 - (DOMComment *)createComment:(NSString *)data;
189 - (DOMCDATASection *)createCDATASection:(NSString *)data;
190 - (DOMProcessingInstruction *)createProcessingInstruction:(NSString *)target :(NSString *)data;
191 - (DOMAttr *)createAttribute:(NSString *)name;
192 - (DOMEntityReference *)createEntityReference:(NSString *)name;
193 - (DOMNodeList *)getElementsByTagName:(NSString *)tagname;
194 - (DOMNode *)importNode:(DOMNode *)importedNode :(BOOL)deep;
195 - (DOMElement *)createElementNS:(NSString *)namespaceURI :(NSString *)qualifiedName;
196 - (DOMAttr *)createAttributeNS:(NSString *)namespaceURI :(NSString *)qualifiedName;
197 - (DOMNodeList *)getElementsByTagNameNS:(NSString *)namespaceURI :(NSString *)localName;
198 - (DOMElement *)getElementById:(NSString *)elementId;
199 - (DOMRange *)createRange;
200 - (CSSStyleDeclaration *)getComputedStyle:(DOMElement *)elt :(NSString *)pseudoElt;
201 - (CSSStyleDeclaration *)getOverrideStyle:(DOMElement *)elt :(NSString *)pseudoElt;
202 - (DOMStyleSheetList *)styleSheets;
203 @end
204
205
206 @interface DOMCharacterData : DOMNode
207 - (NSString *)data;
208 - (void)setData:(NSString *)data;
209 - (unsigned long)length;
210 - (NSString *)substringData:(unsigned long)offset :(unsigned long)count;
211 - (void)appendData:(NSString *)arg;
212 - (void)insertData:(unsigned long)offset :(NSString *)arg;
213 - (void)deleteData:(unsigned long)offset :(unsigned long) count;
214 - (void)replaceData:(unsigned long)offset :(unsigned long)count :(NSString *)arg;
215 @end
216
217
218 @interface DOMAttr : DOMNode
219 - (NSString *)name;
220 - (BOOL)specified;
221 - (NSString *)value;
222 - (void)setValue:(NSString *)value;
223 - (DOMElement *)ownerElement;
224 @end
225
226
227 @interface DOMElement : DOMNode <DOMElementCSSInlineStyle>
228 - (NSString *)tagName;
229 - (NSString *)getAttribute:(NSString *)name;
230 - (void)setAttribute:(NSString *)name :(NSString *)value;
231 - (void)removeAttribute:(NSString *)name;
232 - (DOMAttr *)getAttributeNode:(NSString *)name;
233 - (DOMAttr *)setAttributeNode:(DOMAttr *)newAttr;
234 - (DOMAttr *)removeAttributeNode:(DOMAttr *)oldAttr;
235 - (DOMNodeList *)getElementsByTagName:(NSString *)name;
236 - (NSString *)getAttributeNS:(NSString *)namespaceURI :(NSString *)localName;
237 - (void)setAttributeNS:(NSString *)namespaceURI :(NSString *)qualifiedName :(NSString *)value;
238 - (void)removeAttributeNS:(NSString *)namespaceURI :(NSString *)localName;
239 - (DOMAttr *)getAttributeNodeNS:(NSString *)namespaceURI :(NSString *)localName;
240 - (DOMAttr *)setAttributeNodeNS:(DOMAttr *)newAttr;
241 - (DOMNodeList *)getElementsByTagNameNS:(NSString *)namespaceURI :(NSString *)localName;
242 - (BOOL)hasAttribute:(NSString *)name;
243 - (BOOL)hasAttributeNS:(NSString *)namespaceURI :(NSString *)localName;
244 - (CSSStyleDeclaration *)style;
245 @end
246
247
248 @interface DOMText : DOMCharacterData
249 - (DOMText *)splitText:(unsigned long)offset;
250 @end
251
252
253 @interface DOMComment : DOMCharacterData
254 @end
255
256
257 @interface DOMCDATASection : DOMText
258 @end
259
260
261 @interface DOMDocumentType : DOMNode
262 - (NSString *)name;
263 - (DOMNamedNodeMap *)entities;
264 - (DOMNamedNodeMap *)notations;
265 - (NSString *)publicId;
266 - (NSString *)systemId;
267 - (NSString *)internalSubset;
268 @end
269
270
271 @interface DOMNotation : DOMNode
272 - (NSString *)publicId;
273 - (NSString *)systemId;
274 @end
275
276
277 @interface DOMEntity : DOMNode
278 - (NSString *)publicId;
279 - (NSString *)systemId;
280 - (NSString *)notationName;
281 @end
282
283
284 @interface DOMEntityReference : DOMNode
285 @end
286
287
288 @interface DOMProcessingInstruction : DOMNode
289 - (NSString *)target;
290 - (NSString *)data;
291 - (void)setData:(NSString *)data;
292 @end
293
294
295 @interface DOMRange : DOMObject
296 - (DOMNode *)startContainer;
297 - (long)startOffset;
298 - (DOMNode *)endContainer;
299 - (long)endOffset;
300 - (BOOL)collapsed;
301 - (DOMNode *)commonAncestorContainer;
302 - (void)setStart:(DOMNode *)refNode :(long)offset;
303 - (void)setEnd:(DOMNode *)refNode :(long)offset;
304 - (void)setStartBefore:(DOMNode *)refNode;
305 - (void)setStartAfter:(DOMNode *)refNode;
306 - (void)setEndBefore:(DOMNode *)refNode;
307 - (void)setEndAfter:(DOMNode *)refNode;
308 - (void)collapse:(BOOL)toStart;
309 - (void)selectNode:(DOMNode *)refNode;
310 - (void)selectNodeContents:(DOMNode *)refNode;
311 - (short)compareBoundaryPoints:(unsigned short)how :(DOMRange *)sourceRange;
312 - (void)deleteContents;
313 - (DOMDocumentFragment *)extractContents;
314 - (DOMDocumentFragment *)cloneContents;
315 - (void)insertNode:(DOMNode *)newNode;
316 - (void)surroundContents:(DOMNode *)newParent;
317 - (DOMRange *)cloneRange;
318 - (NSString *)toString;
319 - (void)detach;
320 @end
321
322
323 @protocol DOMDocumentRange
324 - (DOMRange *)createRange;
325 @end
326
327
328 @protocol DOMViewCSS
329 - (CSSStyleDeclaration *)getComputedStyle:(DOMElement *)elt :(NSString *)pseudoElt;
330 @end
331
332
333 @protocol DOMDocumentStyle
334 - (DOMStyleSheetList *)styleSheets;
335 @end
336
337
338 @protocol DOMDocumentCSS <DOMDocumentStyle>
339 - (CSSStyleDeclaration *)getOverrideStyle:(DOMElement *)elt :(NSString *)pseudoElt;
340 @end
341
342
343 @protocol DOMImplementationCSS
344 - (CSSStyleSheet *)createCSSStyleSheet:(NSString *)title :(NSString *)media;
345 @end
346
347
348 @protocol DOMElementCSSInlineStyle
349 - (CSSStyleDeclaration *)style;
350 @end