diff options
author | yvt <i@yvt.jp> | 2021-07-10 17:24:27 +0900 |
---|---|---|
committer | yvt <i@yvt.jp> | 2021-07-10 17:55:42 +0900 |
commit | 01a7de50ab1843d85295f9dccad7f4c099e7208c (patch) | |
tree | ee53fb6e8889deb7b880ee969e6c662e6128d210 /components/script/dom/performanceobserverentrylist.rs | |
parent | ff8d2cdbbfc7a9dc7f38b7dd47cb350fde39388f (diff) | |
parent | 94b613fbdaa2b98f2179fc0bbda13c64e6fa0d38 (diff) | |
download | servo-01a7de50ab1843d85295f9dccad7f4c099e7208c.tar.gz servo-01a7de50ab1843d85295f9dccad7f4c099e7208c.zip |
Merge remote-tracking branch 'upstream/master' into feat-cow-infra
`tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html`
was reverted to the upstream version.
Diffstat (limited to 'components/script/dom/performanceobserverentrylist.rs')
-rw-r--r-- | components/script/dom/performanceobserverentrylist.rs | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/components/script/dom/performanceobserverentrylist.rs b/components/script/dom/performanceobserverentrylist.rs new file mode 100644 index 00000000000..f96e063153e --- /dev/null +++ b/components/script/dom/performanceobserverentrylist.rs @@ -0,0 +1,64 @@ +/* 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::cell::DomRefCell; +use crate::dom::bindings::codegen::Bindings::PerformanceObserverEntryListBinding::PerformanceObserverEntryListMethods; +use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::root::DomRoot; +use crate::dom::bindings::str::DOMString; +use crate::dom::globalscope::GlobalScope; +use crate::dom::performance::PerformanceEntryList; +use crate::dom::performanceentry::PerformanceEntry; +use dom_struct::dom_struct; + +#[dom_struct] +pub struct PerformanceObserverEntryList { + reflector_: Reflector, + entries: DomRefCell<PerformanceEntryList>, +} + +impl PerformanceObserverEntryList { + fn new_inherited(entries: PerformanceEntryList) -> PerformanceObserverEntryList { + PerformanceObserverEntryList { + reflector_: Reflector::new(), + entries: DomRefCell::new(entries), + } + } + + #[allow(unrooted_must_root)] + pub fn new( + global: &GlobalScope, + entries: PerformanceEntryList, + ) -> DomRoot<PerformanceObserverEntryList> { + let observer_entry_list = PerformanceObserverEntryList::new_inherited(entries); + reflect_dom_object(Box::new(observer_entry_list), global) + } +} + +impl PerformanceObserverEntryListMethods for PerformanceObserverEntryList { + // https://w3c.github.io/performance-timeline/#dom-performanceobserver + fn GetEntries(&self) -> Vec<DomRoot<PerformanceEntry>> { + self.entries + .borrow() + .get_entries_by_name_and_type(None, None) + } + + // https://w3c.github.io/performance-timeline/#dom-performanceobserver + fn GetEntriesByType(&self, entry_type: DOMString) -> Vec<DomRoot<PerformanceEntry>> { + self.entries + .borrow() + .get_entries_by_name_and_type(None, Some(entry_type)) + } + + // https://w3c.github.io/performance-timeline/#dom-performanceobserver + fn GetEntriesByName( + &self, + name: DOMString, + entry_type: Option<DOMString>, + ) -> Vec<DomRoot<PerformanceEntry>> { + self.entries + .borrow() + .get_entries_by_name_and_type(Some(name), entry_type) + } +} |