X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-KeyboardFocusManager.cpp;h=a759616a055e2d8ac16e77335c2eb66c289c2e55;hb=19c7495f5e82eb301e7af38370ea2897e7324b7b;hp=a0738471b3de1d5b6b2f724b7d757e59beaa6579;hpb=1b032e3f72c144d2da593a1c20d15041a3de00a3;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp b/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp index a073847..a759616 100755 --- a/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp @@ -217,6 +217,34 @@ public: Actor mActivatedActor; }; +class KeyEventCallback : public Dali::ConnectionTracker +{ +public: + /** + * Constructor + * @param[in] returnValue Set return value of KeyEvent callback. + * */ + KeyEventCallback( bool consumed ) + : mConsumed( consumed ), + mIsCalled( false ) + { + } + + bool Callback( Control control, const KeyEvent& keyEvent ) + { + mIsCalled = true; + return mConsumed; + } + + void Callback( const KeyEvent& keyEvent ) + { + mIsCalled = true; + } + + bool mConsumed; + bool mIsCalled; +}; + // Used to connect to signals via the ConnectSignal Handle method struct CallbackFunctor { @@ -1517,5 +1545,74 @@ int UtcDaliKeyboardFocusManagerEnableFocusIndicator(void) END_TEST; } +int UtcDaliKeyboardFocusManagerCheckConsumedKeyEvent(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Ensure Window can't receive KeyEvent when Control already consumed it" ); + Dali::Integration::Scene scene = application.GetScene(); + + KeyboardFocusManager manager = KeyboardFocusManager::Get(); + DALI_TEST_CHECK( ! manager.GetCurrentFocusActor() ); + + // Create the first actor and add it to the stage + Control control = Control::New(); + control.SetKeyboardFocusable(true); + scene.Add(control); + + KeyEventCallback controlCallback( true ); + control.KeyEventSignal().Connect( &controlCallback, &KeyEventCallback::Callback ); + + KeyEventCallback sceneCallback( false ); + scene.KeyEventSignal().Connect( &sceneCallback, &KeyEventCallback::Callback ); + + manager.SetCurrentFocusActor( control ); + + // Press Any key to notice physical keyboard event is comming to KeyboardFocusManager + // It makes mIsFocusIndicatorEnabled true and add focus indicator to focused actor. + Integration::KeyEvent event1( "Right", "", "", 0, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + application.ProcessEvent(event1); + + DALI_TEST_CHECK( controlCallback.mIsCalled ); + DALI_TEST_CHECK( !sceneCallback.mIsCalled ); + + END_TEST; +} + +int UtcDaliKeyboardFocusManagerFocusPerWindow(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Ensure Memory focus actors for each window "); + KeyboardFocusManager manager = KeyboardFocusManager::Get(); + DALI_TEST_CHECK( ! manager.GetCurrentFocusActor() ); + + Window firstWindow = Window::New(PositionSize(0,0,300,500) ,"", false); + DALI_TEST_CHECK( firstWindow ); + Control first = Control::New(); + first.SetKeyboardFocusable(true); + firstWindow.Add(first); + + Window secondWindow = Window::New(PositionSize(0,0,400,600) ,"", false); + DALI_TEST_CHECK( secondWindow ); + Control second = Control::New(); + second.SetKeyboardFocusable(true); + secondWindow.Add( second ); + + DALI_TEST_CHECK(manager.SetCurrentFocusActor(first) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + + DALI_TEST_CHECK(manager.SetCurrentFocusActor(second) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second); + firstWindow.Raise(); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + + secondWindow.Remove( second ); + secondWindow.Raise(); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() != second); + + secondWindow.Reset(); + END_TEST; +}