Sounds like something that should be reflected in the specs. Again, not
directly related to this Intent, but maybe something that should happen
in parallel.
/Daniel
On 2024-01-17 23:38, 'Siye Liu' via blink-dev wrote:
Blink has similar concept called "affinity" when placing caret at
wrapped line. definition:
https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/editing/visible_position.h;l=39-54
Thanks,
Siye
On Wednesday, January 17, 2024 at 6:35:14 AM UTC-8 Daniel Bratell wrote:
This is not directly related to this one function but more to the
whole API. I quickly skimmed the spec and I could not find out how
it handles line breaks which make caret positions ambigious?
When you press the END key at one line, and the HOME key at the
following line your caret DOM position can be the same, but the
visual caret positions should be different, and so should certain
actions like arrow-down and arrow-up.
When developing code to handle this in Opera, I solved it by
letting carets know if they were connected forward or backwards
(basically a bool) in the dom element, but maybe this is solved in
some other way now?
/Daniel
On 2024-01-16 18:31, 'Siye Liu' via blink-dev wrote:
Hi Brian,
To answer your question,
1. This prototype only covers the main dom scenario
(https://crbug.com/388976). Shadow dom scenario is tracked in
https://crbug.com/1514810.
2. The prototype should have similar behavior as
caretRangeFromPoint's implementation in Blink (when the point is
over an input element, the returned CaretPosition should be the
nearest ancestor of the input element) because I expect both APIs
share same hit testing logic under the hood.
Once the prototype is ready for dev trial, we can discuss further
about improving current implementation in both
caretRangeFromPoint and caretPositionFromPoint in Blink.
Thanks,
Siye
On Friday, January 12, 2024 at 5:23:25 PM UTC-8 Brian Birtles wrote:
Hi,
Will this also cover the behavioral differences between
caretPositionFromPoint as implemented in Gecko and
caretRangeFromPoint as implemented in Blink such as:
1. caretPositionFromPoint in Gecko digs into shadow DOM
elements whereas caretRangeFromPoint in Blink does not.
2. When the point is over a text input element,
caretPositionFromPoint in Gecko returns the text input
element and offset into it but caretRangeFromPoint in Blink
returns the nearest ancestor of the text input element. (Note
that caretRangeFromPoint in Webkit returns the text input
element but always returns a zero offset into it.)
Thanks,
Brian
2024年1月13日土曜日 3:35:59 UTC+9 [email protected]:
Contact emails
[email protected], [email protected]
Explainer
None
Specification
https://www.w3.org/TR/cssom-view-1/#dom-document-caretpositionfrompoint
Summary
This new API allows users to get current caret position
from a given screen point. The API returns a
CaretPosition object which represents the caret position
indicating current text insertion point including the
containing DOM node, caret's character offset, and the
client rectangle of caret range.
Blink component
Blink>CSS
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3ECSS>
Motivation
document.caretPositionFromPoint API is in CSSOM View and
is already implemented by Gecko. WebKit/Blink has similar
document.caretRangeFromPoint API which returns a text
range indicating the text insertion point. The existing
API was in CSSOM View at the time it was implemented:
https://bugs.webkit.org/show_bug.cgi?id=27046
http://web.archive.org/web/20090708002518/http://dev.w3.org/csswg/cssom-view/#the-documentview-interface
The existing API was replaced by the new API later:
https://hg.csswg.org/drafts/rev/4c7b6f843171. The switch
happened around 2009 and we don't have the historical
context about the decision. Given how long it has been
since the spec was updated, we believe it's best that
Blink complies with the spec so that future innovations
with the API can be spec compliant and have lower
interop/compat risk.
Initial public proposal
None
TAG review
None
TAG review status
Not applicable
Risks
Interoperability and Compatibility
Gecko already implemented the API. Webkit/Blink didn't
implement it. The interop risk is that it's unclear at
this moment about Webkit's position on this. We won't be
able to achieve full interop with this API if Webkit
isn't willing to support this API. There is a compat risk
too if we decided to deprecate the old API:
https://crbug.com/690599
/Gecko/: Shipped/Shipping
/WebKit/: No signal
(https://github.com/WebKit/standards-positions/issues/301)
/Web developers/: Positive
(https://bugs.chromium.org/p/chromium/issues/detail?id=388976#c34)
Web developers are asking to have
document.caretPositionFromPoint API implemented in Blink:
https://bugs.chromium.org/p/chromium/issues/detail?id=388976#c28
https://bugs.chromium.org/p/chromium/issues/detail?id=388976#c34
/Other signals/:
WebView application risks
Does this intent deprecate or change behavior of existing
APIs, such that it has potentially high risk for Android
WebView-based applications?
None
Debuggability
None
Is this feature fully tested by web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?
Yes
The API is tested in WPT:
https://github.com/web-platform-tests/wpt/blob/c18cfd4eb319ca535db8c194941719598b3b6ea8/css/cssom/caretPositionFromPoint.html
Flag name on chrome://flags
None
Finch feature name
None
Non-finch justification
None
Requires code in //chrome?
False
Tracking bug
https://crbug.com/388976
Estimated milestones
No milestones specified
Link to entry on the Chrome Platform
Statushttps://chromestatus.com/feature/5201014343073792
This intent message was generated by Chrome Platform
Status <https://chromestatus.com/>.
--
You received this message because you are subscribed to the
Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to [email protected].
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/0169dc69-72a5-46e4-b377-e682f8818a80n%40chromium.org
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/0169dc69-72a5-46e4-b377-e682f8818a80n%40chromium.org?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google
Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected].
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/7183ed6f-73e0-4858-a477-5469d764efc8n%40chromium.org
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/7183ed6f-73e0-4858-a477-5469d764efc8n%40chromium.org?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/7b753381-6d60-45a8-a195-9cd5e4fb656b%40gmail.com.