mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 16:17:45 +00:00
LibWeb: Handle filtered response in Response::clone()
This commit is contained in:
parent
c380d2cfdc
commit
0a186cb460
1 changed files with 17 additions and 1 deletions
|
@ -4,6 +4,7 @@
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <LibWeb/Bindings/MainThreadVM.h>
|
||||||
#include <LibWeb/Fetch/Infrastructure/HTTP/Bodies.h>
|
#include <LibWeb/Fetch/Infrastructure/HTTP/Bodies.h>
|
||||||
#include <LibWeb/Fetch/Infrastructure/HTTP/Responses.h>
|
#include <LibWeb/Fetch/Infrastructure/HTTP/Responses.h>
|
||||||
|
|
||||||
|
@ -92,7 +93,22 @@ WebIDL::ExceptionOr<NonnullRefPtr<Response>> Response::clone() const
|
||||||
{
|
{
|
||||||
// To clone a response response, run these steps:
|
// To clone a response response, run these steps:
|
||||||
|
|
||||||
// FIXME: 1. If response is a filtered response, then return a new identical filtered response whose internal response is a clone of response’s internal response.
|
auto& vm = Bindings::main_thread_vm();
|
||||||
|
auto& realm = *vm.current_realm();
|
||||||
|
|
||||||
|
// 1. If response is a filtered response, then return a new identical filtered response whose internal response is a clone of response’s internal response.
|
||||||
|
if (is<FilteredResponse>(*this)) {
|
||||||
|
auto internal_response = TRY(static_cast<FilteredResponse const&>(*this).internal_response()->clone());
|
||||||
|
if (is<BasicFilteredResponse>(*this))
|
||||||
|
return TRY_OR_RETURN_OOM(realm, BasicFilteredResponse::create(move(internal_response)));
|
||||||
|
if (is<CORSFilteredResponse>(*this))
|
||||||
|
return TRY_OR_RETURN_OOM(realm, CORSFilteredResponse::create(move(internal_response)));
|
||||||
|
if (is<OpaqueFilteredResponse>(*this))
|
||||||
|
return OpaqueFilteredResponse::create(move(internal_response));
|
||||||
|
if (is<OpaqueRedirectFilteredResponse>(*this))
|
||||||
|
return OpaqueRedirectFilteredResponse::create(move(internal_response));
|
||||||
|
VERIFY_NOT_REACHED();
|
||||||
|
}
|
||||||
|
|
||||||
// 2. Let newResponse be a copy of response, except for its body.
|
// 2. Let newResponse be a copy of response, except for its body.
|
||||||
auto new_response = Infrastructure::Response::create();
|
auto new_response = Infrastructure::Response::create();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue