LibWeb: Add method for "is CORS-same-origin"

This commit is contained in:
Sam Atkins 2024-12-20 16:51:31 +00:00 committed by Andreas Kling
parent ae943965dc
commit a4db7e9e23
Notes: github-actions[bot] 2024-12-22 11:31:10 +00:00
3 changed files with 16 additions and 3 deletions

View file

@ -201,6 +201,20 @@ GC::Ref<Response> Response::unsafe_response()
return *this;
}
// https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-same-origin
bool Response::is_cors_same_origin() const
{
// A response whose type is "basic", "cors", or "default" is CORS-same-origin. [FETCH]
switch (type()) {
case Type::Basic:
case Type::CORS:
case Type::Default:
return true;
default:
return false;
}
}
// https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-cross-origin
bool Response::is_cors_cross_origin() const
{

View file

@ -116,6 +116,7 @@ public:
[[nodiscard]] GC::Ref<Response> unsafe_response();
[[nodiscard]] bool is_cors_same_origin() const;
[[nodiscard]] bool is_cors_cross_origin() const;
[[nodiscard]] bool is_fresh() const;

View file

@ -750,9 +750,7 @@ GC::Ref<WebIDL::Promise> compile_potential_webassembly_response(JS::VM& vm, GC::
}
// 6. If response is not CORS-same-origin, reject returnValue with a TypeError and abort these substeps.
// https://html.spec.whatwg.org/#cors-same-origin
auto type = response_object.type();
if (type != Bindings::ResponseType::Basic && type != Bindings::ResponseType::Cors && type != Bindings::ResponseType::Default) {
if (!response->is_cors_same_origin()) {
WebIDL::reject_promise(realm, return_value, *vm.throw_completion<JS::TypeError>("Response is not CORS-same-origin"sv).value());
return JS::js_undefined();
}