From 52e9839d8b452916428b4dc16b5c3107723bc277 Mon Sep 17 00:00:00 2001 From: Kenneth Myhra Date: Sun, 12 Feb 2023 21:25:57 +0100 Subject: LibWeb: Make factory method of Crypto::SubtleCrypto fallible --- Userland/Libraries/LibWeb/Crypto/Crypto.cpp | 5 ++++- Userland/Libraries/LibWeb/Crypto/SubtleCrypto.cpp | 6 +++--- Userland/Libraries/LibWeb/Crypto/SubtleCrypto.h | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) (limited to 'Userland/Libraries/LibWeb') diff --git a/Userland/Libraries/LibWeb/Crypto/Crypto.cpp b/Userland/Libraries/LibWeb/Crypto/Crypto.cpp index 3a02c11aa9..7797876daf 100644 --- a/Userland/Libraries/LibWeb/Crypto/Crypto.cpp +++ b/Userland/Libraries/LibWeb/Crypto/Crypto.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -30,7 +31,9 @@ JS::ThrowCompletionOr Crypto::initialize(JS::Realm& realm) { MUST_OR_THROW_OOM(Base::initialize(realm)); set_prototype(&Bindings::ensure_web_prototype(realm, "Crypto")); - m_subtle = SubtleCrypto::create(realm); + m_subtle = TRY(Bindings::throw_dom_exception_if_needed(realm.vm(), [&]() { + return SubtleCrypto::create(realm); + })); return {}; } diff --git a/Userland/Libraries/LibWeb/Crypto/SubtleCrypto.cpp b/Userland/Libraries/LibWeb/Crypto/SubtleCrypto.cpp index 8aefaf0427..fb64d3a1df 100644 --- a/Userland/Libraries/LibWeb/Crypto/SubtleCrypto.cpp +++ b/Userland/Libraries/LibWeb/Crypto/SubtleCrypto.cpp @@ -10,13 +10,13 @@ #include #include #include -#include +#include namespace Web::Crypto { -JS::NonnullGCPtr SubtleCrypto::create(JS::Realm& realm) +WebIDL::ExceptionOr> SubtleCrypto::create(JS::Realm& realm) { - return realm.heap().allocate(realm, realm).release_allocated_value_but_fixme_should_propagate_errors(); + return MUST_OR_THROW_OOM(realm.heap().allocate(realm, realm)); } SubtleCrypto::SubtleCrypto(JS::Realm& realm) diff --git a/Userland/Libraries/LibWeb/Crypto/SubtleCrypto.h b/Userland/Libraries/LibWeb/Crypto/SubtleCrypto.h index bf13e9f723..2139c4b690 100644 --- a/Userland/Libraries/LibWeb/Crypto/SubtleCrypto.h +++ b/Userland/Libraries/LibWeb/Crypto/SubtleCrypto.h @@ -15,7 +15,7 @@ class SubtleCrypto final : public Bindings::PlatformObject { WEB_PLATFORM_OBJECT(SubtleCrypto, Bindings::PlatformObject); public: - static JS::NonnullGCPtr create(JS::Realm&); + static WebIDL::ExceptionOr> create(JS::Realm&); virtual ~SubtleCrypto() override; -- cgit v1.2.3