From 204257526c7c2a2ae76e4ba872098dd534c9d43a Mon Sep 17 00:00:00 2001 From: Cameron Youell Date: Wed, 18 Jan 2023 20:50:03 +1100 Subject: [PATCH] LibWeb: Define window.isSecureContext --- Userland/Libraries/LibWeb/HTML/Window.cpp | 9 +++++++++ Userland/Libraries/LibWeb/HTML/Window.h | 1 + 2 files changed, 10 insertions(+) diff --git a/Userland/Libraries/LibWeb/HTML/Window.cpp b/Userland/Libraries/LibWeb/HTML/Window.cpp index 25e94e855a..9b3378d5d8 100644 --- a/Userland/Libraries/LibWeb/HTML/Window.cpp +++ b/Userland/Libraries/LibWeb/HTML/Window.cpp @@ -1137,6 +1137,7 @@ void Window::initialize_web_interfaces(Badge) define_native_accessor(realm, "localStorage", local_storage_getter, {}, attr); define_native_accessor(realm, "sessionStorage", session_storage_getter, {}, attr); define_native_accessor(realm, "origin", origin_getter, {}, attr); + define_native_accessor(realm, "isSecureContext", is_secure_context_getter, {}, attr); // Legacy define_native_accessor(realm, "event", event_getter, event_setter, JS::Attribute::Enumerable); @@ -1863,6 +1864,14 @@ JS_DEFINE_NATIVE_FUNCTION(Window::origin_getter) return JS::PrimitiveString::create(vm, impl->associated_document().origin().serialize()); } +// https://html.spec.whatwg.org/multipage/webappapis.html#dom-issecurecontext +JS_DEFINE_NATIVE_FUNCTION(Window::is_secure_context_getter) +{ + auto* impl = TRY(impl_from(vm)); + // The isSecureContext getter steps are to return true if this's relevant settings object is a secure context, or false otherwise. + return JS::Value(is_secure_context(impl->associated_document().relevant_settings_object())); +} + JS_DEFINE_NATIVE_FUNCTION(Window::local_storage_getter) { auto* impl = TRY(impl_from(vm)); diff --git a/Userland/Libraries/LibWeb/HTML/Window.h b/Userland/Libraries/LibWeb/HTML/Window.h index 1cf75d254e..32cdc96841 100644 --- a/Userland/Libraries/LibWeb/HTML/Window.h +++ b/Userland/Libraries/LibWeb/HTML/Window.h @@ -247,6 +247,7 @@ private: JS_DECLARE_NATIVE_FUNCTION(local_storage_getter); JS_DECLARE_NATIVE_FUNCTION(session_storage_getter); JS_DECLARE_NATIVE_FUNCTION(origin_getter); + JS_DECLARE_NATIVE_FUNCTION(is_secure_context_getter); JS_DECLARE_NATIVE_FUNCTION(open); JS_DECLARE_NATIVE_FUNCTION(alert);