2 #include "mockclient.h"
3 #include "mockcompositor.h"
4 #include <libds-tizen/launch.h>
5 #include <tizen-launch-server-protocol.h>
6 #include <tizen-launch-client-protocol.h>
8 #define TIZEN_APPINFO_VERSION 1
10 class MockLaunchAppinfoCompositor : public MockCompositor
13 MockLaunchAppinfoCompositor()
14 : MockCompositor(&MockLaunchAppinfoCompositor::TestSetup, this)
16 ds_inf("%s : this(%p)", __func__, this);
18 // initialize the flags to check
23 bMetadataReady = false;
26 ~MockLaunchAppinfoCompositor()
28 ds_inf("%s : this(%p)", __func__, this);
31 static void TestSetup(void *data)
33 MockLaunchAppinfoCompositor *mockComp =
34 static_cast<MockLaunchAppinfoCompositor *>(data);
35 Compositor *comp = mockComp->compositor;
37 ds_inf("%s: mockComp(%p)", __func__, mockComp);
39 mockComp->mAppinfoMgr = ds_tizen_launch_appinfo_mgr_create(comp->display);
42 mockComp->mDestroyListener.notify =
43 MockLaunchAppinfoCompositor::DestroyCallback;
44 mockComp->mDestroyListener.parent = mockComp;
45 ds_tizen_launch_appinfo_mgr_add_destroy_listener(mockComp->mAppinfoMgr,
46 &mockComp->mDestroyListener);
49 mockComp->mSetPidListener.notify =
50 MockLaunchAppinfoCompositor::SetPidCallback;
51 mockComp->mSetPidListener.parent = mockComp;
52 ds_tizen_launch_appinfo_mgr_add_set_pid_listener(mockComp->mAppinfoMgr,
53 &mockComp->mSetPidListener);
56 mockComp->mSetAppidListener.notify =
57 MockLaunchAppinfoCompositor::SetAppidCallback;
58 mockComp->mSetAppidListener.parent = mockComp;
59 ds_tizen_launch_appinfo_mgr_add_set_appid_listener(mockComp->mAppinfoMgr,
60 &mockComp->mSetAppidListener);
62 // metadata_ready listener
63 mockComp->mMetadataReadyListener.notify =
64 MockLaunchAppinfoCompositor::MetadataReadyCallback;
65 mockComp->mMetadataReadyListener.parent = mockComp;
66 ds_tizen_launch_appinfo_mgr_add_metadata_ready_listener(
67 mockComp->mAppinfoMgr,
68 &mockComp->mMetadataReadyListener);
71 static void DestroyCallback(struct wl_listener *listener, void *data)
73 ds_inf("%s", __func__);
75 MockLaunchAppinfoCompositor *mockComp =
76 reinterpret_cast<DestroyListener *>(listener)->parent;
78 mockComp->bDestroyed = true;
81 static void SetPidCallback(struct wl_listener *listener, void *data)
83 ds_inf("%s", __func__);
85 MockLaunchAppinfoCompositor *mockComp =
86 reinterpret_cast<SetPidListener *>(listener)->parent;
87 struct ds_tizen_launch_appinfo *info = static_cast<struct ds_tizen_launch_appinfo *>(data);
89 ds_inf("%s: mockComp(%p), appinfo(%p)", __func__, mockComp, info);
91 mockComp->bSetPid = true;
94 static void SetAppidCallback(struct wl_listener *listener, void *data)
96 ds_inf("%s", __func__);
98 MockLaunchAppinfoCompositor *mockComp =
99 reinterpret_cast<SetAppidListener *>(listener)->parent;
100 struct ds_tizen_launch_appinfo *info = static_cast<struct ds_tizen_launch_appinfo *>(data);
102 ds_inf("%s: mockComp(%p), appinfo(%p)", __func__, mockComp, info);
104 mockComp->bSetAppid = true;
108 static void MetadataReadyCallback(struct wl_listener *listener, void *data)
110 ds_inf("%s", __func__);
112 MockLaunchAppinfoCompositor *mockComp =
113 reinterpret_cast<MetadataReadyListener *>(listener)->parent;
114 struct ds_tizen_launch_appinfo *info = static_cast<struct ds_tizen_launch_appinfo *>(data);
116 ds_inf("%s: mockComp(%p), appinfo(%p)", __func__, mockComp, info);
118 mockComp->bMetadataReady = true;
121 void SendBaseOutputResolutionDone(uint32_t pid, uint32_t width, uint32_t height)
123 ds_inf("%s", __func__);
125 wl_resource *res_appinfo = ds_tizen_launch_appinfo_mgr_get_appinfo_resource(mAppinfoMgr);
127 tizen_launch_appinfo_send_base_output_resolution_done(res_appinfo, pid, width, height);
137 struct ds_tizen_launch_appinfo_mgr *mAppinfoMgr;
138 struct DestroyListener: ::wl_listener {
139 MockLaunchAppinfoCompositor *parent;
141 DestroyListener mDestroyListener;
142 struct SetPidListener: ::wl_listener {
143 MockLaunchAppinfoCompositor *parent;
145 SetPidListener mSetPidListener;
146 struct SetAppidListener: ::wl_listener {
147 MockLaunchAppinfoCompositor *parent;
149 SetAppidListener mSetAppidListener;
150 struct MetadataReadyListener: ::wl_listener {
151 MockLaunchAppinfoCompositor *parent;
153 MetadataReadyListener mMetadataReadyListener;
156 class MockLaunchAppinfoClient : public MockClient
159 MockLaunchAppinfoClient()
160 : bBaseOutputResolutionDone(false),
161 mBaseOutputResolutionWidth(0),
162 mBaseOutputResolutionHeight(0),
163 compositor_res(nullptr),
164 tizen_launch_appinfo(nullptr)
166 MockLaunchAppinfoClient(const struct wl_registry_listener *listener)
167 : MockClient(listener, this)
169 ds_inf("%s", __func__);
171 bBaseOutputResolutionDone = false;
172 mBaseOutputResolutionWidth = 0;
173 mBaseOutputResolutionHeight = 0;
175 ~MockLaunchAppinfoClient()
177 ds_inf("%s", __func__);
180 void SetWlCompositor(struct wl_compositor *global_res)
182 ds_inf("%s", __func__);
184 compositor_res = global_res;
187 struct wl_compositor *GetWlCompositor()
189 ds_inf("%s", __func__);
191 return compositor_res;
194 void SetTizenLaunchAppinfo(struct tizen_launch_appinfo *global_res)
196 ds_inf("%s", __func__);
197 tizen_launch_appinfo = global_res;
200 struct tizen_launch_appinfo *GetTizenLaunchAppinfo()
202 ds_inf("%s", __func__);
204 return tizen_launch_appinfo;
208 bool bBaseOutputResolutionDone;
209 uint32_t mBaseOutputResolutionWidth;
210 uint32_t mBaseOutputResolutionHeight;
213 struct wl_compositor *compositor_res;
214 struct tizen_launch_appinfo *tizen_launch_appinfo;
218 client_tizen_appinfo_cb_base_output_resolution_done(void *data,
219 struct tizen_launch_appinfo *appinfo, uint32_t pid,
220 uint32_t width, uint32_t height)
222 ds_inf("%s", __func__);
224 MockLaunchAppinfoClient *client = static_cast<MockLaunchAppinfoClient *>(data);
226 client->bBaseOutputResolutionDone = true;
227 client->mBaseOutputResolutionWidth = width;
228 client->mBaseOutputResolutionHeight = height;
231 static const struct tizen_launch_appinfo_listener appinfo_cb_listener = {
232 .base_output_resolution_done = client_tizen_appinfo_cb_base_output_resolution_done,
236 client_registry_cb_global(void *data, struct wl_registry *registry,
237 uint32_t name, const char *interface, uint32_t version)
239 ds_inf("%s", __func__);
241 MockLaunchAppinfoClient *client = static_cast<MockLaunchAppinfoClient *>(data);
242 struct wl_compositor *compositor_res;
243 struct tizen_launch_appinfo *tizen_launch_appinfo;
245 if (!strcmp(interface, "wl_compositor")) {
246 compositor_res = (struct wl_compositor *)wl_registry_bind(registry,
247 name, &wl_compositor_interface, 1);
248 if (compositor_res == nullptr) {
249 ds_err("wl_registry_bind() failed. wl_compositor resource.");
252 client->SetWlCompositor(compositor_res);
253 } else if (!strcmp(interface, "tizen_launch_appinfo")) {
254 tizen_launch_appinfo = (struct tizen_launch_appinfo *)wl_registry_bind(registry,
255 name, &tizen_launch_appinfo_interface, TIZEN_APPINFO_VERSION);
256 if (tizen_launch_appinfo == nullptr) {
257 ds_err("wl_registry_bind() failed. tizen_launch_appinfo resource.");
260 client->SetTizenLaunchAppinfo(tizen_launch_appinfo);
262 tizen_launch_appinfo_add_listener(tizen_launch_appinfo, &appinfo_cb_listener,
268 client_registry_cb_global_remove(void *data, struct wl_registry *registry,
271 ds_inf("%s", __func__);
273 MockLaunchAppinfoClient *client = static_cast<MockLaunchAppinfoClient *>(data);
274 struct wl_compositor *compositor_res = client->GetWlCompositor();
275 struct tizen_launch_appinfo *appinfo_res = client->GetTizenLaunchAppinfo();
277 tizen_launch_appinfo_destroy(appinfo_res);
278 wl_compositor_destroy(compositor_res);
281 static const struct wl_registry_listener registry_listener = {
282 .global = client_registry_cb_global,
283 .global_remove = client_registry_cb_global_remove
286 class LaunchAppinfoTest : public ::testing::Test
289 void SetUp(void) override;
290 void TearDown(void) override;
292 MockLaunchAppinfoCompositor *comp;
293 MockLaunchAppinfoClient *client;
294 struct wl_compositor *compositor_res;
295 struct tizen_launch_appinfo *appinfo_res;
299 LaunchAppinfoTest::SetUp(void)
301 ds_inf("%s", __func__);
303 comp = new MockLaunchAppinfoCompositor();
304 client = new MockLaunchAppinfoClient(®istry_listener);
305 compositor_res = client->GetWlCompositor();
306 appinfo_res = client->GetTizenLaunchAppinfo();
312 LaunchAppinfoTest::TearDown(void)
314 ds_inf("%s", __func__);
322 TEST_F(LaunchAppinfoTest, Create_P)
327 TEST_F(LaunchAppinfoTest, Req_TizenLaunchAppinfoRegisterPid)
331 tizen_launch_appinfo_register_pid(appinfo_res, pid);
333 EXPECT_TRUE(comp->bSetPid);
336 TEST_F(LaunchAppinfoTest, Req_TizenLaunchAppinfoSetAppid)
339 const char *appid = "org.tizen.libds-tizen-appinfo-test";
341 tizen_launch_appinfo_register_pid(appinfo_res, pid);
343 EXPECT_TRUE(comp->bSetPid);
345 tizen_launch_appinfo_set_appid(appinfo_res, pid, appid);
347 EXPECT_TRUE(comp->bSetAppid);
350 TEST_F(LaunchAppinfoTest, Req_TizenLaunchAppinfoRegisterAppid)
352 const char *appid = "org.tizen.libds-tizen-appinfo-test";
354 tizen_launch_appinfo_register_appid(appinfo_res, appid);
356 EXPECT_TRUE(comp->bSetAppid);
359 TEST_F(LaunchAppinfoTest, Req_TizenLaunchAppinfoSetPid)
362 const char *appid = "org.tizen.libds-tizen-appinfo-test";
364 tizen_launch_appinfo_register_appid(appinfo_res, appid);
366 EXPECT_TRUE(comp->bSetAppid);
368 tizen_launch_appinfo_set_pid(appinfo_res, appid, pid);
370 EXPECT_TRUE(comp->bSetPid);
373 TEST_F(LaunchAppinfoTest, Req_TizenLaunchAppinfoMetadataReady)
375 const char *appid = "org.tizen.libds-tizen-appinfo-test";
378 tizen_launch_appinfo_register_appid(appinfo_res, appid);
380 EXPECT_TRUE(comp->bSetAppid);
382 tizen_launch_appinfo_ready_metadata(appinfo_res, appid, pid);
384 EXPECT_TRUE(comp->bMetadataReady);
387 TEST_F(LaunchAppinfoTest, Req_TizenLaunchAppinfoGetBaseOutputResolution)
391 tizen_launch_appinfo_register_pid(appinfo_res, pid);
393 EXPECT_TRUE(comp->bSetPid);
395 tizen_launch_appinfo_get_base_output_resolution(appinfo_res, pid);
398 EXPECT_TRUE(client->bBaseOutputResolutionDone);
399 EXPECT_TRUE(client->mBaseOutputResolutionWidth == 1080); //default value
400 EXPECT_TRUE(client->mBaseOutputResolutionHeight == 1920); // default value
403 TEST_F(LaunchAppinfoTest, Ev_TizenLaunchAppinfoBaseOutputResolutionDone)
405 uint32_t pid = 1234, width = 1920, height = 1080;
407 tizen_launch_appinfo_register_pid(appinfo_res, pid);
409 EXPECT_TRUE(comp->bSetPid);
411 tizen_launch_appinfo_get_base_output_resolution(appinfo_res, pid);
414 comp->SendBaseOutputResolutionDone(pid, width, height);
418 EXPECT_TRUE(client->bBaseOutputResolutionDone);
419 EXPECT_TRUE(client->mBaseOutputResolutionWidth == 1920);
420 EXPECT_TRUE(client->mBaseOutputResolutionHeight == 1080);