From 3ecc90776771e2268d11b3c85fd68af4e71b7530 Mon Sep 17 00:00:00 2001 From: Paul Rouget Date: Wed, 24 Feb 2016 18:45:07 +0100 Subject: [PATCH] Support Browser API event mozbrowserconnected --- components/script/dom/document.rs | 15 ++++-- components/script/dom/htmliframeelement.rs | 2 +- components/script_traits/lib.rs | 3 ++ tests/wpt/mozilla/meta/MANIFEST.json | 6 +++ .../mozbrowser/mozbrowser_loadevents.html | 47 +++++++++++++++++++ 5 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 tests/wpt/mozilla/tests/mozilla/mozbrowser/mozbrowser_loadevents.html diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 7a1ce36e5e4..5ef2442e4e8 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -584,9 +584,17 @@ impl Document { // https://html.spec.whatwg.org/multipage/#current-document-readiness pub fn set_ready_state(&self, state: DocumentReadyState) { match state { - DocumentReadyState::Loading => update_with_current_time(&self.dom_loading), + DocumentReadyState::Loading => { + // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowserconnected + self.trigger_mozbrowser_event(MozBrowserEvent::Connected); + update_with_current_time(&self.dom_loading); + }, + DocumentReadyState::Complete => { + // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowserloadend + self.trigger_mozbrowser_event(MozBrowserEvent::LoadEnd); + update_with_current_time(&self.dom_complete); + }, DocumentReadyState::Interactive => update_with_current_time(&self.dom_interactive), - DocumentReadyState::Complete => update_with_current_time(&self.dom_complete), }; self.ready_state.set(state); @@ -2589,9 +2597,6 @@ impl DocumentProgressHandler { document.notify_constellation_load(); - // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowserloadend - document.trigger_mozbrowser_event(MozBrowserEvent::LoadEnd); - window.reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, ReflowReason::DocumentLoaded); diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index 630b36e14e9..b20bf134b3e 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -303,7 +303,7 @@ impl MozBrowserEventDetailBuilder for HTMLIFrameElement { match event { MozBrowserEvent::AsyncScroll | MozBrowserEvent::Close | MozBrowserEvent::ContextMenu | MozBrowserEvent::Error | MozBrowserEvent::LoadEnd | MozBrowserEvent::LoadStart | - MozBrowserEvent::OpenWindow | MozBrowserEvent::OpenSearch | + MozBrowserEvent::Connected | MozBrowserEvent::OpenWindow | MozBrowserEvent::OpenSearch | MozBrowserEvent::UsernameAndPasswordRequired => { rval.set(NullValue()); } diff --git a/components/script_traits/lib.rs b/components/script_traits/lib.rs index a6d33bfebac..f0e115664af 100644 --- a/components/script_traits/lib.rs +++ b/components/script_traits/lib.rs @@ -415,6 +415,8 @@ pub enum MozBrowserEvent { Error, /// Sent when the favicon of a browser `