From 980b1efb72384f34e16191e37e9faa3142b0fb33 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Tue, 10 Feb 2015 14:05:31 +1000 Subject: Dispatch a load event at iframes. Fixes #4350. --- components/script/script_task.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'components/script/script_task.rs') diff --git a/components/script/script_task.rs b/components/script/script_task.rs index 0f3f5c1b564..ca9ed7fd9b3 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -31,7 +31,7 @@ use dom::htmlelement::HTMLElementTypeId; use dom::htmliframeelement::HTMLIFrameElement; use dom::keyboardevent::KeyboardEvent; use dom::mouseevent::MouseEvent; -use dom::node::{self, Node, NodeHelpers, NodeDamage, NodeTypeId}; +use dom::node::{self, Node, NodeHelpers, NodeDamage, NodeTypeId, window_from_node}; use dom::window::{Window, WindowHelpers, ScriptHelpers}; use dom::worker::{Worker, TrustedWorkerAddress}; use parse::html::{HTMLInput, parse_html}; @@ -1432,6 +1432,20 @@ impl DocumentProgressHandler { let doctarget: JSRef = EventTargetCast::from_ref(document.r()); event.r().set_trusted(true); let _ = wintarget.dispatch_event_with_target(doctarget, event.r()); + + let window_ref = window.r(); + let browser_context = window_ref.browser_context(); + let browser_context = browser_context.as_ref().unwrap(); + + browser_context.frame_element().map(|frame_element| { + let frame_element = frame_element.root(); + let frame_window = window_from_node(frame_element.r()).root(); + let event = Event::new(GlobalRef::Window(frame_window.r()), "load".to_owned(), + EventBubbles::DoesNotBubble, + EventCancelable::NotCancelable).root(); + let target: JSRef = EventTargetCast::from_ref(frame_element.r()); + event.r().fire(target); + }); } } -- cgit v1.2.3