Add initial IndexedDB Support

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>

Co-authored-by: Rasmus Viitanen <rasviitanen@gmail.com>
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
This commit is contained in:
Ashwin Naren 2024-08-13 12:14:39 -07:00
parent cdff75bbd4
commit 0a79918849
No known key found for this signature in database
GPG key ID: D96D7DE56FBCB6B6
36 changed files with 3108 additions and 9 deletions

View file

@ -136,6 +136,7 @@ use crate::dom::hashchangeevent::HashChangeEvent;
use crate::dom::history::History;
use crate::dom::htmlcollection::{CollectionFilter, HTMLCollection};
use crate::dom::htmliframeelement::HTMLIFrameElement;
use crate::dom::idbfactory::IDBFactory;
use crate::dom::location::Location;
use crate::dom::medialist::MediaList;
use crate::dom::mediaquerylist::{MediaQueryList, MediaQueryListMatchState};
@ -246,6 +247,7 @@ pub(crate) struct Window {
document: MutNullableDom<Document>,
location: MutNullableDom<Location>,
history: MutNullableDom<History>,
indexeddb: MutNullableDom<IDBFactory>,
custom_element_registry: MutNullableDom<CustomElementRegistry>,
performance: MutNullableDom<Performance>,
#[no_trace]
@ -1077,6 +1079,14 @@ impl WindowMethods<crate::DomTypeHolder> for Window {
self.history.or_init(|| History::new(self, CanGc::note()))
}
// https://w3c.github.io/IndexedDB/#factory-interface
fn IndexedDB(&self) -> DomRoot<IDBFactory> {
self.indexeddb.or_init(|| {
let global_scope = self.upcast::<GlobalScope>();
IDBFactory::new(global_scope)
})
}
// https://html.spec.whatwg.org/multipage/#dom-window-customelements
fn CustomElements(&self) -> DomRoot<CustomElementRegistry> {
self.custom_element_registry
@ -3069,6 +3079,7 @@ impl Window {
navigator: Default::default(),
location: Default::default(),
history: Default::default(),
indexeddb: Default::default(),
custom_element_registry: Default::default(),
window_proxy: Default::default(),
document: Default::default(),