Bug 224865

Summary: DOMException should be Serializable
Product: WebKit Reporter: Chris Lord <clord>
Component: BindingsAssignee: Chris Lord <clord>
Status: RESOLVED FIXED    
Severity: Normal CC: alecflett, beidson, cdumez, ews-watchlist, fred.wang, jsbell, keith_miller, koivisto, mark.lam, webkit-bug-importer, ysuzuki
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 224178    
Attachments:
Description Flags
Patch
none
Patch
none
Patch
none
Patch
ews-feeder: commit-queue-
Patch none

Description Chris Lord 2021-04-21 03:49:35 PDT
According to the spec, DOMException is Serializable, but this isn't currently implemented: https://heycam.github.io/webidl/#dfn-DOMException

This is causing some WPT Worker tests to fail.
Comment 1 Chris Lord 2021-04-21 04:53:49 PDT
Created attachment 426671 [details]
Patch
Comment 2 Chris Lord 2021-04-21 04:56:03 PDT
Uploading the patch to determine if it's already tested (it is tested indirectly in css-font-loading WPT tests, but that relies on bug 224178 and I'd like to check this in before that) - if it isn't, I'll write a test.
Comment 3 Chris Lord 2021-04-21 05:41:21 PDT
Created attachment 426673 [details]
Patch
Comment 4 Chris Lord 2021-04-21 06:33:02 PDT
Created attachment 426676 [details]
Patch
Comment 5 Chris Dumez 2021-04-21 07:36:08 PDT
Comment on attachment 426676 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=426676&action=review

r=me with comments.

> Source/WebCore/bindings/js/SerializedScriptValue.cpp:1389
> +                write(DOMExceptionTag);

I think it would be good to move this logic to a separate dumpDOMException() function, to follow the pattern used by other types.

> Source/WebCore/bindings/js/SerializedScriptValue.cpp:3595
> +            CachedStringRef name;

Ditto. It would be good to move this logic to a separate readDOMException() function.

> LayoutTests/storage/indexeddb/resources/structured-clone.js:-631
> -    evalAndExpectException("store.put(new DOMException, 'key')", "DOMException.DATA_CLONE_ERR");

Instead of simply drop it the check, can we switch it into a check that is supposed to succeed? It seems this test checks checks types that succeed and fail.
Comment 6 Chris Lord 2021-04-21 09:18:24 PDT
Created attachment 426699 [details]
Patch
Comment 7 Chris Lord 2021-04-21 09:22:52 PDT
Created attachment 426700 [details]
Patch
Comment 8 EWS 2021-04-21 10:43:57 PDT
Committed r276372 (236849@main): <https://commits.webkit.org/236849@main>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426700 [details].
Comment 9 Radar WebKit Bug Importer 2021-04-22 18:17:38 PDT
<rdar://problem/77049131>