X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-KeyboardFocusManager.cpp;h=60e9eea3dfd2305bf168bea0559e336ffcc6a2c6;hb=fac892daf82a0d6b8edc049bf29cca33887d37fa;hp=05ae1c4c36423e70de49f81b7d91f5658a5fc740;hpb=4ea929d4b160819414b7daf0e1473c595326dcb3;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 05ae1c4..60e9eea 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp @@ -2260,94 +2260,132 @@ int UtcDaliKeyboardFocusManagerWithUserInteractionEnabled(void) END_TEST; } - -int UtcDaliKeyboardFocusManagerWithHide(void) +int UtcDaliKeyboardFocusManagerFocusFinderRootActor(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliKeyboardFocusManagerWithHide"); + tet_infoline(" UtcDaliKeyboardFocusManagerFocusFinderRootActor"); + + // Register Type + TypeInfo type; + type = TypeRegistry::Get().GetTypeInfo("KeyboardFocusManager"); + DALI_TEST_CHECK(type); + BaseHandle handle = type.CreateInstance(); + DALI_TEST_CHECK(handle); KeyboardFocusManager manager = KeyboardFocusManager::Get(); DALI_TEST_CHECK(manager); - // Create the first control and add it to the stage - Control first = Control::New(); - first.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true); - application.GetScene().Add(first); + bool focusChangedSignalVerified = false; + FocusChangedCallback focusChangedCallback(focusChangedSignalVerified); + manager.FocusChangedSignal().Connect(&focusChangedCallback, &FocusChangedCallback::Callback); - // Create the second control and add it to the first control. - Control second = Control::New(); - second.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true); - first.Add(second); + PushButton button1 = PushButton::New(); + PushButton button2 = PushButton::New(); + button1.SetProperty(Actor::Property::SIZE, Vector2(50, 50)); + button2.SetProperty(Actor::Property::SIZE, Vector2(50, 50)); - // flush the queue and render once - application.SendNotification(); - application.Render(); + button1.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true); + button2.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true); - // Check that no actor is being focused yet. - DALI_TEST_CHECK(manager.GetCurrentFocusActor() == Actor()); + application.GetScene().Add(button1); + application.GetScene().Add(button2); - // Check that the focus is set on the actor - DALI_TEST_CHECK(manager.SetCurrentFocusActor(first) == true); - DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + Actor actor = Actor::New(); + actor.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true); + application.GetScene().Add(actor); - // If the currently focused actor becomes VISIBLE false, it loses focus. - first.SetProperty(Actor::Property::VISIBLE, false); - DALI_TEST_CHECK(manager.GetCurrentFocusActor() == Actor()); + PushButton buttonA = PushButton::New(); + PushButton buttonB = PushButton::New(); - first.SetProperty(Actor::Property::VISIBLE, true); - // Check that the focus is set on the actor - DALI_TEST_CHECK(manager.SetCurrentFocusActor(second) == true); - DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second); + buttonA.SetProperty(Actor::Property::SIZE, Vector2(50, 50)); + buttonB.SetProperty(Actor::Property::SIZE, Vector2(50, 50)); - // If the currently focused actor becomes VISIBLE false, When the parent is hidden, the child also loses focus. - first.SetProperty(Actor::Property::VISIBLE, false); - DALI_TEST_CHECK(manager.GetCurrentFocusActor() == Actor()); + buttonA.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true); + buttonB.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true); + actor.Add(buttonA); + actor.Add(buttonB); - END_TEST; -} + // set position + // button1 -- button2 + button1.SetProperty(Actor::Property::POSITION, Vector2(0.0f, 0.0f)); + button2.SetProperty(Actor::Property::POSITION, Vector2(100.0f, 0.0f)); + button1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + button2.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); -int UtcDaliKeyboardFocusManagerWithVisible(void) -{ - ToolkitTestApplication application; + // buttonA -- buttonB + buttonA.SetProperty(Actor::Property::POSITION, Vector2(0.0f, 50.0f)); + buttonB.SetProperty(Actor::Property::POSITION, Vector2(100.0f, 50.0f)); + buttonA.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + buttonB.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); - tet_infoline(" UtcDaliKeyboardFocusManagerWithVisible"); + // flush the queue and render once + application.SendNotification(); + application.Render(); - KeyboardFocusManager manager = KeyboardFocusManager::Get(); - DALI_TEST_CHECK(manager); + // Set the focus to the button1 + // [button1] -- button2 + DALI_TEST_CHECK(manager.SetCurrentFocusActor(button1) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == button1); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == Actor()); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button1); + focusChangedCallback.Reset(); - // Create the first actor and add it to the stage - Actor first = Actor::New(); - first.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true); - application.GetScene().Add(first); + // without set the navigation properties, but we can focus move + // enable the default algorithm + Dali::Toolkit::DevelKeyboardFocusManager::EnableDefaultAlgorithm(manager, true); + DALI_TEST_CHECK(Dali::Toolkit::DevelKeyboardFocusManager::IsDefaultAlgorithmEnabled(manager)); - // Create the second actor and add it to the first actor. - Actor second = Actor::New(); - second.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true); - first.Add(second); + // Move the focus towards right + // button1 -- [button2] + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == true); - // Check that no actor is being focused yet. + // Confirm whether focus is moved to button2 + DALI_TEST_EQUALS(button2.GetProperty(DevelControl::Property::STATE), (int)DevelControl::FOCUSED, TEST_LOCATION); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == button1); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button2); + focusChangedCallback.Reset(); + + // Clears focus. + manager.ClearFocus(); + + // There is no actor focused. + // button1 -- button2 + // buttonA -- buttonB DALI_TEST_CHECK(manager.GetCurrentFocusActor() == Actor()); - // Check that the focus is set on the first actor - DALI_TEST_CHECK(manager.SetCurrentFocusActor(first) == true); - DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + // Sets the actor to root. + Dali::Toolkit::DevelKeyboardFocusManager::SetFocusFinderRootActor(manager, actor); - // Set visible false. - first.SetProperty(Actor::Property::VISIBLE, false); + // Move the focus towards right + // [buttonA] -- buttonB + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == true); - // Check that it will fail to set focus on the second actor as it's not focusable - DALI_TEST_CHECK(manager.SetCurrentFocusActor(second) == false); - DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + // Confirm whether focus is moved to buttonA + // Because the root is an actor, the focus is moved to buttonA, a child of the actor. + DALI_TEST_EQUALS(buttonA.GetProperty(DevelControl::Property::STATE), (int)DevelControl::FOCUSED, TEST_LOCATION); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == Actor()); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == buttonA); + focusChangedCallback.Reset(); - // Set visible true. - first.SetProperty(Actor::Property::VISIBLE, true); - // Check that the focus is set on the second actor - DALI_TEST_CHECK(manager.SetCurrentFocusActor(second) == true); - DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second); + // Move the focus towards right, The focus move will success. + // buttonA -- [buttonB] + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == true); + // Confirm whether focus is moved to buttonB + DALI_TEST_EQUALS(buttonB.GetProperty(DevelControl::Property::STATE), (int)DevelControl::FOCUSED, TEST_LOCATION); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == buttonA); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == buttonB); + focusChangedCallback.Reset(); + + // reset + Dali::Toolkit::DevelKeyboardFocusManager::ResetFocusFinderRootActor(manager); END_TEST; -} \ No newline at end of file +}