1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:58:11 +00:00

LibWeb: Implement XMLHttpRequest.status

This lets jQuery's AJAX functionality progress further :^)
This commit is contained in:
Linus Groh 2021-04-03 15:17:29 +02:00 committed by Andreas Kling
parent e02270c5cc
commit 288b90a297
3 changed files with 8 additions and 2 deletions

View file

@ -229,7 +229,7 @@ DOM::ExceptionOr<void> XMLHttpRequest::send()
// we need to make ResourceLoader give us more detailed updates than just "done" and "error".
ResourceLoader::the().load(
request,
[weak_this = make_weak_ptr()](auto data, auto&, auto) {
[weak_this = make_weak_ptr()](auto data, auto&, auto status_code) {
if (!weak_this)
return;
auto& xhr = const_cast<XMLHttpRequest&>(*weak_this);
@ -244,16 +244,18 @@ DOM::ExceptionOr<void> XMLHttpRequest::send()
}
xhr.m_ready_state = ReadyState::Done;
xhr.m_status = status_code.value_or(0);
xhr.m_send = false;
xhr.dispatch_event(DOM::Event::create(EventNames::readystatechange));
xhr.fire_progress_event(EventNames::load, transmitted, length);
xhr.fire_progress_event(EventNames::loadend, transmitted, length);
},
[weak_this = make_weak_ptr()](auto& error, auto) {
[weak_this = make_weak_ptr()](auto& error, auto status_code) {
if (!weak_this)
return;
dbgln("XHR failed to load: {}", error);
const_cast<XMLHttpRequest&>(*weak_this).set_ready_state(ReadyState::Done);
const_cast<XMLHttpRequest&>(*weak_this).set_status(status_code.value_or(0));
const_cast<XMLHttpRequest&>(*weak_this).dispatch_event(DOM::Event::create(HTML::EventNames::error));
});
} else {