diff --git a/cssom-view-1/Overview.bs b/cssom-view-1/Overview.bs index 4a8c4e1fb5e..acf9cb3ee18 100644 --- a/cssom-view-1/Overview.bs +++ b/cssom-view-1/Overview.bs @@ -1011,7 +1011,7 @@ Note: Some non-conforming implementations are known to return 32 instead of 24. partial interface Document { Element? elementFromPoint(double x, double y); sequence<Element> elementsFromPoint(double x, double y); - CaretPosition? caretPositionFromPoint(double x, double y); + CaretPosition? caretPositionFromPoint(double x, double y, ShadowRoot... shadowRoots); readonly attribute Element? scrollingElement; }; @@ -1042,7 +1042,7 @@ instance, an element can be excluded from being a target for hit testing by usin 1. If the document has a [=root element=], and the last item in sequence is not the [=root element=], append the [=root element=] to sequence. 1. Return sequence. -The caretPositionFromPoint(x, y) method must return the +The caretPositionFromPoint(x, y, ...shadowRoots) method must return the result of running these steps: 1. If there is no viewport associated with the document, return null. @@ -1070,21 +1070,18 @@ result of running these steps:
caret range
null -1. Otherwise, return a caret position where the - caret range is a collapsed - {{Range}} object for the position - where the text insertion point indicator would have been inserted when applying the transforms that apply to the descendants of the - viewport, and the other properties are set as follows: - -
-
caret node -
The [=range/start node=] - of the caret range. - -
caret offset -
The [=range/start offset=] of - the caret range. -
+1. Otherwise: + + 1. Let caretPosition be a tuple consisting of a caretPositionNode (a node) and a caretPositionOffset (a non-negative integer) for the position where the text insertion point indicator would have been inserted when applying + the transforms that apply to the descendants of the viewport. + 1. Let startNode be the caretPositionNode of the caretPosition, and let startOffset be the caretPositionOffset of the caretPosition. + 1. While startNode is a [=node=], startNode's [=tree/root=] is a [=shadow root=], and startNode's [=tree/root=] is not a [=shadow-including inclusive ancestor=] of any of shadowRoots, repeat these steps: + 1. Set startOffset to [=tree/index=] of startNode's [=tree/root=]'s [=host=]. + 1. Set startNode to startNode's [=tree/root=]'s [=host=]'s [=tree/parent=]. + 1. Return a caret position with its properties set as follows: + 1. caret node is set to startNode. + 1. caret offset is set to startOffset. + 1. caret range is set to a collapsed {{Range}} object which [=range/start node=] and [=range/end node=] are startNode, and which [=range/start offset=] and [=range/end offset=] are startOffset. Note: The specifics of hit testing are out of scope of this specification and therefore the exact details of @@ -1148,6 +1145,8 @@ aborting on the first step that returns a value: Note: This {{DOMRect}} object is not live. +Issue(10230): Consider removing caret range concept from caret position interface. +

Extensions to the {{Element}} Interface