aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmliframeelement.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/htmliframeelement.rs')
-rw-r--r--components/script/dom/htmliframeelement.rs25
1 files changed, 24 insertions, 1 deletions
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs
index 66bade67a7d..78400b6d49a 100644
--- a/components/script/dom/htmliframeelement.rs
+++ b/components/script/dom/htmliframeelement.rs
@@ -16,7 +16,7 @@ use dom::bindings::reflector::Reflectable;
use dom::customevent::CustomEvent;
use dom::document::Document;
use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers};
-use dom::event::Event;
+use dom::event::{Event, EventBubbles, EventCancelable};
use dom::htmlelement::HTMLElement;
use dom::node::{Node, window_from_node};
use dom::urlhelper::UrlHelper;
@@ -189,6 +189,29 @@ impl HTMLIFrameElement {
pub fn subpage_id(&self) -> Option<SubpageId> {
self.subpage_id.get()
}
+
+ pub fn pipeline(&self) -> Option<PipelineId> {
+ self.pipeline_id.get()
+ }
+
+ /// https://html.spec.whatwg.org/multipage/#iframe-load-event-steps steps 1-4
+ pub fn iframe_load_event_steps(&self) {
+ // TODO A cross-origin child document would not be easily accessible
+ // from this script thread. It's unclear how to implement
+ // steps 2, 3, and 5 efficiently in this case.
+ // TODO Step 2 - check child document `mute iframe load` flag
+ // TODO Step 3 - set child document `mut iframe load` flag
+
+ // Step 4
+ let window = window_from_node(self);
+ let event = Event::new(GlobalRef::Window(window.r()),
+ DOMString::from("load".to_owned()),
+ EventBubbles::DoesNotBubble,
+ EventCancelable::NotCancelable);
+ event.fire(self.upcast());
+
+ // TODO Step 5 - unset child document `mut iframe load` flag
+ }
}
pub trait HTMLIFrameElementLayoutMethods {