From 8f8fcfee1a812d9b669ac962cda6e69e54821981 Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Mon, 24 Oct 2022 18:49:06 +0100 Subject: [PATCH] LibWeb: Also make non-const Response getters virtual We wouldn't want a filtered response to bypass the overridden methods based on constness. --- .../Fetch/Infrastructure/HTTP/Responses.h | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Responses.h b/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Responses.h index 3be348b8f148a1..4df9eb9b5065ab 100644 --- a/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Responses.h +++ b/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Responses.h @@ -58,7 +58,7 @@ class Response : public RefCounted { void set_aborted(bool aborted) { m_aborted = aborted; } [[nodiscard]] virtual Vector const& url_list() const { return m_url_list; } - [[nodiscard]] Vector& url_list() { return m_url_list; } + [[nodiscard]] virtual Vector& url_list() { return m_url_list; } void set_url_list(Vector url_list) { m_url_list = move(url_list); } [[nodiscard]] virtual Status status() const { return m_status; } @@ -68,18 +68,17 @@ class Response : public RefCounted { void set_status_message(ByteBuffer status_message) { m_status_message = move(status_message); } [[nodiscard]] virtual NonnullRefPtr const& header_list() const { return m_header_list; } - [[nodiscard]] NonnullRefPtr& header_list() { return m_header_list; } + [[nodiscard]] virtual NonnullRefPtr& header_list() { return m_header_list; } void set_header_list(NonnullRefPtr header_list) { m_header_list = move(header_list); } [[nodiscard]] virtual Optional const& body() const { return m_body; } - [[nodiscard]] Optional& body() { return m_body; } + [[nodiscard]] virtual Optional& body() { return m_body; } void set_body(Optional body) { m_body = move(body); } [[nodiscard]] virtual Optional const& cache_state() const { return m_cache_state; } void set_cache_state(Optional cache_state) { m_cache_state = move(cache_state); } [[nodiscard]] virtual Vector const& cors_exposed_header_name_list() const { return m_cors_exposed_header_name_list; } - [[nodiscard]] Vector& cors_exposed_header_name_list() { return m_cors_exposed_header_name_list; } void set_cors_exposed_header_name_list(Vector cors_exposed_header_name_list) { m_cors_exposed_header_name_list = move(cors_exposed_header_name_list); } [[nodiscard]] virtual bool range_requested() const { return m_range_requested; } @@ -92,7 +91,6 @@ class Response : public RefCounted { void set_timing_allow_passed(bool timing_allow_passed) { m_timing_allow_passed = timing_allow_passed; } [[nodiscard]] virtual BodyInfo const& body_info() const { return m_body_info; } - [[nodiscard]] BodyInfo& body_info() { return m_body_info; } void set_body_info(BodyInfo body_info) { m_body_info = body_info; } [[nodiscard]] bool is_aborted_network_error() const; @@ -172,10 +170,13 @@ class FilteredResponse : public Response { [[nodiscard]] virtual Type type() const override { return m_internal_response->type(); } [[nodiscard]] virtual bool aborted() const override { return m_internal_response->aborted(); } [[nodiscard]] virtual Vector const& url_list() const override { return m_internal_response->url_list(); } + [[nodiscard]] virtual Vector& url_list() override { return m_internal_response->url_list(); } [[nodiscard]] virtual Status status() const override { return m_internal_response->status(); } [[nodiscard]] virtual ReadonlyBytes status_message() const override { return m_internal_response->status_message(); } [[nodiscard]] virtual NonnullRefPtr const& header_list() const override { return m_internal_response->header_list(); } + [[nodiscard]] virtual NonnullRefPtr& header_list() override { return m_internal_response->header_list(); } [[nodiscard]] virtual Optional const& body() const override { return m_internal_response->body(); } + [[nodiscard]] virtual Optional& body() override { return m_internal_response->body(); } [[nodiscard]] virtual Optional const& cache_state() const override { return m_internal_response->cache_state(); } [[nodiscard]] virtual Vector const& cors_exposed_header_name_list() const override { return m_internal_response->cors_exposed_header_name_list(); } [[nodiscard]] virtual bool range_requested() const override { return m_internal_response->range_requested(); } @@ -197,6 +198,7 @@ class BasicFilteredResponse final : public FilteredResponse { [[nodiscard]] virtual Type type() const override { return Type::Basic; } [[nodiscard]] virtual NonnullRefPtr const& header_list() const override { return m_header_list; } + [[nodiscard]] virtual NonnullRefPtr& header_list() override { return m_header_list; } private: BasicFilteredResponse(NonnullRefPtr, NonnullRefPtr); @@ -211,6 +213,7 @@ class CORSFilteredResponse final : public FilteredResponse { [[nodiscard]] virtual Type type() const override { return Type::CORS; } [[nodiscard]] virtual NonnullRefPtr const& header_list() const override { return m_header_list; } + [[nodiscard]] virtual NonnullRefPtr& header_list() override { return m_header_list; } private: CORSFilteredResponse(NonnullRefPtr, NonnullRefPtr); @@ -225,10 +228,13 @@ class OpaqueFilteredResponse final : public FilteredResponse { [[nodiscard]] virtual Type type() const override { return Type::Opaque; } [[nodiscard]] virtual Vector const& url_list() const override { return m_url_list; } + [[nodiscard]] virtual Vector& url_list() override { return m_url_list; } [[nodiscard]] virtual Status status() const override { return 0; } [[nodiscard]] virtual ReadonlyBytes status_message() const override { return {}; } [[nodiscard]] virtual NonnullRefPtr const& header_list() const override { return m_header_list; } + [[nodiscard]] virtual NonnullRefPtr& header_list() override { return m_header_list; } [[nodiscard]] virtual Optional const& body() const override { return m_body; } + [[nodiscard]] virtual Optional& body() override { return m_body; } private: explicit OpaqueFilteredResponse(NonnullRefPtr); @@ -247,7 +253,9 @@ class OpaqueRedirectFilteredResponse final : public FilteredResponse { [[nodiscard]] virtual Status status() const override { return 0; } [[nodiscard]] virtual ReadonlyBytes status_message() const override { return {}; } [[nodiscard]] virtual NonnullRefPtr const& header_list() const override { return m_header_list; } + [[nodiscard]] virtual NonnullRefPtr& header_list() override { return m_header_list; } [[nodiscard]] virtual Optional const& body() const override { return m_body; } + [[nodiscard]] virtual Optional& body() override { return m_body; } private: explicit OpaqueRedirectFilteredResponse(NonnullRefPtr);