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;