X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftoolkit-adaptor.cpp;h=1fe86c3711bd3f86f8ecac1bf334872b0e3c077e;hp=6507583dc8976e50aa78c7039e41effb7afd3fb3;hb=8a647e87a01c5c78451653c1264a9eea81ac9b20;hpb=85500e910bbe3b56bb922e988dc8d1445cfb6763 diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-adaptor.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-adaptor.cpp index 6507583..1fe86c3 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-adaptor.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-adaptor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 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. @@ -15,20 +15,21 @@ * */ -#include +#include + +#include // Don't want to include the actual window.h which otherwise will be indirectly included by adaptor.h. #define DALI_WINDOW_H -#include - -#include - -#include +#include +#include +#include #include #include +#include #include -#include +#include namespace Dali { @@ -38,90 +39,189 @@ namespace Internal namespace Adaptor { -bool Adaptor::mAvailable = false; -Vector Adaptor::mCallbacks = Vector(); -Dali::WindowContainer Adaptor::mWindows; -Dali::Adaptor::WindowCreatedSignalType* Adaptor::mWindowCreatedSignal = nullptr; +/////////////////////////////////////////////////////////////////////////////// +// +// Dali::Internal::Adaptor::Adaptor Stub +// +/////////////////////////////////////////////////////////////////////////////// + +Dali::Adaptor* gAdaptor = nullptr; + +Dali::Adaptor& Adaptor::New() +{ + DALI_ASSERT_ALWAYS( ! gAdaptor ); + gAdaptor = new Dali::Adaptor; + return *gAdaptor; +} Dali::Adaptor& Adaptor::Get() { - Dali::Adaptor* adaptor = new Dali::Adaptor; - Adaptor::mAvailable = true; - return *adaptor; + DALI_ASSERT_ALWAYS( gAdaptor ); + return *gAdaptor; +} + +Adaptor::Adaptor() +{ +} + +Adaptor::~Adaptor() +{ + gAdaptor = nullptr; +} + +void Adaptor::Start( Dali::Window window ) +{ + AddWindow( &GetImplementation( window ) ); +} + +Integration::Scene Adaptor::GetScene( Dali::Window window ) +{ + return window.GetScene(); +} + +bool Adaptor::AddIdle( CallbackBase* callback, bool hasReturnValue ) +{ + mCallbacks.PushBack( callback ); + return true; +} + +void Adaptor::RemoveIdle( CallbackBase* callback ) +{ + mCallbacks.Erase( std::find_if( mCallbacks.Begin(), mCallbacks.End(), + [ &callback ] ( CallbackBase* current ) { return callback == current; } ) ); +} + +void Adaptor::RunIdles() +{ + for( auto& callback : mCallbacks ) + { + CallbackBase::Execute( *callback ); + } + + mCallbacks.Clear(); } Dali::RenderSurfaceInterface& Adaptor::GetSurface() { - Dali::RenderSurfaceInterface* renderSurface = reinterpret_cast ( new Dali::TestRenderSurface( Dali::PositionSize( 0, 0, 480, 800 ) ) ); - return *renderSurface; + DALI_ASSERT_ALWAYS( ! mWindows.empty() ); + + return reinterpret_cast < Dali::RenderSurfaceInterface& >( mWindows.front()->GetRenderSurface() ); } Dali::WindowContainer Adaptor::GetWindows() { - return Adaptor::mWindows; + Dali::WindowContainer windows; + + for ( auto iter = mWindows.begin(); iter != mWindows.end(); ++iter ) + { + // Downcast to Dali::Window + Dali::Window window( dynamic_cast( *iter ) ); + if ( window ) + { + windows.push_back( window ); + } + } + + return windows; } -Dali::Adaptor::AdaptorSignalType& Adaptor::AdaptorSignal() +Dali::SceneHolderList Adaptor::GetSceneHolders() { - Dali::Adaptor::AdaptorSignalType* signal = new Dali::Adaptor::AdaptorSignalType; - return *signal; + Dali::SceneHolderList sceneHolderList; + + for( auto iter = mWindows.begin(); iter != mWindows.end(); ++iter ) + { + sceneHolderList.push_back( Dali::Integration::SceneHolder( *iter ) ); + } + + return sceneHolderList; } -Dali::Adaptor::WindowCreatedSignalType& Adaptor::WindowCreatedSignal() +Dali::Internal::Adaptor::SceneHolder* Adaptor::GetWindow( Dali::Actor& actor ) { - if ( !Adaptor::mWindowCreatedSignal ) + Dali::Integration::Scene scene = Dali::Integration::Scene::Get( actor ); + + for( auto window : mWindows ) { - Adaptor::mWindowCreatedSignal = new Dali::Adaptor::WindowCreatedSignalType; + if ( scene == window->GetScene() ) + { + return window; + } } - return *Adaptor::mWindowCreatedSignal; + return nullptr; } -} // namespace Adaptor -} // namespace Internal +void Adaptor::AddWindow( Internal::Adaptor::SceneHolder* window ) +{ + if ( window ) + { + mWindows.push_back( window ); + + Dali::Integration::SceneHolder newWindow( window ); + mWindowCreatedSignal.Emit( newWindow ); + } +} -Adaptor& Adaptor::New( Window window ) +void Adaptor::RemoveWindow( Internal::Adaptor::SceneHolder* window ) { - return Internal::Adaptor::Adaptor::Get(); + auto iter = std::find( mWindows.begin(), mWindows.end(), window ); + if( iter != mWindows.end() ) + { + mWindows.erase( iter ); + } } -Adaptor& Adaptor::New( Window window, Configuration::ContextLoss configuration ) +void Adaptor::RegisterProcessor( Integration::Processor& processor ) { - return Internal::Adaptor::Adaptor::Get(); + Integration::Core& core = mTestApplication->GetCore(); + core.RegisterProcessor( processor ); } -Adaptor& Adaptor::New( Window window, const Dali::RenderSurfaceInterface& surface ) +void Adaptor::UnregisterProcessor( Integration::Processor& processor ) { - return Internal::Adaptor::Adaptor::Get(); + Integration::Core& core = mTestApplication->GetCore(); + core.UnregisterProcessor( processor ); } -Adaptor& Adaptor::New( Window window, const Dali::RenderSurfaceInterface& surface, Configuration::ContextLoss configuration ) +void Adaptor::SetApplication( Dali::TestApplication& testApplication ) { - return Internal::Adaptor::Adaptor::Get(); + mTestApplication = &testApplication; } -Adaptor& Adaptor::New( Dali::Integration::SceneHolder window ) +Dali::Adaptor::AdaptorSignalType& Adaptor::ResizedSignal() { - return Internal::Adaptor::Adaptor::Get(); + return mResizedSignal; } -Adaptor& Adaptor::New( Dali::Integration::SceneHolder window, Configuration::ContextLoss configuration ) +Dali::Adaptor::AdaptorSignalType& Adaptor::LanguageChangedSignal() { - return Internal::Adaptor::Adaptor::Get(); + return mLanguageChangedSignal; } -Adaptor& Adaptor::New( Dali::Integration::SceneHolder window, const Dali::RenderSurfaceInterface& surface ) +Dali::Adaptor::WindowCreatedSignalType& Adaptor::WindowCreatedSignal() { - return Internal::Adaptor::Adaptor::Get(); + return mWindowCreatedSignal; } -Adaptor& Adaptor::New( Dali::Integration::SceneHolder window, const Dali::RenderSurfaceInterface& surface, Configuration::ContextLoss configuration ) +} // namespace Adaptor +} // namespace Internal + +/////////////////////////////////////////////////////////////////////////////// +// +// Dali::Adaptor Stub +// +/////////////////////////////////////////////////////////////////////////////// + +Adaptor::Adaptor() +: mImpl( new Internal::Adaptor::Adaptor ) { - return Internal::Adaptor::Adaptor::Get(); } Adaptor::~Adaptor() { + Internal::Adaptor::gAdaptor = nullptr; + delete mImpl; } void Adaptor::Start() @@ -142,34 +242,12 @@ void Adaptor::Stop() bool Adaptor::AddIdle( CallbackBase* callback, bool hasReturnValue ) { - const bool isAvailable = IsAvailable(); - - if( isAvailable ) - { - Internal::Adaptor::Adaptor::mCallbacks.PushBack( callback ); - } - - return isAvailable; + return mImpl->AddIdle( callback, hasReturnValue ); } void Adaptor::RemoveIdle( CallbackBase* callback ) { - const bool isAvailable = IsAvailable(); - - if( isAvailable ) - { - for( Vector::Iterator it = Internal::Adaptor::Adaptor::mCallbacks.Begin(), - endIt = Internal::Adaptor::Adaptor::mCallbacks.End(); - it != endIt; - ++it ) - { - if( callback == *it ) - { - Internal::Adaptor::Adaptor::mCallbacks.Remove( it ); - return; - } - } - } + mImpl->RemoveIdle( callback ); } void Adaptor::ReplaceSurface( Window window, Dali::RenderSurfaceInterface& surface ) @@ -182,27 +260,32 @@ void Adaptor::ReplaceSurface( Dali::Integration::SceneHolder window, Dali::Rende Adaptor::AdaptorSignalType& Adaptor::ResizedSignal() { - return Internal::Adaptor::Adaptor::AdaptorSignal(); + return mImpl->ResizedSignal(); } Adaptor::AdaptorSignalType& Adaptor::LanguageChangedSignal() { - return Internal::Adaptor::Adaptor::AdaptorSignal(); + return mImpl->LanguageChangedSignal(); } Adaptor::WindowCreatedSignalType& Adaptor::WindowCreatedSignal() { - return Internal::Adaptor::Adaptor::WindowCreatedSignal(); + return mImpl->WindowCreatedSignal(); } Dali::RenderSurfaceInterface& Adaptor::GetSurface() { - return Internal::Adaptor::Adaptor::GetSurface(); + return mImpl->GetSurface(); } Dali::WindowContainer Adaptor::GetWindows() const { - return Internal::Adaptor::Adaptor::GetWindows(); + return mImpl->GetWindows(); +} + +Dali::SceneHolderList Adaptor::GetSceneHolders() const +{ + return mImpl->GetSceneHolders(); } Any Adaptor::GetNativeWindowHandle() @@ -211,6 +294,11 @@ Any Adaptor::GetNativeWindowHandle() return window; } +Any Adaptor::GetNativeWindowHandle( Actor actor ) +{ + return GetNativeWindowHandle(); +} + void Adaptor::ReleaseSurfaceLock() { } @@ -226,7 +314,7 @@ Adaptor& Adaptor::Get() bool Adaptor::IsAvailable() { - return Internal::Adaptor::Adaptor::mAvailable; + return Internal::Adaptor::gAdaptor; } void Adaptor::NotifySceneCreated() @@ -258,7 +346,7 @@ class LogFactory : public LogFactoryInterface public: virtual void InstallLogFunction() const { - Dali::Integration::Log::LogFunction logFunction(&TestApplication::LogMessage); + Dali::Integration::Log::LogFunction logFunction(&ToolkitTestApplication::LogMessage); Dali::Integration::Log::InstallLogFunction(logFunction); } @@ -280,15 +368,14 @@ const LogFactoryInterface& Adaptor::GetLogFactory() return *gLogFactory; } -Adaptor::Adaptor() -: mImpl( NULL ) +void Adaptor::RegisterProcessor( Integration::Processor& processor ) { - Dali::PositionSize win_size; - win_size.width = 640; - win_size.height = 800; + mImpl->RegisterProcessor( processor ); +} - Dali::Window window = Dali::Window::New( win_size, "" ); - Internal::Adaptor::Adaptor::mWindows.push_back( window ); +void Adaptor::UnregisterProcessor( Integration::Processor& processor ) +{ + mImpl->UnregisterProcessor( processor ); } } // namespace Dali