diff --git a/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp b/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp index 694d6818d2..a8f8664040 100644 --- a/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp +++ b/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp @@ -27,10 +27,12 @@ #include #include #include +#include #include #include #include #include +#include #include #include #include @@ -103,26 +105,23 @@ static String normalize_header_value(const String& header_value) } // https://xhr.spec.whatwg.org/#dom-xmlhttprequest-setrequestheader -void XMLHttpRequest::set_request_header(const String& header, const String& value) +DOM::ExceptionOr XMLHttpRequest::set_request_header(const String& header, const String& value) { - if (m_ready_state != ReadyState::Opened) { - // FIXME: throw an "InvalidStateError" DOMException. - return; - } + if (m_ready_state != ReadyState::Opened) + return DOM::InvalidStateError::create("XHR readyState is not OPENED"); - if (m_send) { - // FIXME: throw an "InvalidStateError" DOMException. - return; - } + if (m_send) + return DOM::InvalidStateError::create("XHR send() flag is already set"); // FIXME: Check if name matches the name production. // FIXME: Check if value matches the value production. if (is_forbidden_header_name(header)) - return; + return {}; // FIXME: Combine m_request_headers.set(header, normalize_header_value(value)); + return {}; } void XMLHttpRequest::open(const String& method, const String& url) diff --git a/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.h b/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.h index 3071ba3aa2..686caa01d3 100644 --- a/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.h +++ b/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.h @@ -33,6 +33,7 @@ #include #include #include +#include #include namespace Web::XHR { @@ -71,7 +72,7 @@ public: void open(const String& method, const String& url); void send(); - void set_request_header(const String& header, const String& value); + DOM::ExceptionOr set_request_header(const String& header, const String& value); private: virtual void ref_event_target() override { ref(); }