1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 04:27:44 +00:00

LibWeb: Implement XMLHttpRequest.getAllResponseHeaders()

This commit is contained in:
Andreas Kling 2021-09-19 22:32:33 +02:00
parent 95559c4277
commit 7ef4d75716
3 changed files with 21 additions and 0 deletions

View file

@ -5,6 +5,7 @@
* SPDX-License-Identifier: BSD-2-Clause * SPDX-License-Identifier: BSD-2-Clause
*/ */
#include <AK/QuickSort.h>
#include <LibJS/Runtime/FunctionObject.h> #include <LibJS/Runtime/FunctionObject.h>
#include <LibWeb/Bindings/EventWrapper.h> #include <LibWeb/Bindings/EventWrapper.h>
#include <LibWeb/Bindings/XMLHttpRequestWrapper.h> #include <LibWeb/Bindings/XMLHttpRequestWrapper.h>
@ -271,4 +272,22 @@ void XMLHttpRequest::set_onreadystatechange(HTML::EventHandler value)
set_event_handler_attribute(Web::XHR::EventNames::readystatechange, move(value)); set_event_handler_attribute(Web::XHR::EventNames::readystatechange, move(value));
} }
// https://xhr.spec.whatwg.org/#the-getallresponseheaders()-method
String XMLHttpRequest::get_all_response_headers() const
{
// FIXME: Implement the spec-compliant sort order.
StringBuilder builder;
auto keys = m_response_headers.keys();
quick_sort(keys);
for (auto& key : keys) {
builder.append(key);
builder.append(": ");
builder.append(m_response_headers.get(key).value());
builder.append("\r\n");
}
return builder.to_string();
}
} }

View file

@ -57,6 +57,7 @@ public:
DOM::ExceptionOr<void> set_request_header(const String& header, const String& value); DOM::ExceptionOr<void> set_request_header(const String& header, const String& value);
String get_response_header(const String& name) { return m_response_headers.get(name).value_or({}); } String get_response_header(const String& name) { return m_response_headers.get(name).value_or({}); }
String get_all_response_headers() const;
HTML::EventHandler onreadystatechange(); HTML::EventHandler onreadystatechange();
void set_onreadystatechange(HTML::EventHandler); void set_onreadystatechange(HTML::EventHandler);

View file

@ -17,6 +17,7 @@ interface XMLHttpRequest : XMLHttpRequestEventTarget {
undefined send(); undefined send();
ByteString? getResponseHeader(ByteString name); ByteString? getResponseHeader(ByteString name);
ByteString getAllResponseHeaders();
attribute EventHandler onreadystatechange; attribute EventHandler onreadystatechange;