add webidl bindings for DOMStringList

This commit is contained in:
Rasmus Viitanen 2019-09-16 11:24:36 +02:00
parent ec1da1d01c
commit 7e4e48c351
12 changed files with 84 additions and 216 deletions

View file

@ -0,0 +1,59 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use crate::dom::bindings::codegen::Bindings::DOMStringListBinding;
use crate::dom::bindings::codegen::Bindings::DOMStringListBinding::DOMStringListMethods;
use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
use crate::dom::bindings::root::DomRoot;
use crate::dom::bindings::str::DOMString;
use crate::dom::window::Window;
use dom_struct::dom_struct;
#[dom_struct]
pub struct DOMStringList {
reflector_: Reflector,
strings: Vec<DOMString>,
}
impl DOMStringList {
#[allow(unused)]
pub fn new_inherited(strings: Vec<DOMString>) -> DOMStringList {
DOMStringList {
reflector_: Reflector::new(),
strings,
}
}
#[allow(unused)]
pub fn new(window: &Window, strings: Vec<DOMString>) -> DomRoot<DOMStringList> {
reflect_dom_object(
Box::new(DOMStringList::new_inherited(strings)),
window,
DOMStringListBinding::Wrap,
)
}
}
// https://html.spec.whatwg.org/multipage/#domstringlist
impl DOMStringListMethods for DOMStringList {
// https://html.spec.whatwg.org/multipage/#dom-domstringlist-length
fn Length(&self) -> u32 {
self.strings.len() as u32
}
// https://html.spec.whatwg.org/multipage/#dom-domstringlist-item
fn Item(&self, index: u32) -> Option<DOMString> {
self.strings.get(index as usize).cloned()
}
// https://html.spec.whatwg.org/multipage/#dom-domstringlist-contains
fn Contains(&self, string: DOMString) -> bool {
self.strings.contains(&string)
}
// check-tidy: no specs after this line
fn IndexedGetter(&self, index: u32) -> Option<DOMString> {
self.Item(index)
}
}

View file

@ -293,6 +293,7 @@ pub mod dompointreadonly;
pub mod domquad;
pub mod domrect;
pub mod domrectreadonly;
pub mod domstringlist;
pub mod domstringmap;
pub mod domtokenlist;
pub mod element;

View file

@ -0,0 +1,18 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
/*
* The origin of this IDL file is
* https://html.spec.whatwg.org/multipage/#domstringlist
*
* Copyright:
* To the extent possible under law, the editors have waived all copyright and
* related or neighboring rights to this work.
*/
[Exposed=(Window,Worker)]
interface DOMStringList {
readonly attribute unsigned long length;
getter DOMString? item(unsigned long index);
boolean contains(DOMString string);
};