indexeddb: Finish implementation of key_type_to_jsval (#39008)

Uses clipped time to convert dates that are stored as `f64`s into JS
values.

Testing: WPT
Fixes: #25327

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
This commit is contained in:
Ashwin Naren 2025-09-02 09:36:41 -07:00 committed by GitHub
parent a1f9e3e133
commit 47551fc6fa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 8 additions and 4 deletions

View file

@ -51,9 +51,10 @@ pub fn key_type_to_jsval(
IndexedDBKeyType::Number(n) => result.set(DoubleValue(*n)),
IndexedDBKeyType::String(s) => s.safe_to_jsval(cx, result),
IndexedDBKeyType::Binary(b) => b.safe_to_jsval(cx, result),
IndexedDBKeyType::Date(_d) => {
// TODO: implement this when Date's representation is finalized.
result.set(UndefinedValue());
IndexedDBKeyType::Date(d) => {
let time = js::jsapi::ClippedTime { t: *d };
let date = unsafe { js::jsapi::NewDateObject(*cx, time) };
date.safe_to_jsval(cx, result);
},
IndexedDBKeyType::Array(a) => {
rooted_vec!(let mut values <- repeat_n(UndefinedValue(), a.len()));

View file

@ -5,7 +5,7 @@
[create-index.any.worker.html]
expected: CRASH
expected: TIMEOUT
[Assure no crash when populating index]
expected: TIMEOUT

View file

@ -14,6 +14,9 @@
[Calling open() with version argument 9007199254740991 should not throw.]
expected: FAIL
[Calling open() with version argument 1.5 should not throw.]
expected: FAIL
[idbfactory_open.any.sharedworker.html]
expected: ERROR