mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-30 03:20:28 +00:00
LibWeb: Implement XMLHttpRequest.status
This lets jQuery's AJAX functionality progress further :^)
This commit is contained in:
parent
e02270c5cc
commit
288b90a297
Notes:
sideshowbarker
2024-07-18 20:51:53 +09:00
Author: https://github.com/linusg Commit: https://github.com/SerenityOS/serenity/commit/288b90a297e Pull-request: https://github.com/SerenityOS/serenity/pull/6090
3 changed files with 8 additions and 2 deletions
|
@ -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 {
|
||||
|
|
|
@ -68,6 +68,7 @@ public:
|
|||
using RefCounted::unref;
|
||||
|
||||
ReadyState ready_state() const { return m_ready_state; };
|
||||
unsigned status() const { return m_status; };
|
||||
String response_text() const;
|
||||
|
||||
DOM::ExceptionOr<void> open(const String& method, const String& url);
|
||||
|
@ -82,6 +83,7 @@ private:
|
|||
virtual JS::Object* create_wrapper(JS::GlobalObject&) override;
|
||||
|
||||
void set_ready_state(ReadyState);
|
||||
void set_status(unsigned status) { m_status = status; }
|
||||
void fire_progress_event(const String&, u64, u64);
|
||||
|
||||
explicit XMLHttpRequest(DOM::Window&);
|
||||
|
@ -89,6 +91,7 @@ private:
|
|||
NonnullRefPtr<DOM::Window> m_window;
|
||||
|
||||
ReadyState m_ready_state { ReadyState::Unsent };
|
||||
unsigned m_status { 0 };
|
||||
bool m_send { false };
|
||||
|
||||
String m_method;
|
||||
|
|
|
@ -9,6 +9,7 @@ interface XMLHttpRequest : XMLHttpRequestEventTarget {
|
|||
const unsigned short DONE = 4;
|
||||
|
||||
readonly attribute unsigned short readyState;
|
||||
readonly attribute unsigned short status;
|
||||
readonly attribute DOMString responseText;
|
||||
|
||||
undefined open(DOMString method, DOMString url);
|
||||
|
|
Loading…
Reference in a new issue