LibJS: Make DataView::byte_offset() return u32

This fixes structured serialization of DataView. It was expected
to be uniform with TypedArray, which returns u32 for byte_offset().

This was covered by a number of WPT infrastructure tests, which this
commit also imports.
This commit is contained in:
Andreas Kling 2024-11-03 23:30:44 +01:00 committed by Andreas Kling
commit 969ee0f3e0
Notes: github-actions[bot] 2024-11-03 23:23:29 +00:00
22 changed files with 2137 additions and 1 deletions

View file

@ -0,0 +1,12 @@
Summary
Harness status: OK
Rerun
Found 2 tests
2 Pass
Details
Result Test Name MessagePass Throwing name getter fails serialization
Pass Errors sent across realms should preserve their type

View file

@ -0,0 +1,52 @@
Summary
Harness status: OK
Rerun
Found 41 tests
36 Pass
5 Fail
Details
Result Test Name MessagePass Primitive string is cloned
Pass Primitive integer is cloned
Pass Primitive floating point is cloned
Pass Primitive floating point (negative) is cloned
Pass Primitive number (hex) is cloned
Pass Primitive number (scientific) is cloned
Pass Primitive boolean is cloned
Pass Instance of Boolean is cloned
Pass Instance of Number is cloned
Pass Instance of String is cloned
Pass Instance of Date is cloned
Pass Instance of RegExp is cloned
Pass Value 'null' is cloned
Pass Value 'undefined' is cloned
Pass Object properties are cloned
Pass Prototype chains are not walked.
Pass Property descriptors of Objects are not cloned
Pass Cycles are preserved in Objects
Fail Identity of duplicates is preserved
Pass Property order is preserved
Pass Enumerable properties of Arrays are cloned
Pass Property descriptors of Arrays are not cloned
Pass Cycles are preserved in Arrays
Fail ImageData object can be cloned Cannot serialize platform objects
Fail ImageData expandos are not cloned Cannot serialize platform objects
Pass Window objects cannot be cloned
Pass Document objects cannot be cloned
Pass Empty Error objects can be cloned
Pass Error objects can be cloned
Pass EvalError objects can be cloned
Pass RangeError objects can be cloned
Pass ReferenceError objects can be cloned
Pass SyntaxError objects can be cloned
Pass TypeError objects can be cloned
Pass URIError objects can be cloned
Pass URIError objects from other realms are treated as URIError
Pass Cloning a modified Error
Pass Error.message: getter is ignored when cloning
Pass Error.message: undefined property is stringified
Fail DOMException objects can be cloned Cannot serialize platform objects
Fail DOMException objects created by the UA can be cloned Cannot serialize platform objects

View file

