mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Replace (String, Option<String>) with MozBrowserEvent in uses of MozBrowserEventMsg.
This commit is contained in:
parent
644dc40586
commit
cb9cfe2b22
7 changed files with 102 additions and 49 deletions
|
@ -61,7 +61,7 @@ use dom::window::{Window, WindowHelpers, ReflowReason};
|
|||
use layout_interface::{HitTestResponse, MouseOverResponse};
|
||||
use msg::compositor_msg::ScriptListener;
|
||||
use msg::constellation_msg::Msg as ConstellationMsg;
|
||||
use msg::constellation_msg::{ConstellationChan, Key, KeyState, KeyModifiers};
|
||||
use msg::constellation_msg::{ConstellationChan, Key, KeyState, KeyModifiers, MozBrowserEvent};
|
||||
use msg::constellation_msg::{SUPER, ALT, SHIFT, CONTROL};
|
||||
use net::resource_task::ControlMsg::{SetCookiesForUrl, GetCookiesForUrl};
|
||||
use net::cookie_storage::CookieSource::NonHTTP;
|
||||
|
@ -223,7 +223,7 @@ pub trait DocumentHelpers<'a> {
|
|||
fn handle_mouse_move_event(self, js_runtime: *mut JSRuntime, point: Point2D<f32>,
|
||||
prev_mouse_over_targets: &mut Vec<JS<Node>>) -> bool;
|
||||
fn set_current_script(self, script: Option<JSRef<HTMLScriptElement>>);
|
||||
fn trigger_mozbrowser_event(self, event_name: String, event_detail: Option<String>);
|
||||
fn trigger_mozbrowser_event(self, event: MozBrowserEvent);
|
||||
}
|
||||
|
||||
impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
|
||||
|
@ -458,7 +458,7 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
|
|||
/// Handles any updates when the document's title has changed.
|
||||
fn title_changed(self) {
|
||||
// https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowsertitlechange
|
||||
self.trigger_mozbrowser_event("mozbrowsertitlechange".to_owned(), Some(self.Title()));
|
||||
self.trigger_mozbrowser_event(MozBrowserEvent::TitleChange(self.Title()));
|
||||
|
||||
self.send_title_to_compositor();
|
||||
}
|
||||
|
@ -683,16 +683,15 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
|
|||
self.current_script.assign(script);
|
||||
}
|
||||
|
||||
fn trigger_mozbrowser_event(self, event_name: String, event_detail: Option<String>) {
|
||||
fn trigger_mozbrowser_event(self, event: MozBrowserEvent) {
|
||||
if opts::experimental_enabled() {
|
||||
let window = self.window.root();
|
||||
|
||||
if let Some((containing_pipeline_id, subpage_id)) = window.r().parent_info() {
|
||||
let ConstellationChan(ref chan) = window.r().constellation_chan();
|
||||
let event = ConstellationMsg::MozBrowserEvent(containing_pipeline_id,
|
||||
subpage_id,
|
||||
event_name,
|
||||
event_detail);
|
||||
let event = ConstellationMsg::MozBrowserEventMsg(containing_pipeline_id,
|
||||
subpage_id,
|
||||
event);
|
||||
chan.send(event).unwrap();
|
||||
}
|
||||
}
|
||||
|
@ -1464,7 +1463,7 @@ impl DocumentProgressHandler {
|
|||
});
|
||||
|
||||
// https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowserloadend
|
||||
document.r().trigger_mozbrowser_event("mozbrowserloadend".to_owned(), None);
|
||||
document.r().trigger_mozbrowser_event(MozBrowserEvent::LoadEnd);
|
||||
|
||||
window_ref.reflow(ReflowGoal::ForDisplay,
|
||||
ReflowQueryType::NoQuery,
|
||||
|
|
|
@ -29,7 +29,7 @@ use dom::virtualmethods::VirtualMethods;
|
|||
use dom::window::{Window, WindowHelpers};
|
||||
use page::IterablePage;
|
||||
|
||||
use msg::constellation_msg::{PipelineId, SubpageId, ConstellationChan, NavigationDirection};
|
||||
use msg::constellation_msg::{PipelineId, SubpageId, ConstellationChan, MozBrowserEvent, NavigationDirection};
|
||||
use msg::constellation_msg::IFrameSandboxState::{IFrameSandboxed, IFrameUnsandboxed};
|
||||
use msg::constellation_msg::Msg as ConstellationMsg;
|
||||
use util::opts;
|
||||
|
@ -72,7 +72,7 @@ pub trait HTMLIFrameElementHelpers {
|
|||
fn process_the_iframe_attributes(self);
|
||||
fn generate_new_subpage_id(self) -> (SubpageId, Option<SubpageId>);
|
||||
fn navigate_child_browsing_context(self, url: Url);
|
||||
fn dispatch_mozbrowser_event(self, event_name: String, event_detail: Option<String>);
|
||||
fn dispatch_mozbrowser_event(self, event: MozBrowserEvent);
|
||||
fn update_subpage_id(self, new_subpage_id: SubpageId);
|
||||
}
|
||||
|
||||
|
@ -125,7 +125,7 @@ impl<'a> HTMLIFrameElementHelpers for JSRef<'a, HTMLIFrameElement> {
|
|||
|
||||
if opts::experimental_enabled() {
|
||||
// https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowserloadstart
|
||||
self.dispatch_mozbrowser_event("mozbrowserloadstart".to_owned(), None);
|
||||
self.dispatch_mozbrowser_event(MozBrowserEvent::LoadStart);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -138,7 +138,7 @@ impl<'a> HTMLIFrameElementHelpers for JSRef<'a, HTMLIFrameElement> {
|
|||
self.navigate_child_browsing_context(url);
|
||||
}
|
||||
|
||||
fn dispatch_mozbrowser_event(self, event_name: String, event_detail: Option<String>) {
|
||||
fn dispatch_mozbrowser_event(self, event: MozBrowserEvent) {
|
||||
// TODO(gw): Support mozbrowser event types that have detail which is not a string.
|
||||
// See https://developer.mozilla.org/en-US/docs/Web/API/Using_the_Browser_API
|
||||
// for a list of mozbrowser events.
|
||||
|
@ -148,10 +148,10 @@ impl<'a> HTMLIFrameElementHelpers for JSRef<'a, HTMLIFrameElement> {
|
|||
let window = window_from_node(self).root();
|
||||
let cx = window.r().get_cx();
|
||||
let custom_event = CustomEvent::new(GlobalRef::Window(window.r()),
|
||||
event_name.to_owned(),
|
||||
event.name().to_owned(),
|
||||
true,
|
||||
true,
|
||||
event_detail.to_jsval(cx)).root();
|
||||
event.detail().to_jsval(cx)).root();
|
||||
let target: JSRef<EventTarget> = EventTargetCast::from_ref(self);
|
||||
let event: JSRef<Event> = EventCast::from_ref(custom_event.r());
|
||||
event.fire(target);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue