LibWeb/Fetch: Align is_network_error() with the latest specification

This commit is contained in:
Aliaksandr Kalenik 2023-10-02 19:30:44 +02:00 committed by Andreas Kling
parent 084cb4350e
commit 5d885e9047
2 changed files with 17 additions and 2 deletions

View file

@ -79,9 +79,22 @@ bool Response::is_aborted_network_error() const
// https://fetch.spec.whatwg.org/#concept-network-error
bool Response::is_network_error() const
{
// A response whose type is "error" is known as a network error.
// A network error is a response whose type is "error", status is 0, status message is the empty byte sequence,
// header list is « », body is null, and body info is a new response body info.
// NOTE: We have to use the virtual getter here to not bypass filtered responses.
return type() == Type::Error;
if (type() != Type::Error)
return false;
if (status() != 0)
return false;
if (!status_message().is_empty())
return false;
if (!header_list()->is_empty())
return false;
if (!body())
return false;
if (body_info() != BodyInfo {})
return false;
return true;
}
// https://fetch.spec.whatwg.org/#concept-response-url

View file

@ -47,6 +47,8 @@ public:
// https://fetch.spec.whatwg.org/#fetch-timing-info-decoded-body-size
u64 decoded_size { 0 };
bool operator==(BodyInfo const&) const = default;
};
[[nodiscard]] static JS::NonnullGCPtr<Response> create(JS::VM&);