@ -0,0 +1,162 @@
Summary
Harness status: OK
Rerun
Found 150 tests
124 Pass
25 Fail
1 Optional Feature Unsupported
Details
Result Test Name MessagePass primitive undefined
Pass primitive null
Pass primitive true
Pass primitive false
Pass primitive string, empty string
Pass primitive string, lone high surrogate
Pass primitive string, lone low surrogate
Pass primitive string, NUL
Pass primitive string, astral character
Pass primitive number, 0.2
Pass primitive number, 0
Pass primitive number, -0
Pass primitive number, NaN
Pass primitive number, Infinity
Pass primitive number, -Infinity
Pass primitive number, 9007199254740992
Pass primitive number, -9007199254740992
Pass primitive number, 9007199254740994
Pass primitive number, -9007199254740994
Pass primitive BigInt, 0n
Pass primitive BigInt, -0n
Pass primitive BigInt, -9007199254740994000n
Pass primitive BigInt, -9007199254740994000900719925474099400090071992547409940009007199254740994000n
Pass Array primitives
Pass Object primitives
Pass Boolean true
Pass Boolean false
Pass Array Boolean objects
Pass Object Boolean objects
Pass String empty string
Pass String lone high surrogate
Pass String lone low surrogate
Pass String NUL
Pass String astral character
Pass Array String objects
Pass Object String objects
Pass Number 0.2
Pass Number 0
Pass Number -0
Pass Number NaN
Pass Number Infinity
Pass Number -Infinity
Pass Number 9007199254740992
Pass Number -9007199254740992
Pass Number 9007199254740994
Pass Number -9007199254740994
Pass BigInt -9007199254740994n
Pass Array Number objects
Pass Object Number objects
Pass Date 0
Pass Date -0
Pass Date -8.64e15
Pass Date 8.64e15
Pass Array Date objects
Pass Object Date objects
Pass RegExp flags and lastIndex
Pass RegExp sticky flag
Pass RegExp unicode flag
Pass RegExp empty
Pass RegExp slash
Pass RegExp new line
Pass Array RegExp object, RegExp flags and lastIndex
Pass Array RegExp object, RegExp sticky flag
Pass Array RegExp object, RegExp unicode flag
Pass Array RegExp object, RegExp empty
Pass Array RegExp object, RegExp slash
Pass Array RegExp object, RegExp new line
Pass Object RegExp object, RegExp flags and lastIndex
Pass Object RegExp object, RegExp sticky flag
Pass Object RegExp object, RegExp unicode flag
Pass Object RegExp object, RegExp empty
Pass Object RegExp object, RegExp slash
Pass Object RegExp object, RegExp new line
Pass Empty Error object
Pass Error object
Pass EvalError object
Pass RangeError object
Pass ReferenceError object
Pass SyntaxError object
Pass TypeError object
Pass URIError object
Pass Blob basic
Pass Blob unpaired high surrogate (invalid utf-8)
Pass Blob unpaired low surrogate (invalid utf-8)
Pass Blob paired surrogates (invalid utf-8)
Pass Blob empty
Pass Blob NUL
Pass Array Blob object, Blob basic
Pass Array Blob object, Blob unpaired high surrogate (invalid utf-8)
Pass Array Blob object, Blob unpaired low surrogate (invalid utf-8)
Pass Array Blob object, Blob paired surrogates (invalid utf-8)
Pass Array Blob object, Blob empty
Pass Array Blob object, Blob NUL
Pass Array Blob object, two Blobs
Pass Object Blob object, Blob basic
Pass Object Blob object, Blob unpaired high surrogate (invalid utf-8)
Pass Object Blob object, Blob unpaired low surrogate (invalid utf-8)
Pass Object Blob object, Blob paired surrogates (invalid utf-8)
Pass Object Blob object, Blob empty
Pass Object Blob object, Blob NUL
Pass File basic
Pass FileList empty
Pass Array FileList object, FileList empty
Pass Object FileList object, FileList empty
Fail ImageData 1x1 transparent black
Fail ImageData 1x1 non-transparent non-black
Fail Array ImageData object, ImageData 1x1 transparent black
Fail Array ImageData object, ImageData 1x1 non-transparent non-black
Fail Object ImageData object, ImageData 1x1 transparent black
Fail Object ImageData object, ImageData 1x1 non-transparent non-black
Pass Array sparse
Pass Array with non-index property
Pass Object with index property and length
Fail Array with circular reference
Fail Object with circular reference
Fail Array with identical property values
Fail Object with identical property values
Pass Object with property on prototype
Pass Object with non-enumerable property
Pass Object with non-writable property
Pass Object with non-configurable property
Pass Object with a getter that throws
Fail ImageBitmap 1x1 transparent black
Fail ImageBitmap 1x1 non-transparent non-black
Fail Array ImageBitmap object, ImageBitmap 1x1 transparent black
Fail Array ImageBitmap object, ImageBitmap 1x1 transparent non-black
Fail Object ImageBitmap object, ImageBitmap 1x1 transparent black
Fail Object ImageBitmap object, ImageBitmap 1x1 transparent non-black
Pass ObjectPrototype must lose its exotic-ness when cloned
Pass Serializing a non-serializable platform object fails
Pass An object whose interface is deleted from the global must still deserialize
Pass A subclass instance will deserialize as its closest serializable superclass
Fail Resizable ArrayBuffer
Fail Growable SharedArrayBuffer
Pass Length-tracking TypedArray
Pass Length-tracking DataView
Pass Serializing OOB TypedArray throws
Pass Serializing OOB DataView throws
Fail ArrayBuffer
Fail MessagePort
Fail A detached ArrayBuffer cannot be transferred
Pass A detached platform object cannot be transferred
Pass Transferring a non-transferable platform object fails
Fail An object whose interface is deleted from the global object must still be received
Optional Feature Unsupported A subclass instance will be received as its closest transferable superclass ReadableStream isn't transferable
Fail Resizable ArrayBuffer is transferable
Fail Length-tracking TypedArray is transferable
Fail Length-tracking DataView is transferable
Pass Transferring OOB TypedArray throws
Pass Transferring OOB DataView throws