X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Faccessibility%2Fbridge%2Faccessibility-common.h;h=eabad2fdbed5e378833ff9260d2e187d9e9c1f2d;hb=8b6d24a691bb4c9b2f757d30b9575da7dbc547a9;hp=7b5e5c80755f650fc6877ab25512c3f64bad1b87;hpb=fb63e2b3e53c373612ed70a5b44aeae5d2df5636;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/accessibility/bridge/accessibility-common.h b/dali/internal/accessibility/bridge/accessibility-common.h index 7b5e5c8..eabad2f 100644 --- a/dali/internal/accessibility/bridge/accessibility-common.h +++ b/dali/internal/accessibility/bridge/accessibility-common.h @@ -2,7 +2,7 @@ #define DALI_INTERNAL_ATSPI_ACCESSIBILITY_COMMON_H /* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -25,21 +25,27 @@ #include // INTERNAL INCLUDES -#include #include -#include #include +#include +#include + +/* DBus Interfaces */ #define A11yDbusName "org.a11y.Bus" #define A11yDbusPath "/org/a11y/bus" #define A11yDbusStatusInterface "org.a11y.Status" #define AtspiDbusNameRegistry "org.a11y.atspi.Registry" +#define AtspiDbusPathRegistry "/org/a11y/atspi/registry" +#define AtspiDbusInterfaceRegistry "org.a11y.atspi.Registry" #define AtspiDbusPathRoot "/org/a11y/atspi/accessible/root" #define AtspiDbusInterfaceSocket "org.a11y.atspi.Socket" #define AtspiPath "/org/a11y/atspi/accessible" #define AtspiDbusInterfaceAccessible "org.a11y.atspi.Accessible" #define AtspiDbusInterfaceAction "org.a11y.atspi.Action" #define AtspiDbusInterfaceApplication "org.a11y.atspi.Application" +#define AtspiDbusInterfaceCache "org.a11y.atspi.Cache" +#define AtspiDbusPathCache "/org/a11y/atspi/cache" #define AtspiDbusInterfaceCollection "org.a11y.atspi.Collection" #define AtspiDbusInterfaceComponent "org.a11y.atspi.Component" #define AtspiDbusInterfaceDocument "org.a11y.atspi.Document" @@ -101,211 +107,217 @@ enum class SortOrder : uint32_t namespace DBus { +/** + * @brief The CurrentBridgePtr class is to save the current Accessibility Bridge. + */ class CurrentBridgePtr { - static Dali::Accessibility::Bridge*& get() + static Dali::Accessibility::Bridge*& Get() { - static thread_local Dali::Accessibility::Bridge* b = nullptr; - return b; + static thread_local Dali::Accessibility::Bridge* bridge = nullptr; + return bridge; } - Dali::Accessibility::Bridge* prev; - CurrentBridgePtr( const CurrentBridgePtr& ) = delete; - CurrentBridgePtr( CurrentBridgePtr&& ) = delete; - CurrentBridgePtr& operator=( const CurrentBridgePtr& ) = delete; - CurrentBridgePtr& operator=( CurrentBridgePtr&& ) = delete; + Dali::Accessibility::Bridge* mPrev; + CurrentBridgePtr(const CurrentBridgePtr&) = delete; + CurrentBridgePtr(CurrentBridgePtr&&) = delete; + CurrentBridgePtr& operator=(const CurrentBridgePtr&) = delete; + CurrentBridgePtr& operator=(CurrentBridgePtr&&) = delete; public: - CurrentBridgePtr( Dali::Accessibility::Bridge* b ) - : prev( get() ) + CurrentBridgePtr(Dali::Accessibility::Bridge* bridge) + : mPrev(Get()) { - get() = b; + Get() = bridge; } ~CurrentBridgePtr() { - get() = prev; + Get() = mPrev; } - static Dali::Accessibility::Bridge* current() + static Dali::Accessibility::Bridge* GetCurrentBridge() { - return get(); + return Get(); } -}; +}; // CurrentBridgePtr + +// Templates for setting and getting Accessible values namespace detail { - -template < typename T > -struct signature_accessible_impl : signature_helper> +template +struct SignatureAccessibleImpl : signature_helper> { - using subtype = std::pair< std::string, ObjectPath >; + using subtype = std::pair; static constexpr auto name_v = concat("AtspiAccessiblePtr"); - static constexpr auto sig_v = concat("(so)"); + static constexpr auto sig_v = concat("(so)"); /** - * @brief Marshals value v as marshalled type into message + * @brief Marshals value address as marshalled type into message */ - static void set( const DBusWrapper::MessageIterPtr& iter, T* t ) + static void set(const DBusWrapper::MessageIterPtr& iter, T* accessible) { - if( t ) + if(accessible) { - auto v = t->GetAddress(); - signature< subtype >::set( iter, { v.GetBus(), ObjectPath{std::string{ ATSPI_PREFIX_PATH } +v.GetPath()} } ); + auto address = accessible->GetAddress(); + signature::set(iter, {address.GetBus(), ObjectPath{std::string{ATSPI_PREFIX_PATH} + address.GetPath()}}); } else { - signature< subtype >::set( iter, { "", ObjectPath{ ATSPI_NULL_PATH } } ); + signature::set(iter, {"", ObjectPath{ATSPI_NULL_PATH}}); } } /** - * @brief Marshals value from marshalled type into variable v + * @brief Marshals value from marshalled type into variable path */ - static bool get( const DBusWrapper::MessageIterPtr& iter, T*& v ) + static bool get(const DBusWrapper::MessageIterPtr& iter, T*& path) { subtype tmp; - if( !signature< subtype >::get( iter, tmp ) ) + if(!signature::get(iter, tmp)) { return false; } - if( tmp.second.value == ATSPI_NULL_PATH ) + if(tmp.second.value == ATSPI_NULL_PATH) { - v = nullptr; + path = nullptr; return true; } - if( tmp.second.value.substr( 0, strlen( ATSPI_PREFIX_PATH ) ) != ATSPI_PREFIX_PATH ) + if(tmp.second.value.substr(0, strlen(ATSPI_PREFIX_PATH)) != ATSPI_PREFIX_PATH) { return false; } - auto b = CurrentBridgePtr::current(); - if( b->GetBusName() != tmp.first ) + auto currentBridge = CurrentBridgePtr::GetCurrentBridge(); + if(currentBridge->GetBusName() != tmp.first) { return false; } - v = b->FindByPath( tmp.second.value.substr( strlen( ATSPI_PREFIX_PATH ) ) ); - return v != nullptr; + path = currentBridge->FindByPath(tmp.second.value.substr(strlen(ATSPI_PREFIX_PATH))); + return path != nullptr; } }; -template <> -struct signature< Dali::Accessibility::Accessible* > : public signature_accessible_impl< Dali::Accessibility::Accessible > +template<> +struct signature : public SignatureAccessibleImpl { }; -template <> -struct signature< Dali::Accessibility::Address > : signature_helper> +template<> +struct signature : signature_helper> { - using subtype = std::pair< std::string, ObjectPath >; + using subtype = std::pair; static constexpr auto name_v = concat("AtspiAccessiblePtr"); - static constexpr auto sig_v = concat("(so)"); + static constexpr auto sig_v = concat("(so)"); /** - * @brief Marshals value v as marshalled type into message + * @brief Marshals value address as marshalled type into message */ - static void set( const DBusWrapper::MessageIterPtr& iter, const Dali::Accessibility::Address& v ) + static void set(const DBusWrapper::MessageIterPtr& iter, const Dali::Accessibility::Address& address) { - if( v ) + if(address) { - signature< subtype >::set( iter, { v.GetBus(), ObjectPath{ std::string{ ATSPI_PREFIX_PATH } + v.GetPath() } } ); + signature::set(iter, {address.GetBus(), ObjectPath{std::string{ATSPI_PREFIX_PATH} + address.GetPath()}}); } else { - signature< subtype >::set( iter, { v.GetBus(), ObjectPath{ ATSPI_NULL_PATH } } ); + signature::set(iter, {address.GetBus(), ObjectPath{ATSPI_NULL_PATH}}); } } /** - * @brief Marshals value from marshalled type into variable v + * @brief Marshals value from marshalled type into variable address */ - static bool get( const DBusWrapper::MessageIterPtr& iter, Dali::Accessibility::Address& v ) + static bool get(const DBusWrapper::MessageIterPtr& iter, Dali::Accessibility::Address& address) { subtype tmp; - if( !signature< subtype >::get( iter, tmp ) ) + if(!signature::get(iter, tmp)) { return false; } - if( tmp.second.value == ATSPI_NULL_PATH ) + if(tmp.second.value == ATSPI_NULL_PATH) { - v = {}; + address = {}; return true; } - if( tmp.second.value.substr( 0, strlen( ATSPI_PREFIX_PATH ) ) != ATSPI_PREFIX_PATH ) + if(tmp.second.value.substr(0, strlen(ATSPI_PREFIX_PATH)) != ATSPI_PREFIX_PATH) { return false; } - v = { std::move( tmp.first ), tmp.second.value.substr( strlen( ATSPI_PREFIX_PATH ) ) }; - return true; + address = {std::move(tmp.first), tmp.second.value.substr(strlen(ATSPI_PREFIX_PATH))}; + return true; } }; -template <> -struct signature< Dali::Accessibility::States > : signature_helper> +template<> +struct signature : signature_helper> { using subtype = std::array; static constexpr auto name_v = signature::name_v; - static constexpr auto sig_v = signature::sig_v; + static constexpr auto sig_v = signature::sig_v; /** - * @brief Marshals value v as marshalled type into message + * @brief Marshals value state as marshalled type into message */ - static void set( const DBusWrapper::MessageIterPtr& iter, const Dali::Accessibility::States& v ) + static void set(const DBusWrapper::MessageIterPtr& iter, const Dali::Accessibility::States& states) { - signature< subtype >::set( iter, v.GetRawData() ); + signature::set(iter, states.GetRawData()); } /** - * @brief Marshals value from marshalled type into variable v + * @brief Marshals value from marshalled type into variable state */ - static bool get( const DBusWrapper::MessageIterPtr& iter, Dali::Accessibility::States& v ) + static bool get(const DBusWrapper::MessageIterPtr& iter, Dali::Accessibility::States& state) { subtype tmp; - if( !signature< subtype >::get( iter, tmp ) ) + if(!signature::get(iter, tmp)) { return false; } - v = Dali::Accessibility::States{ tmp }; + state = Dali::Accessibility::States{tmp}; return true; } }; -} -} +} // namespace detail +} // namespace DBus struct _Logger { - const char* file; - int line; - std::ostringstream tmp; + const char* mFile; + int mLine; + std::ostringstream mTmp; - _Logger( const char* f, int l ) - : file( f ), - line( l ){} + _Logger(const char* file, int line) + : mFile(file), + mLine(line) + { + } ~_Logger() { - Dali::Integration::Log::LogMessage( Dali::Integration::Log::DebugInfo, "%s:%d: %s", file, line, tmp.str().c_str() ); + Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugInfo, "%s:%d: %s", mFile, mLine, mTmp.str().c_str()); } - template < typename T > - _Logger& operator<<( T&& t ) + template + _Logger& operator<<(T&& t) { - tmp << std::forward< T >( t ); + mTmp << std::forward(t); return *this; } }; struct _LoggerEmpty { - template < typename T > - _LoggerEmpty& operator<<( T&& t ) + template + _LoggerEmpty& operator<<(T&& t) { return *this; } @@ -313,23 +325,23 @@ struct _LoggerEmpty struct _LoggerScope { - const char* file; - int line; + const char* mFile; + int mLine; - _LoggerScope( const char* f, int l ) - : file( f ), - line( l ) + _LoggerScope(const char* file, int line) + : mFile(file), + mLine(line) { - Dali::Integration::Log::LogMessage( Dali::Integration::Log::DebugInfo, "%s:%d: +", file, line ); + Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugInfo, "%s:%d: +", mFile, mLine); } ~_LoggerScope() { - Dali::Integration::Log::LogMessage( Dali::Integration::Log::DebugInfo, "%s:%d: -", file, line ); + Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugInfo, "%s:%d: -", mFile, mLine); } }; -#define LOG() _Logger( __FILE__, __LINE__ ) -#define SCOPE() _LoggerScope _l##__LINE__( __FILE__, __LINE__ ) +#define LOG() _Logger(__FILE__, __LINE__) +#define SCOPE() _LoggerScope _l##__LINE__(__FILE__, __LINE__) #endif // DALI_INTERNAL_ATSPI_ACCESSIBILITY_COMMON_H