16
16
* Authored by: Andreas Pokorny <andreas.pokorny@canonical.com>
19
#define MIR_INCLUDE_DEPRECATED_EVENT_HEADER
19
21
#include "src/server/input/android/android_input_channel.h"
20
22
#include "src/server/input/android/input_sender.h"
21
23
#include "src/server/report/null_report_factory.h"
23
#include "mir_test_doubles/mock_main_loop.h"
24
25
#include "mir_test_doubles/stub_scene_surface.h"
25
26
#include "mir_test_doubles/mock_input_surface.h"
26
27
#include "mir_test_doubles/mock_input_send_observer.h"
27
28
#include "mir_test_doubles/stub_scene.h"
28
29
#include "mir_test_doubles/mock_scene.h"
29
#include "mir_test_doubles/stub_timer.h"
30
#include "mir_test_doubles/triggered_main_loop.h"
30
31
#include "mir_test/fake_shared.h"
31
32
#include "mir_test/event_matchers.h"
75
75
std::shared_ptr<ms::Observer> observer;
78
class TriggeredMainLoop : public ::testing::NiceMock<mtd::MockMainLoop>
81
typedef ::testing::NiceMock<mtd::MockMainLoop> base;
82
typedef std::function<void(int)> fd_callback;
83
typedef std::function<void(int)> signal_callback;
84
typedef std::function<void()> callback;
86
void register_fd_handler(std::initializer_list<int> fds, void const* owner, fd_callback const& handler) override
88
base::register_fd_handler(fds, owner, handler);
91
fd_callbacks.emplace_back(Item{fd, owner, handler});
95
void unregister_fd_handler(void const* owner)
97
base::unregister_fd_handler(owner);
102
[owner](Item const& item)
104
return item.owner == owner;
110
void trigger_pending_fds()
116
for (auto const & item : fd_callbacks)
118
FD_SET(item.fd, &read_fds);
119
max_fd = std::max(item.fd, max_fd);
122
struct timeval do_not_wait{0, 0};
124
if (select(max_fd+1, &read_fds, nullptr, nullptr, &do_not_wait))
126
for (auto const & item : fd_callbacks)
128
FD_ISSET(item.fd, &read_fds);
129
item.callback(item.fd);
134
std::unique_ptr<mir::time::Alarm> notify_in(std::chrono::milliseconds delay,
135
callback call) override
137
base::notify_in(delay, call);
138
timeout_callbacks.push_back(call);
139
return std::unique_ptr<mir::time::Alarm>{new mtd::StubAlarm};
142
void fire_all_alarms()
144
for(auto const& callback : timeout_callbacks)
149
std::vector<callback> timeout_callbacks;
156
fd_callback callback;
158
std::vector<Item> fd_callbacks;
163
80
class AndroidInputSender : public ::testing::Test
205
122
droidinput::sp<droidinput::InputChannel> client_channel{new droidinput::InputChannel(droidinput::String8("test"), channel->client_fd())};
206
123
droidinput::InputConsumer consumer{client_channel};
208
TriggeredMainLoop loop;
125
mtd::TriggeredMainLoop loop;
209
126
testing::NiceMock<mtd::MockInputSendObserver> observer;
211
128
MirEvent key_event;