Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: becb5858cc51dc73bee1a780568e46b085f41d89
      
https://github.com/WebKit/WebKit/commit/becb5858cc51dc73bee1a780568e46b085f41d89
  Author: Wenson Hsieh <[email protected]>
  Date:   2024-10-18 (Fri, 18 Oct 2024)

  Changed paths:
    M Source/WebCore/editing/cocoa/HTMLConverter.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WritingTools.mm

  Log Message:
  -----------
  Writing tools rewrite incorrectly removes links in Mail compose
https://bugs.webkit.org/show_bug.cgi?id=281718
rdar://138041439

Reviewed by Richard Robinson.

Using rewrite currently causes any links in Mail compose to be replaced by a 
span element that has
the same text color, font and underlines as the link, but (importantly) doesn't 
contain the actual
link `href`. This happens because the extracted attributed string for 
WritingTools doesn't contain
any link URL attributes. To fix this, we teach 
`WebCore::editingAttributedString` to detect when
text is contained inside of a link, extract the URL of the link, and add it as 
an attributed string
attribute corresponding to `NSLinkAttributeName`.

* Source/WebCore/editing/cocoa/HTMLConverter.mm:
(hasAncestorQualifyingForWritingToolsPreservation):

Drive-by fix: use `find()` to avoid a redundant hash lookup.

(enclosingLinkElement):

Add a helper method to return whether a given node is contained within an 
enclosing link (determined
via `Node::isLink()`). To avoid redundant tree traversal in the case where text 
is not inside of a
link, we cache the enclosing link result (which may be null) for each node that 
is both not a link,
and a parent of some text node in the DOM.

(updateAttributes):
(WebCore::editingAttributedString):

See above for more details.

(updateAttributesForStyle): Deleted.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WritingTools.mm:
(TEST(WritingTools, ProofreadingWithImage)):

Drive-by fix: typo in a FIXME comment.

(TEST(WritingTools, ProofreadingWithLinks)):

Add a new API test to exercise the change, by verifying that the extracted text 
context contains
link URLs in the attributed text.

Canonical link: https://commits.webkit.org/285398@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to