diff options
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/Cargo.toml | 3 | ||||
-rw-r--r-- | components/script/dom/window.rs | 25 | ||||
-rw-r--r-- | components/script/lib.rs | 2 |
3 files changed, 25 insertions, 5 deletions
diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index d032bc81921..1e3326ae356 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -13,6 +13,9 @@ path = "lib.rs" [features] debugmozjs = ['js/debugmozjs'] +[target.'cfg(any(target_os = "macos", target_os = "linux"))'.dependencies] +tinyfiledialogs = {git = "https://github.com/jdm/tinyfiledialogs"} + [dependencies] plugins = {path = "../plugins"} util = {path = "../util"} diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 94b6d2c7fb3..2f017c3b107 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -59,7 +59,7 @@ use script_thread::SendableMainThreadScriptChan; use script_thread::{MainThreadScriptChan, MainThreadScriptMsg, RunnableWrapper}; use script_traits::{ConstellationControlMsg, UntrustedNodeAddress}; use script_traits::{DocumentState, MsDuration, ScriptToCompositorMsg, TimerEvent, TimerEventId}; -use script_traits::{MozBrowserEvent, ScriptMsg as ConstellationMsg, TimerEventRequest, TimerSource}; +use script_traits::{ScriptMsg as ConstellationMsg, TimerEventRequest, TimerSource}; use std::ascii::AsciiExt; use std::borrow::ToOwned; use std::cell::Cell; @@ -85,6 +85,8 @@ use task_source::networking::NetworkingTaskSource; use task_source::user_interaction::UserInteractionTaskSource; use time; use timers::{IsInterval, OneshotTimerCallback, OneshotTimerHandle, OneshotTimers, TimerCallback}; +#[cfg(any(target_os = "macos", target_os = "linux"))] +use tinyfiledialogs::{self, MessageBoxIcon}; use url::Url; use util::geometry::{self, MAX_RECT}; use util::str::{DOMString, HTML_SPACE_CHARACTERS}; @@ -343,6 +345,16 @@ impl Window { } } +#[cfg(any(target_os = "macos", target_os = "linux"))] +fn display_alert_dialog(message: &str) { + tinyfiledialogs::message_box_ok("Alert!", message, MessageBoxIcon::Warning); +} + +#[cfg(not(any(target_os = "macos", target_os = "linux")))] +fn display_alert_dialog(_message: &str) { + // tinyfiledialogs not supported on Windows +} + // https://html.spec.whatwg.org/multipage/#atob pub fn base64_btoa(input: DOMString) -> Fallible<DOMString> { // "The btoa() method must throw an InvalidCharacterError exception if @@ -425,10 +437,13 @@ impl WindowMethods for Window { stdout.flush().unwrap(); stderr.flush().unwrap(); - // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowsershowmodalprompt - let event = MozBrowserEvent::ShowModalPrompt("alert".to_owned(), "Alert".to_owned(), - String::from(s), "".to_owned()); - self.Document().trigger_mozbrowser_event(event); + let (sender, receiver) = ipc::channel().unwrap(); + self.constellation_chan().0.send(ConstellationMsg::Alert(self.pipeline(), s.to_string(), sender)).unwrap(); + + let should_display_alert_dialog = receiver.recv().unwrap(); + if should_display_alert_dialog { + display_alert_dialog(&s); + } } // https://html.spec.whatwg.org/multipage/#dom-window-close diff --git a/components/script/lib.rs b/components/script/lib.rs index 05700431c3d..4feaae05845 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -73,6 +73,8 @@ extern crate smallvec; #[macro_use] extern crate style; extern crate time; +#[cfg(any(target_os = "macos", target_os = "linux"))] +extern crate tinyfiledialogs; extern crate unicase; extern crate url; #[macro_use] |