Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 41bef39eadb8d5a1a4c4f79eaa39834997d8d2e2
https://github.com/WebKit/WebKit/commit/41bef39eadb8d5a1a4c4f79eaa39834997d8d2e2
Author: Wenson Hsieh <[email protected]>
Date: 2025-02-27 (Thu, 27 Feb 2025)
Changed paths:
M Source/WebCore/editing/cocoa/HTMLConverter.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WritingTools.mm
Log Message:
-----------
[WritingTools] ObjC exception in `preferredFilenameForElement` under
`-[NSFileWrapper setPreferredFilename:]`
https://bugs.webkit.org/show_bug.cgi?id=288771
rdar://145408164
Reviewed by Aditya Keerthi and Abrar Rahman Protyasha.
Make `fileWrapperForElement(const HTMLImageElement&)` robust in the case where
the image element is
backed by an attachment element without a `title` attribute. Currently, our
logic to extract the
`preferredFilenameForElement` does the following:
```
if (RefPtr attachmentElement = element.attachmentElement())
return attachmentElement->attachmentTitle();
```
...which causes us to pass an empty string as the `NSFileWrapper`'s preferred
file name, which in
turn causess an ObjC exception to be thrown. We can instead make this more
robust, by only returning
the attachment element's title if it's non-empty.
* Source/WebCore/editing/cocoa/HTMLConverter.mm:
(preferredFilenameForElement):
See above. Additionally rearrange this helper, to guarantee that we *always*
return a non-empty
string by guarding every early return with an `!….isEmpty()` check. The
fallback return value,
`copyImageUnknownFileLabel()`, just looks up a hard-coded fallback string from
the localized strings
dictionary, so it should always exist.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WritingTools.mm:
(TEST(WritingTools, ProofreadingWithUntitledImageAttachment)):
Add a new API test to exercise this crash fix.
Canonical link: https://commits.webkit.org/291293@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