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