2 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
24 #include <dali-test-suite-utils.h>
26 #include <dali/public-api/adaptor-framework/key-grab.h>
35 void utc_dali_adaptor_keygrab_startup(void)
37 test_return_value = TET_UNDEF;
40 void utc_dali_adaptor_keygrab_cleanup(void)
42 test_return_value = TET_PASS;
45 // Copied from key-impl.cpp
48 const char* keyName; ///< X string representation
49 const KEY daliKeyCode; ///< Dali Enum Representation
50 const bool deviceButton; ///< Whether the key is from a button on the device
53 // Taken from key-impl.cpp
54 KeyLookup TestKeyLookupTable[] =
56 {"Escape", DALI_KEY_ESCAPE, false}, // item not defined in utilX
57 {"Menu", DALI_KEY_MENU, false}, // item not defined in utilX
59 // Now the key names are used as literal string not defined symbols,
60 // since these definition in utilX.h is deprecated and we're guided not to use them
61 {"XF86Camera", DALI_KEY_CAMERA, false},
62 {"XF86Camera_Full", DALI_KEY_CONFIG, false},
63 {"XF86PowerOff", DALI_KEY_POWER, true},
64 {"Cancel", DALI_KEY_CANCEL, false},
65 {"XF86AudioPlay", DALI_KEY_PLAY_CD, false},
66 {"XF86AudioStop", DALI_KEY_STOP_CD, false},
67 {"XF86AudioPause", DALI_KEY_PAUSE_CD, false},
68 {"XF86AudioNext", DALI_KEY_NEXT_SONG, false},
69 {"XF86AudioPrev", DALI_KEY_PREVIOUS_SONG, false},
70 {"XF86AudioRewind", DALI_KEY_REWIND, false},
71 {"XF86AudioForward", DALI_KEY_FASTFORWARD, false},
72 {"XF86AudioMedia", DALI_KEY_MEDIA, false},
73 {"XF86AudioPlayPause", DALI_KEY_PLAY_PAUSE, false},
74 {"XF86AudioMute", DALI_KEY_MUTE, false},
75 {"XF86Menu", DALI_KEY_MENU, true},
76 {"XF86Send", DALI_KEY_MENU, true},
77 {"XF86HomePage", DALI_KEY_HOMEPAGE, false},
78 {"XF86WWW", DALI_KEY_WEBPAGE, false},
79 {"XF86Mail", DALI_KEY_MAIL, false},
80 {"XF86ScreenSaver", DALI_KEY_SCREENSAVER, false},
81 {"XF86MonBrightnessUp", DALI_KEY_BRIGHTNESS_UP, false},
82 {"XF86MonBrightnessDown", DALI_KEY_BRIGHTNESS_DOWN, false},
83 {"XF86SoftKBD", DALI_KEY_SOFT_KBD, false},
84 {"XF86QuickPanel", DALI_KEY_QUICK_PANEL, false},
85 {"XF86TaskPane", DALI_KEY_TASK_SWITCH, false},
86 {"XF86Apps", DALI_KEY_APPS, false},
87 {"XF86Search", DALI_KEY_SEARCH, false},
88 {"XF86Voice", DALI_KEY_VOICE, false},
89 {"Hangul", DALI_KEY_LANGUAGE, false},
90 {"XF86AudioRaiseVolume", DALI_KEY_VOLUME_UP, true},
91 {"XF86AudioLowerVolume", DALI_KEY_VOLUME_DOWN, true},
93 {"BackSpace", DALI_KEY_BACKSPACE, false},
94 {"Left", DALI_KEY_CURSOR_LEFT, false},
95 {"Right", DALI_KEY_CURSOR_RIGHT, false}};
97 const std::size_t KEY_LOOKUP_COUNT = (sizeof(TestKeyLookupTable)) / (sizeof(KeyLookup));
105 struct MyTestApp : public ConnectionTracker
107 MyTestApp(Application& app, int type)
111 mApplication.InitSignal().Connect(this, &MyTestApp::OnInit);
114 void OnInit(Application& app)
116 mTimer = Timer::New(500);
117 mTimer.TickSignal().Connect(this, &MyTestApp::Tick);
134 case GRAB_KEY_TOPMOST_P:
135 TestGrabKeyTopmostP();
137 case UNGRAB_KEY_TOPMOST_P:
138 TestUngrabKeyTopmostP();
143 void TestGrabKeyTopmostP()
145 for(std::size_t i = 0; i < KEY_LOOKUP_COUNT; ++i)
147 DALI_TEST_CHECK(KeyGrab::GrabKeyTopmost(mApplication.GetWindow(), TestKeyLookupTable[i].daliKeyCode));
151 void TestUngrabKeyTopmostP()
153 for(std::size_t i = 0; i < KEY_LOOKUP_COUNT; ++i)
155 DALI_TEST_CHECK(KeyGrab::GrabKeyTopmost(mApplication.GetWindow(), TestKeyLookupTable[i].daliKeyCode));
156 DALI_TEST_CHECK(KeyGrab::UngrabKeyTopmost(mApplication.GetWindow(), TestKeyLookupTable[i].daliKeyCode));
161 Application& mApplication;
166 int UtcDaliKeyGrabGrabKeyTopmostP(void)
168 Application application = Application::New(&gArgc, &gArgv);
169 MyTestApp testApp(application, GRAB_KEY_TOPMOST_P);
170 application.MainLoop();
174 int UtcDaliKeyGrabUngrabKeyTopmostP(void)
176 Application application = Application::New(&gArgc, &gArgv);
177 MyTestApp testApp(application, UNGRAB_KEY_TOPMOST_P);
178 application.MainLoop();