Repository: LadybirdBrowser/ladybird
File: Libraries/LibWeb/Loader/LoadRequest.h (C/C++)

Code before:
class WEB_API LoadRequest {
public:
    LoadRequest();

    static LoadRequest create_for_url_on_page(const URL::URL& url, Page* page);

    // The main resource is the file being displayed in a frame (unlike subresources like images, scripts, etc.)
    // If a main resource fails with an HTTP error, we may still display its content if non-empty, e.g a custom 404 page.
    bool is_main_resource() const { return m_main_resource; }
    void set_main_resource(bool b) { m_main_resource = b; }

    bool is_valid() const { return m_url.has_value(); }

    int id() const { return m_id; }

    Optional<URL::URL> const& url() const { return m_url; }
    void set_url(Optional<URL::URL> url) { m_url = move(url); }

    ByteString const& method() const { return m_method; }
    void set_method(ByteString const& method) { m_method = method; }

    ByteBuffer const& body() const { return m_body; }
    void set_body(ByteBuffer body) { m_body = move(body); }

    bool respects_set_cookie() const { return m_respects_set_cookie; }
    void set_respects_set_cookie(bool respects_set_cookie) { m_respects_set_cookie = respects_set_cookie; }

    void start_timer() { m_load_timer.start(); }
    AK::Duration load_time() const { return m_load_timer.elapsed_time(); }

    GC::Ptr<Page> page() const { return m_page.ptr(); }
    void set_page(Page& page) { m_page = page; }

    unsigned hash() const
    {
        auto body_hash = string_hash((char const*)m_body.data(), m_body.size());
        auto body_and_headers_hash = pair_int_hash(body_hash, m_headers.hash());
        auto url_hash = m_url.has_value() ? m_url->to_byte_string().hash() : 0;
        auto url_and_method_hash = pair_int_hash(url_hash, m_method.hash());
        return pair_int_hash(body_and_headers_hash, url_and_method_hash);
    }

    bool operator==(LoadRequest const& other) const
    {
        if (m_headers.size() != other.m_headers.size())
            return false;
        for (auto const& it : m_headers) {
            auto jt = other.m_headers.find(it.key);
            if (jt == other.m_headers.end())
                return false;
            if (it.value != jt->value)

Review comment (suggestion):
I am not a big fan of the name on these method I would rather see them named like below. But let one of the maintainers voice their opinion on this before you change them. (same goes of course for the member variable)
```cpp
bool store_set_cookie_headers() const { return m_store_set_cookie_headers; }
void set_store_set_cookie_headers(bool store_set_cookie_headers) { m_store_set_cookie_headers = store_set_cookie_headers; }
```

Code after:
class WEB_API LoadRequest {
public:
    LoadRequest();

    static LoadRequest create_for_url_on_page(URL::URL const& url, Page* page);

    // The main resource is the file being displayed in a frame (unlike subresources like images, scripts, etc.)
    // If a main resource fails with an HTTP error, we may still display its content if non-empty, e.g a custom 404 page.
    bool is_main_resource() const { return m_main_resource; }
    void set_main_resource(bool b) { m_main_resource = b; }

    bool is_valid() const { return m_url.has_value(); }

    int id() const { return m_id; }

    Optional<URL::URL> const& url() const { return m_url; }
    void set_url(Optional<URL::URL> url) { m_url = move(url); }

    ByteString const& method() const { return m_method; }
    void set_method(ByteString const& method) { m_method = method; }

    ByteBuffer const& body() const { return m_body; }
    void set_body(ByteBuffer body) { m_body = move(body); }

    bool store_set_cookie_headers() const { return m_store_set_cookie_headers; }
    void set_store_set_cookie_headers(bool store_set_cookie_headers) { m_store_set_cookie_headers = store_set_cookie_headers; }

    void start_timer() { m_load_timer.start(); }
    AK::Duration load_time() const { return m_load_timer.elapsed_time(); }

    GC::Ptr<Page> page() const { return m_page.ptr(); }
    void set_page(Page& page) { m_page = page; }

    unsigned hash() const
    {
        auto body_hash = string_hash((char const*)m_body.data(), m_body.size());
        auto body_and_headers_hash = pair_int_hash(body_hash, m_headers.hash());
        auto url_hash = m_url.has_value() ? m_url->to_byte_string().hash() : 0;
        auto url_and_method_hash = pair_int_hash(url_hash, m_method.hash());
        return pair_int_hash(body_and_headers_hash, url_and_method_hash);
    }

    bool operator==(LoadRequest const& other) const
    {
        if (m_headers.size() != other.m_headers.size())
            return false;
        for (auto const& it : m_headers) {
            auto jt = other.m_headers.find(it.key);
            if (jt == other.m_headers.end())
                return false;
            if (it.value != jt->value)