aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/windowproxy.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/windowproxy.rs')
-rw-r--r--components/script/dom/windowproxy.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/components/script/dom/windowproxy.rs b/components/script/dom/windowproxy.rs
index 8b0af9a147e..c3d995be936 100644
--- a/components/script/dom/windowproxy.rs
+++ b/components/script/dom/windowproxy.rs
@@ -93,6 +93,9 @@ pub struct WindowProxy {
/// The parent browsing context's window proxy, if this is a nested browsing context
parent: Option<Dom<WindowProxy>>,
+
+ /// https://html.spec.whatwg.org/multipage/#delaying-load-events-mode
+ delaying_load_events_mode: Cell<bool>,
}
impl WindowProxy {
@@ -117,6 +120,7 @@ impl WindowProxy {
disowned: Cell::new(false),
frame_element: frame_element.map(Dom::from_ref),
parent: parent.map(Dom::from_ref),
+ delaying_load_events_mode: Cell::new(false),
opener,
}
}
@@ -312,6 +316,26 @@ impl WindowProxy {
None
}
+ /// https://html.spec.whatwg.org/multipage/#delaying-load-events-mode
+ pub fn is_delaying_load_events_mode(&self) -> bool {
+ self.delaying_load_events_mode.get()
+ }
+
+ /// https://html.spec.whatwg.org/multipage/#delaying-load-events-mode
+ pub fn start_delaying_load_events_mode(&self) {
+ self.delaying_load_events_mode.set(true);
+ }
+
+ /// https://html.spec.whatwg.org/multipage/#delaying-load-events-mode
+ pub fn stop_delaying_load_events_mode(&self) {
+ self.delaying_load_events_mode.set(false);
+ if let Some(document) = self.document() {
+ if !document.loader().events_inhibited() {
+ ScriptThread::mark_document_with_no_blocked_loads(&document);
+ }
+ }
+ }
+
// https://html.spec.whatwg.org/multipage/#disowned-its-opener
pub fn disown(&self) {
self.disowned.set(true);