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

Reply via email to