script: Support creating a DOMStringList for any global. (#37567)

There were a lot of crashing IndexedDB tests caused by code in
DOMStringList that required a Window object despite being exposed to
non-Window globals.

Testing: Lots of existing tests no longer crash.
Fixes: part of #6963

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
Josh Matthews 2025-06-19 23:16:46 -04:00 committed by GitHub
parent b331cb4603
commit 52dc1fa88d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
81 changed files with 1324 additions and 313 deletions

View file

@ -85,7 +85,7 @@ impl IDBDatabase {
pub fn object_stores(&self) -> DomRoot<DOMStringList> {
DOMStringList::new(
self.global().as_window(),
&self.global(),
self.object_store_names.borrow().clone(),
CanGc::note(),
)
@ -161,7 +161,7 @@ impl IDBDatabaseMethods<crate::DomTypeHolder> for IDBDatabase {
&self.global(),
self,
mode,
&DOMStringList::new(self.global().as_window(), vec![name], CanGc::note()),
&DOMStringList::new(&self.global(), vec![name], CanGc::note()),
CanGc::note(),
),
StringOrStringSequence::StringSequence(sequence) => {
@ -171,7 +171,7 @@ impl IDBDatabaseMethods<crate::DomTypeHolder> for IDBDatabase {
&self.global(),
self,
mode,
&DOMStringList::new(self.global().as_window(), sequence, CanGc::note()),
&DOMStringList::new(&self.global(), sequence, CanGc::note()),
CanGc::note(),
)
},
@ -343,7 +343,7 @@ impl IDBDatabaseMethods<crate::DomTypeHolder> for IDBDatabase {
fn ObjectStoreNames(&self) -> DomRoot<DOMStringList> {
// FIXME: (arihant2math) Sort the list of names, as per spec
DOMStringList::new(
self.global().as_window(),
&self.global(),
self.object_store_names.borrow().clone(),
CanGc::note(),
)