Coverage Report

Created: 2025-11-16 07:46

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/serenity/Userland/Libraries/LibWeb/UIEvents/MouseButton.h
Line
Count
Source
1
/*
2
 * Copyright (c) 2024, Andreas Kling <kling@serenityos.org>
3
 *
4
 * SPDX-License-Identifier: BSD-2-Clause
5
 */
6
7
#pragma once
8
9
#include <AK/Assertions.h>
10
#include <AK/EnumBits.h>
11
#include <AK/Types.h>
12
13
namespace Web::UIEvents {
14
15
enum MouseButton : u8 {
16
    None = 0,
17
    Primary = 1,
18
    Secondary = 2,
19
    Middle = 4,
20
    Backward = 8,
21
    Forward = 16,
22
};
23
24
AK_ENUM_BITWISE_OPERATORS(MouseButton);
25
26
// https://www.w3.org/TR/uievents/#dom-mouseevent-button
27
constexpr i16 mouse_button_to_button_code(MouseButton button)
28
0
{
29
0
    switch (button) {
30
0
    case MouseButton::Primary:
31
0
        return 0;
32
0
    case MouseButton::Middle:
33
0
        return 1;
34
0
    case MouseButton::Secondary:
35
0
        return 2;
36
0
    case MouseButton::Backward:
37
0
        return 3;
38
0
    case MouseButton::Forward:
39
0
        return 4;
40
0
    default:
41
0
        VERIFY_NOT_REACHED();
42
0
    }
43
0
}
44
45
// https://www.w3.org/TR/uievents/#dom-mouseevent-button
46
constexpr MouseButton button_code_to_mouse_button(i16 button)
47
0
{
48
0
    if (button == 0)
49
0
        return MouseButton::Primary;
50
0
    if (button == 1)
51
0
        return MouseButton::Middle;
52
0
    if (button == 2)
53
0
        return MouseButton::Secondary;
54
0
    if (button == 3)
55
0
        return MouseButton::Backward;
56
0
    if (button == 4)
57
0
        return MouseButton::Forward;
58
0
    return MouseButton::None;
59
0
}
60
61
}