XMLHttpRequestEventTarget.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Copyright (c) 2021, the SerenityOS developers.
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibWeb/Bindings/EventTargetWrapperFactory.h>
  8. #include <LibWeb/DOM/EventDispatcher.h>
  9. #include <LibWeb/DOM/EventTarget.h>
  10. namespace Web::XHR {
  11. #define ENUMERATE_XML_HTTP_REQUEST_EVENT_TARGET_EVENT_HANDLERS(E) \
  12. E(onloadstart, XHR::EventNames::loadstart) \
  13. E(onprogress, XHR::EventNames::progress) \
  14. E(onabort, XHR::EventNames::abort) \
  15. E(onerror, XHR::EventNames::error) \
  16. E(onload, XHR::EventNames::load) \
  17. E(ontimeout, XHR::EventNames::timeout) \
  18. E(onloadend, XHR::EventNames::loadend)
  19. class XMLHttpRequestEventTarget
  20. : public DOM::EventTarget
  21. , public Bindings::Wrappable {
  22. public:
  23. using WrapperType = Bindings::XMLHttpRequestEventTargetWrapper;
  24. virtual ~XMLHttpRequestEventTarget() override {};
  25. #undef __ENUMERATE
  26. #define __ENUMERATE(attribute_name, event_name) \
  27. void set_##attribute_name(Optional<Bindings::CallbackType>); \
  28. Bindings::CallbackType* attribute_name();
  29. ENUMERATE_XML_HTTP_REQUEST_EVENT_TARGET_EVENT_HANDLERS(__ENUMERATE)
  30. #undef __ENUMERATE
  31. protected:
  32. XMLHttpRequestEventTarget()
  33. : DOM::EventTarget()
  34. {
  35. }
  36. private:
  37. virtual JS::Object* create_wrapper(JS::Realm& realm) override
  38. {
  39. return wrap(realm, *this);
  40. }
  41. };
  42. }