diff options
author | Nick Tiberi <nicktiberi@gmail.com> | 2020-04-16 21:29:26 -0400 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-04-17 13:41:03 +0200 |
commit | 1f6578ee0a52e8302a1c485448b2e1736506ffec (patch) | |
tree | be2d1d1dc3a002283f22d0a672a0c954eafc42e3 /Libraries/LibWeb | |
parent | 0a483cf6774bcac0a7435bc217fd81342205d225 (diff) | |
download | serenity-1f6578ee0a52e8302a1c485448b2e1736506ffec.zip |
LibWeb: Implement JS confirm()
Diffstat (limited to 'Libraries/LibWeb')
-rw-r--r-- | Libraries/LibWeb/Bindings/WindowObject.cpp | 12 | ||||
-rw-r--r-- | Libraries/LibWeb/Bindings/WindowObject.h | 1 | ||||
-rw-r--r-- | Libraries/LibWeb/DOM/Window.cpp | 6 | ||||
-rw-r--r-- | Libraries/LibWeb/DOM/Window.h | 1 |
4 files changed, 20 insertions, 0 deletions
diff --git a/Libraries/LibWeb/Bindings/WindowObject.cpp b/Libraries/LibWeb/Bindings/WindowObject.cpp index dd3b4c3c47..8fb3f642ca 100644 --- a/Libraries/LibWeb/Bindings/WindowObject.cpp +++ b/Libraries/LibWeb/Bindings/WindowObject.cpp @@ -46,6 +46,7 @@ WindowObject::WindowObject(Window& impl) put("window", this); put_native_property("document", document_getter, document_setter); put_native_function("alert", alert); + put_native_function("confirm", confirm); put_native_function("setInterval", set_interval, 1); put_native_function("setTimeout", set_timeout, 1); put_native_function("requestAnimationFrame", request_animation_frame, 1); @@ -96,6 +97,17 @@ JS::Value WindowObject::alert(JS::Interpreter& interpreter) return JS::js_undefined(); } +JS::Value WindowObject::confirm(JS::Interpreter& interpreter) +{ + auto* impl = impl_from(interpreter); + if (!impl) + return {}; + auto& arguments = interpreter.call_frame().arguments; + if (arguments.size() < 1) + return {}; + return JS::Value(impl->confirm(arguments[0].to_string())); +} + JS::Value WindowObject::set_interval(JS::Interpreter& interpreter) { auto* impl = impl_from(interpreter); diff --git a/Libraries/LibWeb/Bindings/WindowObject.h b/Libraries/LibWeb/Bindings/WindowObject.h index c3605ae7c9..65ff17d642 100644 --- a/Libraries/LibWeb/Bindings/WindowObject.h +++ b/Libraries/LibWeb/Bindings/WindowObject.h @@ -51,6 +51,7 @@ private: static void document_setter(JS::Interpreter&, JS::Value); static JS::Value alert(JS::Interpreter&); + static JS::Value confirm(JS::Interpreter&); static JS::Value set_interval(JS::Interpreter&); static JS::Value set_timeout(JS::Interpreter&); static JS::Value request_animation_frame(JS::Interpreter&); diff --git a/Libraries/LibWeb/DOM/Window.cpp b/Libraries/LibWeb/DOM/Window.cpp index a70aa35b3d..f5f48e2a5b 100644 --- a/Libraries/LibWeb/DOM/Window.cpp +++ b/Libraries/LibWeb/DOM/Window.cpp @@ -52,6 +52,12 @@ void Window::alert(const String& message) GUI::MessageBox::show(message, "Alert", GUI::MessageBox::Type::Information); } +bool Window::confirm(const String& message) +{ + auto confirm_result = GUI::MessageBox::show(message, "Confirm", GUI::MessageBox::Type::Warning, GUI::MessageBox::InputType::OKCancel); + return confirm_result == GUI::Dialog::ExecResult::ExecOK; +} + void Window::set_interval(JS::Function& callback, i32 interval) { // FIXME: This leaks the interval timer and makes it unstoppable. diff --git a/Libraries/LibWeb/DOM/Window.h b/Libraries/LibWeb/DOM/Window.h index 9390711c84..03d548b71a 100644 --- a/Libraries/LibWeb/DOM/Window.h +++ b/Libraries/LibWeb/DOM/Window.h @@ -43,6 +43,7 @@ public: Document& document() { return m_document; } void alert(const String&); + bool confirm(const String&); i32 request_animation_frame(JS::Function&); void cancel_animation_frame(i32); void set_interval(JS::Function&, i32); |