OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007 Apple Inc. All rights reserved. |
3 * Copyright (C) 2009 Google Inc. All rights reserved. | 3 * Copyright (C) 2009 Google Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * | 8 * |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
11 * 2. Redistributions in binary form must reproduce the above copyright | 11 * 2. Redistributions in binary form must reproduce the above copyright |
12 * notice, this list of conditions and the following disclaimer in the | 12 * notice, this list of conditions and the following disclaimer in the |
13 * documentation and/or other materials provided with the distribution. | 13 * documentation and/or other materials provided with the distribution. |
14 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of | 14 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of |
15 * its contributors may be used to endorse or promote products derived | 15 * its contributors may be used to endorse or promote products derived |
16 * from this software without specific prior written permission. | 16 * from this software without specific prior written permission. |
17 * | 17 * |
18 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY | 18 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY |
19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
21 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY | 21 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY |
22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
28 */ | 28 */ |
29 | 29 |
30 // This is based on the W3C standard HTML Editing APIs | 30 // http://w3c.github.io/selection-api/#idl-def-Selection |
31 // https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#selection | 31 |
32 // | 32 // TODO(yoichio): All long types should be unsigned long. crbug.com/391673 |
33 // FIXME: Fix discrepancies from the standard, especially | |
34 // * unsigned types where should be unsigned | |
35 // * Nullability | |
36 // * RemoveRange(Range range) method | |
37 // http://crbug.com/391673 | |
38 [ | 33 [ |
39 ImplementedAs=DOMSelection, | 34 ImplementedAs=DOMSelection, |
40 WillBeGarbageCollected, | 35 WillBeGarbageCollected, |
41 ] interface Selection { | 36 ] interface Selection { |
42 readonly attribute Node anchorNode; | 37 readonly attribute Node? anchorNode; |
43 readonly attribute long anchorOffset; | 38 readonly attribute long anchorOffset; |
44 readonly attribute Node focusNode; | 39 readonly attribute Node? focusNode; |
45 readonly attribute long focusOffset; | 40 readonly attribute long focusOffset; |
46 | |
47 readonly attribute boolean isCollapsed; | 41 readonly attribute boolean isCollapsed; |
| 42 readonly attribute long rangeCount; |
| 43 [RaisesException] Range getRangeAt(long index); |
| 44 void addRange(Range range); |
| 45 // TODO(yoichio): Implement removeRange. crbug.com/391673 |
| 46 //void removeRange(Range range); |
| 47 void removeAllRanges(); |
| 48 // TODO(yoichio): The node argument should not be nullable. crbug.com/391673 |
| 49 // TODO(philipj): The offset argument should not have a default value. |
48 [RaisesException] void collapse(Node? node, optional long offset = 0); | 50 [RaisesException] void collapse(Node? node, optional long offset = 0); |
49 [RaisesException] void collapseToStart(); | 51 [RaisesException] void collapseToStart(); |
50 [RaisesException] void collapseToEnd(); | 52 [RaisesException] void collapseToEnd(); |
51 | 53 // TODO(philipj): The offset argument should not have a default value. |
52 // We mark offset as optional, defaulting to 0; this differs from spec. | |
53 // http://crbug.com/384966 | |
54 [RaisesException, TypeChecking=Interface] void extend(Node node, optional lo
ng offset = 0); | 54 [RaisesException, TypeChecking=Interface] void extend(Node node, optional lo
ng offset = 0); |
55 | 55 // TODO(philipj): The arguments should be anchorNode, anchorOffset, |
56 [RaisesException, TypeChecking=Interface] void selectAllChildren(Node node); | 56 // focusNode and focusOffset, and none of them should be optional. |
57 [CustomElementCallbacks] void deleteFromDocument(); | |
58 | |
59 readonly attribute long rangeCount; | |
60 [RaisesException] Range getRangeAt(long index); | |
61 void addRange(Range range); | |
62 void removeAllRanges(); | |
63 | |
64 [NotEnumerable] stringifier; | |
65 | |
66 // Firefox extensions | |
67 // https://developer.mozilla.org/En/DOM/Selection | |
68 // | |
69 [MeasureAs=SelectionContainsNode] boolean containsNode([Default = Undefined]
optional Node node, [Default = Undefined] optional boolean allowPartial); | |
70 | |
71 // WebKit extensions | |
72 [MeasureAs=SelectionBaseNode] readonly attribute Node baseNode; | |
73 [MeasureAs=SelectionBaseOffset] readonly attribute long baseOffset; | |
74 [MeasureAs=SelectionExtentNode] readonly attribute Node extentNode; | |
75 [MeasureAs=SelectionExtentOffset] readonly attribute long extentOffset; | |
76 | |
77 // WebKit's "type" accessor returns "None", "Range" and "Caret" | |
78 // IE's type accessor returns "none", "text" and "control" | |
79 [MeasureAs=SelectionType] readonly attribute DOMString type; | |
80 | |
81 [MeasureAs=SelectionModify] void modify([Default=Undefined] optional DOMStri
ng alter, | |
82 [Default=Undefined] optional DOMStri
ng direction, | |
83 [Default=Undefined] optional DOMStri
ng granularity); | |
84 [MeasureAs=SelectionSetBaseAndExtent, RaisesException] void setBaseAndExtent
([Default=Undefined] optional Node baseNode, | 57 [MeasureAs=SelectionSetBaseAndExtent, RaisesException] void setBaseAndExtent
([Default=Undefined] optional Node baseNode, |
85
[Default=Undefined] optional long baseOffset, | 58
[Default=Undefined] optional long baseOffset, |
86
[Default=Undefined] optional Node extentNode, | 59
[Default=Undefined] optional Node extentNode, |
87
[Default=Undefined] optional long extentOffset); | 60
[Default=Undefined] optional long extentOffset); |
| 61 [RaisesException, TypeChecking=Interface] void selectAllChildren(Node node); |
| 62 [CustomElementCallbacks] void deleteFromDocument(); |
| 63 // TODO(philipj): The arguments should not be optional. |
| 64 [MeasureAs=SelectionContainsNode] boolean containsNode([Default=Undefined] o
ptional Node node, [Default=Undefined] optional boolean allowPartialContainment)
; |
| 65 // TODO(philipj): The spec does not use [NotEnumerable]. See also: |
| 66 // https://codereview.chromium.org/345983004/ |
| 67 // https://www.w3.org/Bugs/Public/show_bug.cgi?id=26179 |
| 68 [NotEnumerable] stringifier DOMString (); |
| 69 |
| 70 // Non-standard APIs |
| 71 |
| 72 // https://github.com/w3c/selection-api/issues/34 |
| 73 [MeasureAs=SelectionBaseNode] readonly attribute Node? baseNode; |
| 74 [MeasureAs=SelectionBaseOffset] readonly attribute long baseOffset; |
| 75 [MeasureAs=SelectionExtentNode] readonly attribute Node? extentNode; |
| 76 [MeasureAs=SelectionExtentOffset] readonly attribute long extentOffset; |
| 77 |
| 78 // https://github.com/w3c/selection-api/issues/14 |
| 79 [MeasureAs=SelectionType] readonly attribute DOMString type; |
| 80 |
| 81 // https://github.com/w3c/selection-api/issues/36 |
| 82 [MeasureAs=SelectionEmpty] void empty(); |
| 83 |
| 84 // https://github.com/w3c/selection-api/issues/37 |
| 85 [MeasureAs=SelectionModify] void modify([Default=Undefined] optional DOMStri
ng alter, |
| 86 [Default=Undefined] optional DOMStri
ng direction, |
| 87 [Default=Undefined] optional DOMStri
ng granularity); |
| 88 |
| 89 // https://github.com/w3c/selection-api/issues/38 |
88 [ImplementedAs=collapse, MeasureAs=SelectionSetPosition, RaisesException] vo
id setPosition(Node? node, optional long offset = 0); | 90 [ImplementedAs=collapse, MeasureAs=SelectionSetPosition, RaisesException] vo
id setPosition(Node? node, optional long offset = 0); |
89 | |
90 // IE extensions | |
91 // http://msdn.microsoft.com/en-us/library/ms535869(VS.85).aspx | |
92 [MeasureAs=SelectionEmpty] void empty(); | |
93 }; | 91 }; |
OLD | NEW |