Renamed KeyEvent enum values to comply with coding standards.
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-KeyInputFocusManager.cpp
index cf1a006..5a0cf33 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -69,9 +69,7 @@ struct SignalData
   {
     functorCalled = false;
 
-    receivedKeyEvent.keyModifier = 0;
-    receivedKeyEvent.keyPressedName.clear();
-    receivedKeyEvent.keyPressed.clear();
+    receivedKeyEvent.Reset();
 
   }
 
@@ -139,13 +137,14 @@ int UtcDaliKeyInputFocusManagerGet(void)
 
   // Check that focus manager is a singleton
   DALI_TEST_CHECK(manager == newManager);
+
   END_TEST;
 }
 
 int UtcDaliKeyInputFocusManagerSetFocus01(void)
 {
   ToolkitTestApplication application;
-  Stage stage = Stage::GetCurrent();
+  Integration::Scene stage = application.GetScene();
 
   tet_infoline(" Check that there is no focused control. Set focus to control. Check it is now the focused actor and receives KeyInputFocusGained signal");
 
@@ -157,7 +156,7 @@ int UtcDaliKeyInputFocusManagerSetFocus01(void)
 
   DummyControl dummy = DummyControl::New(true);
   Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
-  dummy.SetSize(100.0f, 100.0f);
+  dummy.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
   stage.Add( dummy );
   DALI_TEST_CHECK( ! dummyImpl.keyInputFocusGained );
 
@@ -175,7 +174,7 @@ int UtcDaliKeyInputFocusManagerSetFocus01(void)
 int UtcDaliKeyInputFocusManagerSetFocus02(void)
 {
   ToolkitTestApplication application;
-  Stage stage = Stage::GetCurrent();
+  Integration::Scene stage = application.GetScene();
 
   tet_infoline(" Set focus to control. Check it is now the focused actor and receives KeyInputFocusGained signal. Set focuse to another control - check that the first control receives KeyInputFocusLost");
 
@@ -184,7 +183,7 @@ int UtcDaliKeyInputFocusManagerSetFocus02(void)
 
   DummyControl dummy1 = DummyControl::New(true);
   Impl::DummyControl& dummy1Impl = static_cast<Impl::DummyControl&>(dummy1.GetImplementation());
-  dummy1.SetSize(100.0f, 100.0f);
+  dummy1.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
   stage.Add( dummy1 );
   DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
   DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
@@ -196,7 +195,7 @@ int UtcDaliKeyInputFocusManagerSetFocus02(void)
 
   DummyControl dummy2 = DummyControl::New(true);
   Impl::DummyControl& dummy2Impl = static_cast<Impl::DummyControl&>(dummy2.GetImplementation());
-  dummy2.SetSize(100.0f, 100.0f);
+  dummy2.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
   stage.Add( dummy2 );
   DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
   DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
@@ -216,7 +215,7 @@ int UtcDaliKeyInputFocusManagerKeyEventPropagation01(void)
 {
 
   ToolkitTestApplication application;
-  Stage stage = Stage::GetCurrent();
+  Integration::Scene stage = application.GetScene();
 
   tet_infoline("Test KeyEvent propagation. If focused control doesn't consume KeyEvent, KeyEvent will be recursively delivered to the control and its parents, until the event is consumed or the stage is reached. In this case, KeyEvent is delivered to KeyboardFocusManager via Stage's KeyEventSignal");
 
@@ -227,20 +226,20 @@ int UtcDaliKeyInputFocusManagerKeyEventPropagation01(void)
   stage.KeyEventSignal().Connect( &stageCallback, &KeyEventCallback::Callback );
 
   DummyControl dummy1 = DummyControl::New(true);
-  dummy1.SetSize(100.0f, 100.0f);
+  dummy1.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
   KeyEventCallback callback1( false );
   dummy1.KeyEventSignal().Connect( &callback1, &KeyEventCallback::Callback );
   stage.Add( dummy1 );
 
   DummyControl dummy2 = DummyControl::New(true);
-  dummy2.SetSize(100.0f, 100.0f);
+  dummy2.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
   KeyEventCallback callback2( false );
   dummy2.KeyEventSignal().Connect( &callback2, &KeyEventCallback::Callback );
   dummy1.Add( dummy2 );
 
   DummyControl dummy3 = DummyControl::New(true);
   Impl::DummyControl& dummy3Impl = static_cast<Impl::DummyControl&>(dummy3.GetImplementation());
-  dummy3.SetSize(100.0f, 100.0f);
+  dummy3.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
   KeyEventCallback callback3( false );
   dummy3.KeyEventSignal().Connect( &callback3, &KeyEventCallback::Callback );
   dummy2.Add( dummy3 );
@@ -250,7 +249,7 @@ int UtcDaliKeyInputFocusManagerKeyEventPropagation01(void)
   manager.SetFocus( dummy3 );
   DALI_TEST_CHECK( dummy3Impl.keyInputFocusGained );
 
-  Integration::KeyEvent event( "a", "a", 0, 0, 0, Integration::KeyEvent::Up, "", DevelDevice::Class::TOUCH, DevelDevice::Subclass::NONE );
+  Integration::KeyEvent event( "a", "", "a", 0, 0, 0, Integration::KeyEvent::UP, "", "", Device::Class::TOUCH, Device::Subclass::NONE );
   application.ProcessEvent(event);
 
   DALI_TEST_CHECK( callback1.mIsCalled );
@@ -265,7 +264,7 @@ int UtcDaliKeyInputFocusManagerKeyEventPropagation02(void)
 {
 
   ToolkitTestApplication application;
-  Stage stage = Stage::GetCurrent();
+  Integration::Scene stage = application.GetScene();
 
   tet_infoline("Test KeyEvent propagation. If focused control doesn't consume KeyEvent, KeyEvent will be recursively delivered to the control and its parents, until the event is consumed or the stage is reached. In this case, KeyEvent is delivered from dummy3 to dummy2");
 
@@ -273,20 +272,20 @@ int UtcDaliKeyInputFocusManagerKeyEventPropagation02(void)
   DALI_TEST_CHECK(manager);
 
   DummyControl dummy1 = DummyControl::New(true);
-  dummy1.SetSize(100.0f, 100.0f);
+  dummy1.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
   KeyEventCallback callback1( false );
   dummy1.KeyEventSignal().Connect( &callback1, &KeyEventCallback::Callback );
   stage.Add( dummy1 );
 
   DummyControl dummy2 = DummyControl::New(true);
-  dummy2.SetSize(100.0f, 100.0f);
+  dummy2.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
   KeyEventCallback callback2( true );
   dummy2.KeyEventSignal().Connect( &callback2, &KeyEventCallback::Callback );
   dummy1.Add( dummy2 );
 
   DummyControl dummy3 = DummyControl::New(true);
   Impl::DummyControl& dummy3Impl = static_cast<Impl::DummyControl&>(dummy3.GetImplementation());
-  dummy3.SetSize(100.0f, 100.0f);
+  dummy3.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
   KeyEventCallback callback3( false );
   dummy3.KeyEventSignal().Connect( &callback3, &KeyEventCallback::Callback );
   dummy2.Add( dummy3 );
@@ -296,7 +295,7 @@ int UtcDaliKeyInputFocusManagerKeyEventPropagation02(void)
   manager.SetFocus( dummy3 );
   DALI_TEST_CHECK( dummy3Impl.keyInputFocusGained );
 
-  Integration::KeyEvent event( "a", "a", 0, 0, 0, Integration::KeyEvent::Up, "", DevelDevice::Class::TOUCH, DevelDevice::Subclass::NONE );
+  Integration::KeyEvent event( "a", "", "a", 0, 0, 0, Integration::KeyEvent::UP, "", "", Device::Class::TOUCH, Device::Subclass::NONE );
   application.ProcessEvent(event);
 
   DALI_TEST_CHECK( !callback1.mIsCalled );
@@ -309,7 +308,7 @@ int UtcDaliKeyInputFocusManagerKeyEventPropagation02(void)
 int UtcDaliKeyInputFocusManagerGetCurrentFocusControl(void)
 {
   ToolkitTestApplication application;
-  Stage stage = Stage::GetCurrent();
+  Integration::Scene stage = application.GetScene();
 
   tet_infoline(" Add 2 controls, check they each get focused. Re-focus the first control - ensure it's now got focus (check signals)");
 
@@ -318,14 +317,14 @@ int UtcDaliKeyInputFocusManagerGetCurrentFocusControl(void)
 
   DummyControl dummy1 = DummyControl::New(true);
   Impl::DummyControl& dummy1Impl = static_cast<Impl::DummyControl&>(dummy1.GetImplementation());
-  dummy1.SetSize(100.0f, 100.0f);
+  dummy1.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
   stage.Add( dummy1 );
   DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
   DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
 
   DummyControl dummy2 = DummyControl::New(true);
   Impl::DummyControl& dummy2Impl = static_cast<Impl::DummyControl&>(dummy2.GetImplementation());
-  dummy2.SetSize(100.0f, 100.0f);
+  dummy2.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
   stage.Add( dummy2 );
   DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
   DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
@@ -361,7 +360,7 @@ int UtcDaliKeyInputFocusManagerGetCurrentFocusControl(void)
 int UtcDaliKeyInputFocusManagerRemoveFocus(void)
 {
   ToolkitTestApplication application;
-  Stage stage = Stage::GetCurrent();
+  Integration::Scene stage = application.GetScene();
 
   tet_infoline(" Add focus controls. Test that removing focus from control which has focus. ");
 
@@ -370,7 +369,7 @@ int UtcDaliKeyInputFocusManagerRemoveFocus(void)
 
   DummyControl dummy1 = DummyControl::New(true);
   Impl::DummyControl& dummy1Impl = static_cast<Impl::DummyControl&>(dummy1.GetImplementation());
-  dummy1.SetSize(100.0f, 100.0f);
+  dummy1.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
   stage.Add( dummy1 );
   DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
   DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
@@ -392,7 +391,7 @@ int UtcDaliKeyInputFocusManagerSignalKeyInputFocusChanged(void)
 {
   ToolkitTestApplication application;
   KeyInputFocusManager manager = KeyInputFocusManager::Get();
-  Stage stage = Stage::GetCurrent();
+  Integration::Scene stage = application.GetScene();
 
   tet_infoline(" UtcDaliKeyInputFocusManagerSignalKeyInputFocusChanged");
 
@@ -430,3 +429,49 @@ int UtcDaliKeyInputFocusManagerSignalKeyInputFocusChanged(void)
   DALI_TEST_CHECK( lostActor == Control() );
   END_TEST;
 }
+
+int UtcDaliKeyInputFocusManagerSignalKeyInputFocusChangedforNewWindow(void)
+{
+  ToolkitTestApplication application;
+  KeyInputFocusManager manager = KeyInputFocusManager::Get();
+
+  tet_infoline(" UtcDaliKeyInputFocusManagerSignalKeyInputFocusChanged");
+
+  PushButton pushButton1 = PushButton::New();
+  PushButton pushButton2 = PushButton::New();
+
+  Window window = Window::New(PositionSize(0,0,0,0) ,"", false);
+  DALI_TEST_CHECK( window );
+
+  window.Add( pushButton1 );
+  window.Add( pushButton2 );
+
+  PushButton gainActor, lostActor;
+  KeyInputFocusChangedCallback callback( gainActor, lostActor );
+  manager.KeyInputFocusChangedSignal().Connect( &callback, &KeyInputFocusChangedCallback::Callback );
+
+  manager.SetFocus(pushButton1);
+
+  DALI_TEST_CHECK( gainActor == pushButton1 );
+  DALI_TEST_CHECK( lostActor == Control() );
+
+  gainActor.Reset();
+  lostActor.Reset();
+
+  manager.SetFocus(pushButton2);
+
+  DALI_TEST_CHECK( gainActor == pushButton2 );
+  DALI_TEST_CHECK( lostActor == pushButton1 );
+
+  gainActor.Reset();
+  lostActor.Reset();
+
+  // Removing the focus actor from the window would also result in signal emission.
+  window.Remove( pushButton1 );
+  window.Remove( pushButton2 );
+  DALI_TEST_CHECK( gainActor == Control() );
+  DALI_TEST_CHECK( lostActor == Control() );
+
+  window.Reset();
+  END_TEST;
+}