aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/window.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/window.rs')
-rw-r--r--components/script/dom/window.rs29
1 files changed, 25 insertions, 4 deletions
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index dc30017e7d1..208d7f1d87e 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -74,7 +74,7 @@ use crossbeam_channel::{unbounded, Sender, TryRecvError};
use cssparser::{Parser, ParserInput, SourceLocation};
use devtools_traits::{ScriptToDevtoolsControlMsg, TimelineMarker, TimelineMarkerType};
use dom_struct::dom_struct;
-use embedder_traits::{EmbedderMsg, EventLoopWaker};
+use embedder_traits::{EmbedderMsg, EventLoopWaker, PromptDefinition, PromptOrigin, PromptResult};
use euclid::default::{Point2D as UntypedPoint2D, Rect as UntypedRect};
use euclid::{Point2D, Rect, Scale, Size2D, Vector2D};
use ipc_channel::ipc::{channel, IpcSender};
@@ -620,11 +620,32 @@ impl WindowMethods for Window {
}
let (sender, receiver) =
ProfiledIpc::channel(self.global().time_profiler_chan().clone()).unwrap();
- let msg = EmbedderMsg::Alert(s.to_string(), sender);
+ let prompt = PromptDefinition::Alert(s.to_string(), sender);
+ let msg = EmbedderMsg::Prompt(prompt, PromptOrigin::Untrusted);
self.send_to_embedder(msg);
receiver.recv().unwrap();
}
+ // https://html.spec.whatwg.org/multipage/#dom-confirm
+ fn Confirm(&self, s: DOMString) -> bool {
+ let (sender, receiver) =
+ ProfiledIpc::channel(self.global().time_profiler_chan().clone()).unwrap();
+ let prompt = PromptDefinition::OkCancel(s.to_string(), sender);
+ let msg = EmbedderMsg::Prompt(prompt, PromptOrigin::Untrusted);
+ self.send_to_embedder(msg);
+ receiver.recv().unwrap() == PromptResult::Primary
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-prompt
+ fn Prompt(&self, message: DOMString, default: DOMString) -> Option<DOMString> {
+ let (sender, receiver) =
+ ProfiledIpc::channel(self.global().time_profiler_chan().clone()).unwrap();
+ let prompt = PromptDefinition::Input(message.to_string(), default.to_string(), sender);
+ let msg = EmbedderMsg::Prompt(prompt, PromptOrigin::Untrusted);
+ self.send_to_embedder(msg);
+ receiver.recv().unwrap().map(|s| s.into())
+ }
+
// https://html.spec.whatwg.org/multipage/#dom-window-stop
fn Stop(&self) {
// TODO: Cancel ongoing navigation.
@@ -1763,7 +1784,7 @@ impl Window {
}
pub fn client_rect_query(&self, node: &Node) -> UntypedRect<i32> {
- if !self.layout_reflow(QueryMsg::NodeGeometryQuery(node.to_opaque())) {
+ if !self.layout_reflow(QueryMsg::ClientRectQuery(node.to_opaque())) {
return Rect::zero();
}
self.layout_rpc.node_geometry().client_rect
@@ -2351,7 +2372,7 @@ fn debug_reflow_events(id: PipelineId, reflow_goal: &ReflowGoal, reason: &Reflow
&QueryMsg::ContentBoxQuery(_n) => "\tContentBoxQuery",
&QueryMsg::ContentBoxesQuery(_n) => "\tContentBoxesQuery",
&QueryMsg::NodesFromPointQuery(..) => "\tNodesFromPointQuery",
- &QueryMsg::NodeGeometryQuery(_n) => "\tNodeGeometryQuery",
+ &QueryMsg::ClientRectQuery(_n) => "\tClientRectQuery",
&QueryMsg::NodeScrollGeometryQuery(_n) => "\tNodeScrollGeometryQuery",
&QueryMsg::NodeScrollIdQuery(_n) => "\tNodeScrollIdQuery",
&QueryMsg::ResolvedStyleQuery(_, _, _) => "\tResolvedStyleQuery",