+ stage.Remove(pushButton1);
+ stage.Remove(pushButton2);
+
+ DALI_TEST_CHECK(gainActor == Control());
+ 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;
+}
+
+int UtcDaliKeyInputFocusManagerKeyEventOtherWindow(void)
+{
+ ToolkitTestApplication application;
+
+ tet_infoline(" UtcDaliKeyInputFocusManagerSignalKeyEventOtherWindow");
+
+ Dali::Integration::Scene scene = application.GetScene();
+
+ KeyInputFocusManager manager = KeyInputFocusManager::Get();
+ DALI_TEST_CHECK(manager);
+
+ PushButton pushButton1 = PushButton::New();
+ scene.Add(pushButton1);
+
+ KeyEventCallback windowCallback(false);
+ pushButton1.KeyEventSignal().Connect(&windowCallback, &KeyEventCallback::Callback);
+
+ manager.SetFocus(pushButton1);
+
+ Integration::KeyEvent event("a", "", "a", 0, 0, 0, Integration::KeyEvent::UP, "", "", Device::Class::TOUCH, Device::Subclass::NONE);
+ event.windowId = 3;
+
+ application.ProcessEvent(event);
+
+ DALI_TEST_CHECK(!windowCallback.mIsCalled);