瀏覽代碼

LibWeb: Make factory method of HTML::WorkerNavigator fallible

Kenneth Myhra 2 年之前
父節點
當前提交
193de231e0

+ 4 - 1
Userland/Libraries/LibWeb/HTML/WorkerGlobalScope.cpp

@@ -10,6 +10,7 @@
 #include <AK/Vector.h>
 #include <LibJS/Runtime/Completion.h>
 #include <LibTextCodec/Decoder.h>
+#include <LibWeb/Bindings/ExceptionOrUtils.h>
 #include <LibWeb/Bindings/WorkerGlobalScopePrototype.h>
 #include <LibWeb/Forward.h>
 #include <LibWeb/HTML/EventHandler.h>
@@ -33,7 +34,9 @@ WorkerGlobalScope::~WorkerGlobalScope() = default;
 JS::ThrowCompletionOr<void> WorkerGlobalScope::initialize(JS::Realm& realm)
 {
     MUST_OR_THROW_OOM(Base::initialize(realm));
-    m_navigator = WorkerNavigator::create(*this);
+    m_navigator = TRY(Bindings::throw_dom_exception_if_needed(realm.vm(), [&]() {
+        return WorkerNavigator::create(*this);
+    }));
 
     return {};
 }

+ 2 - 2
Userland/Libraries/LibWeb/HTML/WorkerNavigator.cpp

@@ -11,9 +11,9 @@
 
 namespace Web::HTML {
 
-JS::NonnullGCPtr<WorkerNavigator> WorkerNavigator::create(WorkerGlobalScope& global_scope)
+WebIDL::ExceptionOr<JS::NonnullGCPtr<WorkerNavigator>> WorkerNavigator::create(WorkerGlobalScope& global_scope)
 {
-    return global_scope.heap().allocate<WorkerNavigator>(global_scope.realm(), global_scope).release_allocated_value_but_fixme_should_propagate_errors();
+    return MUST_OR_THROW_OOM(global_scope.heap().allocate<WorkerNavigator>(global_scope.realm(), global_scope));
 }
 
 WorkerNavigator::WorkerNavigator(WorkerGlobalScope& global_scope)

+ 1 - 1
Userland/Libraries/LibWeb/HTML/WorkerNavigator.h

@@ -22,7 +22,7 @@ class WorkerNavigator : public Bindings::PlatformObject
     WEB_PLATFORM_OBJECT(WorkerNavigator, Bindings::PlatformObject);
 
 public:
-    static JS::NonnullGCPtr<WorkerNavigator> create(WorkerGlobalScope&);
+    static WebIDL::ExceptionOr<JS::NonnullGCPtr<WorkerNavigator>> create(WorkerGlobalScope&);
 
     virtual ~WorkerNavigator() override;