Revert "[Tizen] Add DALi Autofill implementation"
[platform/core/uifw/dali-adaptor.git] / automated-tests / src / dali-adaptor / utc-Dali-KeyGrab.cpp
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 // EXTERNAL INCLUDES
19 #include <map>
20 #include <string.h>
21 #include <iostream>
22
23 // CLASS HEADER
24 #include <stdlib.h>
25 #include <iostream>
26 #include <dali.h>
27 #include <dali-test-suite-utils.h>
28 #include <dali/public-api/adaptor-framework/key-grab.h>
29
30 extern int gArgc;
31 extern char ** gArgv;
32
33 using namespace Dali;
34
35 void utc_dali_adaptor_keygrab_startup(void)
36 {
37   test_return_value = TET_UNDEF;
38 }
39
40 void utc_dali_adaptor_keygrab_cleanup(void)
41 {
42   test_return_value = TET_PASS;
43 }
44
45 // Copied from key-impl.cpp
46 struct KeyLookup
47 {
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
51 };
52
53 // Taken from key-impl.cpp
54 KeyLookup TestKeyLookupTable[]=
55 {
56   { "Escape",                DALI_KEY_ESCAPE,          false },  // item not defined in utilX
57   { "Menu",                  DALI_KEY_MENU,            false },  // item not defined in utilX
58
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  },
92
93   { "BackSpace",             DALI_KEY_BACKSPACE,       false },
94   { "Left",                  DALI_KEY_CURSOR_LEFT,     false },
95   { "Right",                 DALI_KEY_CURSOR_RIGHT,    false }
96 };
97
98 const std::size_t KEY_LOOKUP_COUNT = (sizeof( TestKeyLookupTable))/ (sizeof(KeyLookup));
99
100 enum TEST_TYPE
101 {
102   GRAB_KEY_TOPMOST_P,
103   UNGRAB_KEY_TOPMOST_P
104 };
105
106 struct MyTestApp : public ConnectionTracker
107 {
108   MyTestApp( Application& app, int type )
109   : mApplication( app ),
110     mTestType( type )
111   {
112     mApplication.InitSignal().Connect( this, &MyTestApp::OnInit );
113   }
114
115   void OnInit(Application& app)
116   {
117     mTimer = Timer::New( 500 );
118     mTimer.TickSignal().Connect( this, &MyTestApp::Tick );
119     mTimer.Start();
120
121     ExcuteTest();
122   }
123
124   bool Tick()
125   {
126     mTimer.Stop();
127     mApplication.Quit();
128     return true;
129   }
130
131   void ExcuteTest()
132   {
133     switch (mTestType)
134     {
135       case GRAB_KEY_TOPMOST_P:
136         TestGrabKeyTopmostP();
137         break;
138       case UNGRAB_KEY_TOPMOST_P:
139         TestUngrabKeyTopmostP();
140         break;
141     }
142   }
143
144   void TestGrabKeyTopmostP()
145   {
146     for ( std::size_t i = 0; i < KEY_LOOKUP_COUNT; ++i )
147     {
148       DALI_TEST_CHECK( KeyGrab::GrabKeyTopmost( mApplication.GetWindow(), TestKeyLookupTable[i].daliKeyCode ) );
149     }
150   }
151
152   void TestUngrabKeyTopmostP()
153   {
154     for ( std::size_t i = 0; i < KEY_LOOKUP_COUNT; ++i )
155     {
156       DALI_TEST_CHECK( KeyGrab::GrabKeyTopmost( mApplication.GetWindow(), TestKeyLookupTable[i].daliKeyCode ) );
157       DALI_TEST_CHECK( KeyGrab::UngrabKeyTopmost( mApplication.GetWindow(), TestKeyLookupTable[i].daliKeyCode ) );
158     }
159   }
160
161   // Data
162   Application& mApplication;
163   int mTestType;
164   Timer mTimer;
165 };
166
167 int UtcDaliKeyGrabGrabKeyTopmostP(void)
168 {
169   Application application = Application::New( &gArgc, &gArgv );
170   MyTestApp testApp( application, GRAB_KEY_TOPMOST_P );
171   application.MainLoop();
172   END_TEST;
173 }
174
175 int UtcDaliKeyGrabUngrabKeyTopmostP(void)
176 {
177   Application application = Application::New( &gArgc, &gArgv );
178   MyTestApp testApp( application, UNGRAB_KEY_TOPMOST_P );
179   application.MainLoop();
180   END_TEST;
181 }