1/* 2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. 3 * Copyright (C) 2006, 2007 Samuel Weinig <sam@webkit.org> 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 21module core { 22 23 interface [ 24 CustomToJS, 25 GenerateNativeConverter, 26 CustomMarkFunction, 27 InlineGetOwnPropertySlot 28 ] Document : Node { 29 30 // DOM Level 1 Core 31 readonly attribute DocumentType doctype; 32 readonly attribute [V8Custom] DOMImplementation implementation; 33 readonly attribute Element documentElement; 34 35 [ReturnsNew] Element createElement(in [ConvertNullToNullString] DOMString tagName) 36 raises (DOMException); 37 DocumentFragment createDocumentFragment(); 38 [ReturnsNew] Text createTextNode(in DOMString data); 39 [ReturnsNew] Comment createComment(in DOMString data); 40 [ReturnsNew] CDATASection createCDATASection(in DOMString data) 41 raises(DOMException); 42 [OldStyleObjC, ReturnsNew] ProcessingInstruction createProcessingInstruction(in DOMString target, 43 in DOMString data) 44 raises (DOMException); 45 [ReturnsNew] Attr createAttribute(in DOMString name) 46 raises (DOMException); 47 [ReturnsNew] EntityReference createEntityReference(in DOMString name) 48 raises(DOMException); 49 NodeList getElementsByTagName(in DOMString tagname); 50 51 // Introduced in DOM Level 2: 52 53 [OldStyleObjC, ReturnsNew] Node importNode(in Node importedNode, 54 in boolean deep) 55 raises (DOMException); 56 [OldStyleObjC, ReturnsNew] Element createElementNS(in [ConvertNullToNullString] DOMString namespaceURI, 57 in [ConvertNullToNullString] DOMString qualifiedName) 58 raises (DOMException); 59 [OldStyleObjC, ReturnsNew] Attr createAttributeNS(in [ConvertNullToNullString] DOMString namespaceURI, 60 in [ConvertNullToNullString] DOMString qualifiedName) 61 raises (DOMException); 62 [OldStyleObjC] NodeList getElementsByTagNameNS(in [ConvertNullToNullString] DOMString namespaceURI, 63 in DOMString localName); 64 Element getElementById(in DOMString elementId); 65 66 // DOM Level 3 Core 67 68 readonly attribute [ConvertNullStringTo=Null] DOMString inputEncoding; 69 70 readonly attribute [ConvertNullStringTo=Null] DOMString xmlEncoding; 71 attribute [ConvertNullStringTo=Null, ConvertNullToNullString] DOMString xmlVersion 72 setter raises (DOMException); 73 attribute boolean xmlStandalone 74 setter raises (DOMException); 75 76 Node adoptNode(in Node source) 77 raises (DOMException); 78 79 attribute [ConvertNullStringTo=Null, ConvertNullToNullString] DOMString documentURI; 80 81 // DOM Level 2 Events (DocumentEvents interface) 82 83 Event createEvent(in DOMString eventType) 84 raises(DOMException); 85 86 // DOM Level 2 Tranversal and Range (DocumentRange interface) 87 88 Range createRange(); 89 90 // DOM Level 2 Tranversal and Range (DocumentTraversal interface) 91 92 [OldStyleObjC] NodeIterator createNodeIterator(in Node root, 93 in unsigned long whatToShow, 94 in NodeFilter filter, 95 in boolean expandEntityReferences) 96 raises(DOMException); 97 [OldStyleObjC] TreeWalker createTreeWalker(in Node root, 98 in unsigned long whatToShow, 99 in NodeFilter filter, 100 in boolean expandEntityReferences) 101 raises(DOMException); 102 103 // DOM Level 2 Abstract Views (DocumentView interface) 104 105 readonly attribute DOMWindow defaultView; 106 107 // DOM Level 2 Style (DocumentStyle interface) 108 109 readonly attribute StyleSheetList styleSheets; 110 111 // DOM Level 2 Style (DocumentCSS interface) 112 113 [OldStyleObjC] CSSStyleDeclaration getOverrideStyle(in Element element, 114 in DOMString pseudoElement); 115#if defined(ENABLE_XPATH) && ENABLE_XPATH 116 // DOM Level 3 XPath (XPathEvaluator interface) 117 [OldStyleObjC] XPathExpression createExpression(in DOMString expression, 118 in XPathNSResolver resolver) 119 raises(DOMException); 120 XPathNSResolver createNSResolver(in Node nodeResolver); 121 [OldStyleObjC, V8Custom] XPathResult evaluate(in DOMString expression, 122 in Node contextNode, 123 in XPathNSResolver resolver, 124 in unsigned short type, 125 in XPathResult inResult) 126 raises(DOMException); 127#endif // ENABLE_XPATH 128 129 // Common extensions 130 131 boolean execCommand(in DOMString command, 132 in boolean userInterface, 133 in [ConvertUndefinedOrNullToNullString] DOMString value); 134 135#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C 136 // FIXME: remove the these two versions once [Optional] is implemented for Objective-C. 137 boolean execCommand(in DOMString command, 138 in boolean userInterface); 139 boolean execCommand(in DOMString command); 140#endif 141 142 boolean queryCommandEnabled(in DOMString command); 143 boolean queryCommandIndeterm(in DOMString command); 144 boolean queryCommandState(in DOMString command); 145 boolean queryCommandSupported(in DOMString command); 146 [ConvertNullStringTo=False] DOMString queryCommandValue(in DOMString command); 147 148 // Moved down from HTMLDocument 149 150 attribute [ConvertNullToNullString] DOMString title; 151 readonly attribute DOMString referrer; 152#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT 153 attribute [ConvertNullToNullString] DOMString domain 154 setter raises (DOMException); 155#else 156 readonly attribute DOMString domain; 157#endif 158 readonly attribute DOMString URL; 159 160 attribute [ConvertNullToNullString] DOMString cookie 161 setter raises (DOMException), 162 getter raises (DOMException); 163 164 // FIXME: the DOM spec does NOT have this attribute 165 // raising an exception. 166 attribute HTMLElement body 167 setter raises (DOMException); 168 169 readonly attribute HTMLHeadElement head; 170 readonly attribute HTMLCollection images; 171 readonly attribute HTMLCollection applets; 172 readonly attribute HTMLCollection links; 173 readonly attribute HTMLCollection forms; 174 readonly attribute HTMLCollection anchors; 175 readonly attribute DOMString lastModified; 176 177 NodeList getElementsByName(in DOMString elementName); 178 179#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT 180 attribute [Custom] Location location; 181#endif 182 183 // IE extensions 184 185 attribute [ConvertNullStringTo=Undefined, ConvertNullToNullString] DOMString charset; 186 readonly attribute [ConvertNullStringTo=Undefined] DOMString defaultCharset; 187 readonly attribute [ConvertNullStringTo=Undefined] DOMString readyState; 188 189 Element elementFromPoint(in long x, in long y); 190 Range caretRangeFromPoint(in long x, in long y); 191 192 // Mozilla extensions 193#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT 194 DOMSelection getSelection(); 195#endif 196 readonly attribute [ConvertNullStringTo=Null] DOMString characterSet; 197 198 // WebKit extensions 199 200 readonly attribute [ConvertNullStringTo=Null] DOMString preferredStylesheetSet; 201 attribute [ConvertNullStringTo=Null, ConvertNullToNullString] DOMString selectedStylesheetSet; 202 203#if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT 204 CSSStyleDeclaration createCSSStyleDeclaration(); 205#endif 206 207#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C 208 // DOM Level 2 Style Interface 209 [OldStyleObjC, UsesView] CSSStyleDeclaration getComputedStyle(in Element element, 210 in DOMString pseudoElement); 211 212 // WebKit extension 213 // FIXME: remove the first version once [Optional] is implemented for Objective-C. 214 [UsesView] CSSRuleList getMatchedCSSRules(in Element element, 215 in DOMString pseudoElement); 216 [UsesView] CSSRuleList getMatchedCSSRules(in Element element, 217 in DOMString pseudoElement, 218 in [Optional] boolean authorOnly); 219 220#endif 221 222#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C 223 [V8Custom] DOMObject getCSSCanvasContext(in DOMString contextId, in DOMString name, in long width, in long height); 224#endif 225 226 // HTML 5 227 NodeList getElementsByClassName(in DOMString tagname); 228 229 // NodeSelector - Selector API 230 Element querySelector(in DOMString selectors) 231 raises(DOMException); 232 NodeList querySelectorAll(in DOMString selectors) 233 raises(DOMException); 234 235#if defined(ENABLE_WML) && ENABLE_WML 236 // Only used from within WML layout tests, WML doesn't have JS support at all. 237 [DontEnum] void resetWMLPageState(); 238 [DontEnum] void initializeWMLPageState(); 239#endif 240 241#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C 242 // Event handler DOM attributes 243 attribute [DontEnum] EventListener onabort; 244 attribute [DontEnum] EventListener onblur; 245 attribute [DontEnum] EventListener onchange; 246 attribute [DontEnum] EventListener onclick; 247 attribute [DontEnum] EventListener oncontextmenu; 248 attribute [DontEnum] EventListener ondblclick; 249 attribute [DontEnum] EventListener ondrag; 250 attribute [DontEnum] EventListener ondragend; 251 attribute [DontEnum] EventListener ondragenter; 252 attribute [DontEnum] EventListener ondragleave; 253 attribute [DontEnum] EventListener ondragover; 254 attribute [DontEnum] EventListener ondragstart; 255 attribute [DontEnum] EventListener ondrop; 256 attribute [DontEnum] EventListener onerror; 257 attribute [DontEnum] EventListener onfocus; 258 attribute [DontEnum] EventListener oninput; 259 attribute [DontEnum] EventListener oninvalid; 260 attribute [DontEnum] EventListener onkeydown; 261 attribute [DontEnum] EventListener onkeypress; 262 attribute [DontEnum] EventListener onkeyup; 263 attribute [DontEnum] EventListener onload; 264 attribute [DontEnum] EventListener onmousedown; 265 attribute [DontEnum] EventListener onmousemove; 266 attribute [DontEnum] EventListener onmouseout; 267 attribute [DontEnum] EventListener onmouseover; 268 attribute [DontEnum] EventListener onmouseup; 269 attribute [DontEnum] EventListener onmousewheel; 270 attribute [DontEnum] EventListener onscroll; 271 attribute [DontEnum] EventListener onselect; 272 attribute [DontEnum] EventListener onsubmit; 273 274 // attribute [DontEnum] EventListener oncanplay; 275 // attribute [DontEnum] EventListener oncanplaythrough; 276 // attribute [DontEnum] EventListener ondurationchange; 277 // attribute [DontEnum] EventListener onemptied; 278 // attribute [DontEnum] EventListener onended; 279 // attribute [DontEnum] EventListener onformchange; 280 // attribute [DontEnum] EventListener onforminput; 281 // attribute [DontEnum] EventListener onloadeddata; 282 // attribute [DontEnum] EventListener onloadedmetadata; 283 // attribute [DontEnum] EventListener onloadstart; 284 // attribute [DontEnum] EventListener onpause; 285 // attribute [DontEnum] EventListener onplay; 286 // attribute [DontEnum] EventListener onplaying; 287 // attribute [DontEnum] EventListener onprogress; 288 // attribute [DontEnum] EventListener onratechange; 289 // attribute [DontEnum] EventListener onreadystatechange; 290 // attribute [DontEnum] EventListener onseeked; 291 // attribute [DontEnum] EventListener onseeking; 292 // attribute [DontEnum] EventListener onshow; 293 // attribute [DontEnum] EventListener onstalled; 294 // attribute [DontEnum] EventListener onsuspend; 295 // attribute [DontEnum] EventListener ontimeupdate; 296 // attribute [DontEnum] EventListener onvolumechange; 297 // attribute [DontEnum] EventListener onwaiting; 298 299 // WebKit extensions 300 attribute [DontEnum] EventListener onbeforecut; 301 attribute [DontEnum] EventListener oncut; 302 attribute [DontEnum] EventListener onbeforecopy; 303 attribute [DontEnum] EventListener oncopy; 304 attribute [DontEnum] EventListener onbeforepaste; 305 attribute [DontEnum] EventListener onpaste; 306 attribute [DontEnum] EventListener onreset; 307 attribute [DontEnum] EventListener onsearch; 308 attribute [DontEnum] EventListener onselectstart; 309#if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS 310 attribute [DontEnum] EventListener ontouchstart; 311 attribute [DontEnum] EventListener ontouchmove; 312 attribute [DontEnum] EventListener ontouchend; 313 attribute [DontEnum] EventListener ontouchcancel; 314#endif 315#endif 316 317#if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS 318 [ReturnsNew] Touch createTouch(in DOMWindow window, 319 in EventTarget target, 320 in long identifier, 321 in long pageX, 322 in long pageY, 323 in long ScreenX, 324 in long screenY) 325 raises (DOMException); 326 [ReturnsNew] TouchList createTouchList() 327 raises (DOMException); 328#endif 329 330 }; 331 332} 333