summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb/HTML/WindowEventHandlers.h
blob: a6d0009b7a8205f9b4d965d9467d868ae4fc1670 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
 * Copyright (c) 2022, Luke Wilde <lukew@serenityos.org>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#pragma once

#include <AK/Forward.h>
#include <LibWeb/Forward.h>

#define ENUMERATE_WINDOW_EVENT_HANDLERS(E)                        \
    E(onafterprint, HTML::EventNames::afterprint)                 \
    E(onbeforeprint, HTML::EventNames::beforeprint)               \
    E(onbeforeunload, HTML::EventNames::beforeunload)             \
    E(onhashchange, HTML::EventNames::hashchange)                 \
    E(onlanguagechange, HTML::EventNames::languagechange)         \
    E(onmessage, HTML::EventNames::message)                       \
    E(onmessageerror, HTML::EventNames::messageerror)             \
    E(onoffline, HTML::EventNames::offline)                       \
    E(ononline, HTML::EventNames::online)                         \
    E(onpagehide, HTML::EventNames::pagehide)                     \
    E(onpageshow, HTML::EventNames::pageshow)                     \
    E(onpopstate, HTML::EventNames::popstate)                     \
    E(onrejectionhandled, HTML::EventNames::rejectionhandled)     \
    E(onstorage, HTML::EventNames::storage)                       \
    E(onunhandledrejection, HTML::EventNames::unhandledrejection) \
    E(onunload, HTML::EventNames::unload)

namespace Web::HTML {

class WindowEventHandlers {
public:
    virtual ~WindowEventHandlers();

#undef __ENUMERATE
#define __ENUMERATE(attribute_name, event_name)         \
    void set_##attribute_name(Bindings::CallbackType*); \
    Bindings::CallbackType* attribute_name();
    ENUMERATE_WINDOW_EVENT_HANDLERS(__ENUMERATE)
#undef __ENUMERATE

protected:
    virtual DOM::EventTarget& window_event_handlers_to_event_target() = 0;
};

}