Bladeren bron

LibWeb: Implement 'Appropriate network error' AO

Linus Groh 2 jaren geleden
bovenliggende
commit
c93e6ea0d9

+ 13 - 0
Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Responses.cpp

@@ -7,6 +7,7 @@
 #include <LibJS/Heap/Heap.h>
 #include <LibJS/Runtime/VM.h>
 #include <LibWeb/Bindings/MainThreadVM.h>
+#include <LibWeb/Fetch/Infrastructure/FetchParams.h>
 #include <LibWeb/Fetch/Infrastructure/HTTP/Bodies.h>
 #include <LibWeb/Fetch/Infrastructure/HTTP/Responses.h>
 
@@ -48,6 +49,18 @@ JS::NonnullGCPtr<Response> Response::network_error(JS::VM& vm)
     return response;
 }
 
+// https://fetch.spec.whatwg.org/#appropriate-network-error
+JS::NonnullGCPtr<Response> Response::appropriate_network_error(JS::VM& vm, FetchParams const& fetch_params)
+{
+    // 1. Assert: fetchParams is canceled.
+    VERIFY(fetch_params.is_canceled());
+
+    // 2. Return an aborted network error if fetchParams is aborted; otherwise return a network error.
+    return fetch_params.is_aborted()
+        ? aborted_network_error(vm)
+        : network_error(vm);
+}
+
 // https://fetch.spec.whatwg.org/#concept-aborted-network-error
 bool Response::is_aborted_network_error() const
 {

+ 1 - 0
Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Responses.h

@@ -51,6 +51,7 @@ public:
     [[nodiscard]] static JS::NonnullGCPtr<Response> create(JS::VM&);
     [[nodiscard]] static JS::NonnullGCPtr<Response> aborted_network_error(JS::VM&);
     [[nodiscard]] static JS::NonnullGCPtr<Response> network_error(JS::VM&);
+    [[nodiscard]] static JS::NonnullGCPtr<Response> appropriate_network_error(JS::VM&, FetchParams const&);
 
     virtual ~Response() = default;