Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(554)

Unified Diff: Source/core/editing/Selection.idl

Issue 1159303003: Sync the Selection interface with the spec (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: add review and spec bug for [NotEnumerable] toString() Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/editing/Selection.idl
diff --git a/Source/core/editing/Selection.idl b/Source/core/editing/Selection.idl
index 08389f229b146ba3f9a55fd538f5689c687d73ac..a7ad07b414cbc02147f84e07a9b0386b600e5cb4 100644
--- a/Source/core/editing/Selection.idl
+++ b/Source/core/editing/Selection.idl
@@ -27,67 +27,65 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-// This is based on the W3C standard HTML Editing APIs
-// https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#selection
-//
-// FIXME: Fix discrepancies from the standard, especially
-// * unsigned types where should be unsigned
-// * Nullability
-// * RemoveRange(Range range) method
-// http://crbug.com/391673
+// http://w3c.github.io/selection-api/#idl-def-Selection
+
+// TODO(yoichio): All long types should be unsigned long. crbug.com/391673
[
ImplementedAs=DOMSelection,
WillBeGarbageCollected,
] interface Selection {
- readonly attribute Node anchorNode;
+ readonly attribute Node? anchorNode;
readonly attribute long anchorOffset;
- readonly attribute Node focusNode;
+ readonly attribute Node? focusNode;
readonly attribute long focusOffset;
-
readonly attribute boolean isCollapsed;
+ readonly attribute long rangeCount;
+ [RaisesException] Range getRangeAt(long index);
+ void addRange(Range range);
+ // TODO(yoichio): Implement removeRange. crbug.com/391673
+ //void removeRange(Range range);
+ void removeAllRanges();
+ // TODO(yoichio): The node argument should not be nullable. crbug.com/391673
+ // TODO(philipj): The offset argument should not have a default value.
[RaisesException] void collapse(Node? node, optional long offset = 0);
[RaisesException] void collapseToStart();
[RaisesException] void collapseToEnd();
-
- // We mark offset as optional, defaulting to 0; this differs from spec.
- // http://crbug.com/384966
+ // TODO(philipj): The offset argument should not have a default value.
[RaisesException, TypeChecking=Interface] void extend(Node node, optional long offset = 0);
-
+ // TODO(philipj): The arguments should be anchorNode, anchorOffset,
+ // focusNode and focusOffset, and none of them should be optional.
+ [MeasureAs=SelectionSetBaseAndExtent, RaisesException] void setBaseAndExtent([Default=Undefined] optional Node baseNode,
+ [Default=Undefined] optional long baseOffset,
+ [Default=Undefined] optional Node extentNode,
+ [Default=Undefined] optional long extentOffset);
[RaisesException, TypeChecking=Interface] void selectAllChildren(Node node);
[CustomElementCallbacks] void deleteFromDocument();
+ // TODO(philipj): The arguments should not be optional.
+ [MeasureAs=SelectionContainsNode] boolean containsNode([Default=Undefined] optional Node node, [Default=Undefined] optional boolean allowPartialContainment);
+ // TODO(philipj): The spec does not use [NotEnumerable]. See also:
+ // https://codereview.chromium.org/345983004/
+ // https://www.w3.org/Bugs/Public/show_bug.cgi?id=26179
+ [NotEnumerable] stringifier DOMString ();
- readonly attribute long rangeCount;
- [RaisesException] Range getRangeAt(long index);
- void addRange(Range range);
- void removeAllRanges();
-
- [NotEnumerable] stringifier;
-
- // Firefox extensions
- // https://developer.mozilla.org/En/DOM/Selection
- //
- [MeasureAs=SelectionContainsNode] boolean containsNode([Default = Undefined] optional Node node, [Default = Undefined] optional boolean allowPartial);
+ // Non-standard APIs
- // WebKit extensions
- [MeasureAs=SelectionBaseNode] readonly attribute Node baseNode;
+ // https://github.com/w3c/selection-api/issues/34
+ [MeasureAs=SelectionBaseNode] readonly attribute Node? baseNode;
[MeasureAs=SelectionBaseOffset] readonly attribute long baseOffset;
- [MeasureAs=SelectionExtentNode] readonly attribute Node extentNode;
+ [MeasureAs=SelectionExtentNode] readonly attribute Node? extentNode;
[MeasureAs=SelectionExtentOffset] readonly attribute long extentOffset;
- // WebKit's "type" accessor returns "None", "Range" and "Caret"
- // IE's type accessor returns "none", "text" and "control"
+ // https://github.com/w3c/selection-api/issues/14
[MeasureAs=SelectionType] readonly attribute DOMString type;
+ // https://github.com/w3c/selection-api/issues/36
+ [MeasureAs=SelectionEmpty] void empty();
+
+ // https://github.com/w3c/selection-api/issues/37
[MeasureAs=SelectionModify] void modify([Default=Undefined] optional DOMString alter,
[Default=Undefined] optional DOMString direction,
[Default=Undefined] optional DOMString granularity);
- [MeasureAs=SelectionSetBaseAndExtent, RaisesException] void setBaseAndExtent([Default=Undefined] optional Node baseNode,
- [Default=Undefined] optional long baseOffset,
- [Default=Undefined] optional Node extentNode,
- [Default=Undefined] optional long extentOffset);
- [ImplementedAs=collapse, MeasureAs=SelectionSetPosition, RaisesException] void setPosition(Node? node, optional long offset = 0);
- // IE extensions
- // http://msdn.microsoft.com/en-us/library/ms535869(VS.85).aspx
- [MeasureAs=SelectionEmpty] void empty();
+ // https://github.com/w3c/selection-api/issues/38
+ [ImplementedAs=collapse, MeasureAs=SelectionSetPosition, RaisesException] void setPosition(Node? node, optional long offset = 0);
};
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698