2 * Copyright (c) 2015 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.
27 #include <dali-test-suite-utils.h>
28 #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 }
98 const std::size_t KEY_LOOKUP_COUNT = (sizeof( TestKeyLookupTable))/ (sizeof(KeyLookup));
106 struct MyTestApp : public ConnectionTracker
108 MyTestApp( Application& app, int type )
109 : mApplication( app ),
112 mApplication.InitSignal().Connect( this, &MyTestApp::OnInit );
115 void OnInit(Application& app)
117 mTimer = Timer::New( 500 );
118 mTimer.TickSignal().Connect( this, &MyTestApp::Tick );
135 case GRAB_KEY_TOPMOST_P:
136 TestGrabKeyTopmostP();
138 case UNGRAB_KEY_TOPMOST_P:
139 TestUngrabKeyTopmostP();
144 void TestGrabKeyTopmostP()
146 for ( std::size_t i = 0; i < KEY_LOOKUP_COUNT; ++i )
148 DALI_TEST_CHECK( KeyGrab::GrabKeyTopmost( mApplication.GetWindow(), TestKeyLookupTable[i].daliKeyCode ) );
152 void TestUngrabKeyTopmostP()
154 for ( std::size_t i = 0; i < KEY_LOOKUP_COUNT; ++i )
156 DALI_TEST_CHECK( KeyGrab::GrabKeyTopmost( mApplication.GetWindow(), TestKeyLookupTable[i].daliKeyCode ) );
157 DALI_TEST_CHECK( KeyGrab::UngrabKeyTopmost( mApplication.GetWindow(), TestKeyLookupTable[i].daliKeyCode ) );
162 Application& mApplication;
167 int UtcDaliKeyGrabGrabKeyTopmostP(void)
169 Application application = Application::New( &gArgc, &gArgv );
170 MyTestApp testApp( application, GRAB_KEY_TOPMOST_P );
171 application.MainLoop();
175 int UtcDaliKeyGrabUngrabKeyTopmostP(void)
177 Application application = Application::New( &gArgc, &gArgv );
178 MyTestApp testApp( application, UNGRAB_KEY_TOPMOST_P );
179 application.MainLoop();