From 49c96f757ec7f1f41bda734dd07794e84c4d31d3 Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Thu, 28 Jan 2010 14:12:41 +0100 Subject: autorecovery: merged DocumentMacroConfirmationRequest2 into DocumentMacroConfirmationRequest - no need to have two types which are effectively the same, and both rarely used --- uui/source/iahndl.cxx | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) (limited to 'uui/source') diff --git a/uui/source/iahndl.cxx b/uui/source/iahndl.cxx index 2db6cc79ac57..40051ce00b51 100644 --- a/uui/source/iahndl.cxx +++ b/uui/source/iahndl.cxx @@ -69,7 +69,6 @@ #include "com/sun/star/task/MasterPasswordRequest.hpp" #include "com/sun/star/task/NoMasterException.hpp" #include "com/sun/star/task/DocumentMacroConfirmationRequest.hpp" -#include "com/sun/star/task/DocumentMacroConfirmationRequest2.hpp" #include "com/sun/star/task/XInteractionAbort.hpp" #include "com/sun/star/task/XInteractionApprove.hpp" #include "com/sun/star/task/XInteractionDisapprove.hpp" @@ -1286,26 +1285,13 @@ bool UUIInteractionHelper::handleErrorHandlerRequests( handleMacroConfirmRequest( aMacroConfirmRequest.DocumentURL, aMacroConfirmRequest.DocumentStorage, - ODFVER_012_TEXT, + aMacroConfirmRequest.DocumentVersion.getLength() ? aMacroConfirmRequest.DocumentVersion : ODFVER_012_TEXT, aMacroConfirmRequest.DocumentSignatureInformation, rRequest->getContinuations() ); return true; } - star::task::DocumentMacroConfirmationRequest2 aMacroConfirmRequest2; - if (aAnyRequest >>= aMacroConfirmRequest2) - { - handleMacroConfirmRequest( - aMacroConfirmRequest2.DocumentURL, - aMacroConfirmRequest2.DocumentZipStorage, - aMacroConfirmRequest2.DocumentVersion, - aMacroConfirmRequest2.DocumentSignatureInformation, - rRequest->getContinuations() - ); - return true; - } - FutureDocumentVersionProductUpdateRequest aProductUpdateRequest; if (aAnyRequest >>= aProductUpdateRequest) { @@ -1378,10 +1364,10 @@ UUIInteractionHelper::handle_impl( OSL_ENSURE( xInitialization.is(), "Custom Interactionhandler does not implement mandatory interface XInitialization!" ); if (xInitialization.is()) { - uno::Sequence< uno::Any > propertyValues(1); - beans::PropertyValue aProperty; - - aProperty.Name = rtl::OUString::createFromAscii( "Parent" ); + uno::Sequence< uno::Any > propertyValues(1); + beans::PropertyValue aProperty; + + aProperty.Name = rtl::OUString::createFromAscii( "Parent" ); aProperty.Value <<= getParentXWindow(); propertyValues[ 0 ] <<= aProperty; -- cgit From af66a011a47f673a9a0ee2c6a0b27e23b11b6ebf Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Mon, 1 Feb 2010 21:32:33 +0100 Subject: autorecovery: more sophisticated configuration data for interaction handlers The generic css.task.InteractionHandler implementation in module uui is now able to instantiate "sub handlers", i.e. components to delegate a request to, based on the type of the request, and some configuration data. The "old" (and now deprecated) configuration scheme at org.openoffice.ucb.InteractionHandler did not contain type information, so any handlers registered there were always called when no default implementation for a given request was available. The "new" configuration scheme at org.openoffice.Interaction contains UNO type information. That is, a given handler implementation can declare itself responsible for an arbitrary set of UNO types, and for each of those types, whether it is also responsible for sub types. The generic interaction handler implementation uses this configuration data, when it encounteres an interaction request it cannot fullfill itself, to instantiate a component to delegate the request to. As with the "old" data, such a component is required to support the css.task.XInteractionHandler2 interface. Also, if it supports css.lang.XInitialization, then it will be initialized with a name-value pair, the name being "Parent", the value being the XWindow interface of the parent window for any message boxes. As an examplary implementation for this feature, the css.sdb.InteractionHandler has been deprecated. Now the css.sdb.DatabaseInteractionHandler is reponsible for database-related interactions, and the new configuration scheme is pre-filled with data assigning this responsibility. Consequently, a lot of places previously creating an css.sdb.InteractionHandler have been modified to create the default css.task.InteractionHandler. --- uui/source/iahndl.cxx | 231 +++++++++++++++------- uui/source/iahndl.hxx | 535 ++++++++++++++++++++++++-------------------------- 2 files changed, 422 insertions(+), 344 deletions(-) (limited to 'uui/source') diff --git a/uui/source/iahndl.cxx b/uui/source/iahndl.cxx index 40051ce00b51..9d5baac21d1a 100644 --- a/uui/source/iahndl.cxx +++ b/uui/source/iahndl.cxx @@ -111,6 +111,7 @@ #include "vos/mutex.hxx" #include "tools/rcid.h" +#include "tools/diagnose_ex.h" #include "vcl/svapp.hxx" #include "svl/svtools.hrc" #include "svl/httpcook.hxx" @@ -118,7 +119,10 @@ #include "toolkit/helper/vclunohelper.hxx" #include "comphelper/sequenceashashmap.hxx" #include "comphelper/documentconstants.hxx" +#include "comphelper/namedvaluecollection.hxx" +#include "typelib/typedescription.hxx" #include "unotools/configmgr.hxx" +#include "unotools/confignode.hxx" #include "ids.hrc" #include "cookiedg.hxx" @@ -144,6 +148,7 @@ using namespace com::sun; namespace csss = ::com::sun::star::security; +/** === begin UNO using === **/ using ::com::sun::star::uno::Sequence; using ::com::sun::star::uno::UNO_QUERY; using ::com::sun::star::uno::Reference; @@ -152,6 +157,15 @@ using ::com::sun::star::task::XInteractionAbort; using ::com::sun::star::task::XInteractionApprove; using ::com::sun::star::task::XInteractionAskLater; using ::com::sun::star::task::FutureDocumentVersionProductUpdateRequest; +using ::com::sun::star::uno::XInterface; +using ::com::sun::star::lang::XInitialization; +using ::com::sun::star::uno::UNO_QUERY_THROW; +using ::com::sun::star::task::XInteractionHandler2; +using ::com::sun::star::uno::Exception; +using ::com::sun::star::uno::Any; +using ::com::sun::star::task::XInteractionRequest; +using ::com::sun::star::lang::XMultiServiceFactory; +/** === end UNO using === **/ #define CONFIG_INTERACTIONHANDLERS_KEY "/org.openoffice.ucb.InteractionHandler/InteractionHandlers" @@ -1316,6 +1330,114 @@ bool UUIInteractionHelper::handleErrorHandlerRequests( return false; } +namespace +{ + // ................................................................................................................. + static bool lcl_matchesRequest( const Any& i_rRequest, const ::rtl::OUString& i_rTypeName, const ::rtl::OUString& i_rPropagation ) + { + const ::com::sun::star::uno::TypeDescription aTypeDesc( i_rTypeName ); + const typelib_TypeDescription* pTypeDesc = aTypeDesc.get(); + if ( !pTypeDesc || !pTypeDesc->pWeakRef ) + { +#if OSL_DEBUG_LEVEL > 0 + ::rtl::OStringBuffer aMessage; + aMessage.append( "no type found for '" ); + aMessage.append( ::rtl::OUStringToOString( i_rTypeName, RTL_TEXTENCODING_UTF8 ) ); + aMessage.append( "'" ); + OSL_ENSURE( false, aMessage.makeStringAndClear().getStr() ); +#endif + return false; + } + const ::com::sun::star::uno::Type aType( pTypeDesc->pWeakRef ); + + const bool bExactMatch = ( i_rPropagation.compareToAscii( "named-only" ) == 0 ); + if ( bExactMatch ) + return i_rRequest.getValueType().equals( aType ); + + return i_rRequest.isExtractableTo( aType ); + } +} + +// --------------------------------------------------------------------------------------------------------------------- +bool UUIInteractionHelper::handleCustomRequest( const Reference< XInteractionRequest >& i_rRequest, const ::rtl::OUString& i_rServiceName ) const +{ + try + { + Reference< XInteractionHandler2 > xHandler( m_xServiceFactory->createInstance( i_rServiceName ), UNO_QUERY_THROW ); + + Reference< XInitialization > xHandlerInit( xHandler, UNO_QUERY ); + if ( xHandlerInit.is() ) + { + ::comphelper::NamedValueCollection aInitArgs; + aInitArgs.put( "Parent", getParentXWindow() ); + xHandlerInit->initialize( aInitArgs.getWrappedPropertyValues() ); + } + + if ( xHandler->handleInteractionRequest( i_rRequest ) ) + return true; + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + return false; +} + +// --------------------------------------------------------------------------------------------------------------------- +bool UUIInteractionHelper::handleTypedHandlerImplementations( Reference< XInteractionRequest > const & rRequest ) +{ + // the request + const Any aRequest( rRequest->getRequest() ); + + const StringHashMap::const_iterator aCacheHitTest = m_aTypedCustomHandlers.find( aRequest.getValueTypeName() ); + if ( aCacheHitTest != m_aTypedCustomHandlers.end() ) + return handleCustomRequest( rRequest, aCacheHitTest->second ); + + // the base registration node for "typed" interaction handlers + const ::utl::OConfigurationTreeRoot aConfigRoot( ::utl::OConfigurationTreeRoot::createWithServiceFactory( + m_xServiceFactory, + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Interaction/InteractionHandlers" ) ), + -1, + ::utl::OConfigurationTreeRoot::CM_READONLY + ) ); + + // loop through all registered implementations + const Sequence< ::rtl::OUString > aRegisteredHandlers( aConfigRoot.getNodeNames() ); + const ::rtl::OUString* pHandlerName = aRegisteredHandlers.getConstArray(); + const ::rtl::OUString* pHandlersEnd = aRegisteredHandlers.getConstArray() + aRegisteredHandlers.getLength(); + for ( ; pHandlerName != pHandlersEnd; ++pHandlerName ) + { + const ::utl::OConfigurationNode aHandlerNode( aConfigRoot.openNode( *pHandlerName ) ); + const ::utl::OConfigurationNode aTypesNode( aHandlerNode.openNode( "HandledRequestTypes" ) ); + + // loop through all the types which the current handler is registered for + const Sequence< ::rtl::OUString > aHandledTypes( aTypesNode.getNodeNames() ); + const ::rtl::OUString* pType = aHandledTypes.getConstArray(); + const ::rtl::OUString* pTypesEnd = aHandledTypes.getConstArray() + aHandledTypes.getLength(); + for ( ; pType != pTypesEnd; ++pType ) + { + // the UNO type is the node name + ::utl::OConfigurationNode aType( aTypesNode.openNode( *pType ) ); + // and there's a child denoting how the responsibility propagates + ::rtl::OUString sPropagation; + OSL_VERIFY( aType.getNodeValue( "Propagation" ) >>= sPropagation ); + if ( lcl_matchesRequest( aRequest, *pType, sPropagation ) ) + { + // retrieve the service/implementation name of the handler + ::rtl::OUString sServiceName; + OSL_VERIFY( aHandlerNode.getNodeValue( "ServiceName" ) >>= sServiceName ); + // cache the information who feels responsible for requests of this type + m_aTypedCustomHandlers[ aRequest.getValueTypeName() ] = sServiceName; + // actually handle the request + if ( handleCustomRequest( rRequest, sServiceName ) ) + return true; + } + } + } + + return false; +} + bool UUIInteractionHelper::handle_impl( star::uno::Reference< star::task::XInteractionRequest > const & rRequest) @@ -1326,68 +1448,39 @@ UUIInteractionHelper::handle_impl( if (!rRequest.is()) return false; - //////////////////////////////////////////////////////////// // Display Messagebox - //////////////////////////////////////////////////////////// bool bDummy = false; rtl::OUString aDummy; - if (! handleMessageboxRequests(rRequest, false, bDummy, aDummy)) - { - //////////////////////////////////////////////////////////// - // Use ErrorHandler::HandleError - //////////////////////////////////////////////////////////// - if (!handleErrorHandlerRequests(rRequest, false, bDummy, aDummy)) - { - //////////////////////////////////////////////////////////// - // Display Special Dialog - //////////////////////////////////////////////////////////// - if (!handleDialogRequests(rRequest)) - { - //////////////////////////////////////////////////////////// - // Use customized InteractionHandler from configuration - //////////////////////////////////////////////////////////// - InteractionHandlerDataList dataList; - - GetInteractionHandlerList(dataList); - - InteractionHandlerDataList::const_iterator aEnd(dataList.end()); - for (InteractionHandlerDataList::const_iterator aIt(dataList.begin()); - aIt != aEnd; ++aIt) - { - Reference< uno::XInterface > xIfc = - m_xServiceFactory->createInstance(aIt->ServiceName); - - - Reference< com::sun::star::lang::XInitialization > xInitialization = - Reference< com::sun::star::lang::XInitialization >( xIfc, UNO_QUERY ); + if ( handleMessageboxRequests(rRequest, false, bDummy, aDummy) ) + return true; - OSL_ENSURE( xInitialization.is(), "Custom Interactionhandler does not implement mandatory interface XInitialization!" ); - if (xInitialization.is()) - { - uno::Sequence< uno::Any > propertyValues(1); - beans::PropertyValue aProperty; + // Use ErrorHandler::HandleError + if ( handleErrorHandlerRequests(rRequest, false, bDummy, aDummy) ) + return true; - aProperty.Name = rtl::OUString::createFromAscii( "Parent" ); - aProperty.Value <<= getParentXWindow(); - propertyValues[ 0 ] <<= aProperty; + // Display Special Dialog + if ( handleDialogRequests( rRequest ) ) + return true; - xInitialization->initialize(propertyValues); - } + // Use typed InteractionHandlers from configuration + if ( handleTypedHandlerImplementations( rRequest ) ) + return true; - Reference< task::XInteractionHandler2 > - xInteractionHandler( xIfc, UNO_QUERY ); + // Use customized InteractionHandler from configuration + InteractionHandlerDataList dataList; + GetInteractionHandlerList(dataList); - OSL_ENSURE( xInteractionHandler.is(), - "Custom Interactionhandler does not implement " - "mandatory interface XInteractionHandler2!" ); - if (xInteractionHandler.is()) - if (xInteractionHandler->handleInteractionRequest(rRequest)) - return true; - } - return false; - } - } + InteractionHandlerDataList::const_iterator aEnd(dataList.end()); + for ( InteractionHandlerDataList::const_iterator aIt( dataList.begin() ); + aIt != aEnd; + ++aIt + ) + { + if ( handleCustomRequest( rRequest, aIt->ServiceName ) ) + return true; } + + return false; } catch (std::bad_alloc const &) { @@ -1395,6 +1488,14 @@ UUIInteractionHelper::handle_impl( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("out of memory")), star::uno::Reference< star::uno::XInterface >()); } + catch( const uno::RuntimeException& ) + { + throw; // allowed to leave here + } + catch( const uno::Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } return true; } @@ -1514,20 +1615,15 @@ Window * UUIInteractionHelper::getParentProperty() SAL_THROW(()) return 0; } -star::uno::Reference< ::com::sun::star::awt::XWindow> UUIInteractionHelper::getParentXWindow() SAL_THROW(()) +star::uno::Reference< ::com::sun::star::awt::XWindow> UUIInteractionHelper::getParentXWindow() const SAL_THROW(()) { osl::MutexGuard aGuard(m_aPropertyMutex); - for (sal_Int32 i = 0; i < m_aProperties.getLength(); ++i) + ::comphelper::NamedValueCollection aProperties( m_aProperties ); + if ( aProperties.has( "Parent" ) ) { - star::beans::PropertyValue aProperty; - if ((m_aProperties[i] >>= aProperty) - && aProperty. - Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Parent"))) - { - star::uno::Reference< star::awt::XWindow > xWindow; - aProperty.Value >>= xWindow; - return xWindow; - } + star::uno::Reference< star::awt::XWindow > xWindow; + OSL_VERIFY( aProperties.get( "Parent" ) >>= xWindow ); + return xWindow; } return 0; } @@ -3357,11 +3453,8 @@ UUIInteractionHelper::handleFutureDocumentVersionUpdateRequest( // suitable place), again, and we would only have one place where we remember the s_bDeferredToNextSession // flag. // - // The side effect (well, actually the more important effect) would be that we do not need to burden - // this central implementation with all interactions which are possible. Instead, separate parts of OOo - // can define/implement different requests. (for instance, everything which today is done in the - // css.sdb.InteractionHandler can then be routed through a "normal" interaction handler, where today we - // always need to tell people to instantiate the SDB-version of the handler, not the normal one.) + // Note: The above pattern has been implemented in CWS autorecovery. Now the remaining task is to move the + // handling of this interaction to SFX, again. if ( !s_bDeferredToNextSession ) { diff --git a/uui/source/iahndl.hxx b/uui/source/iahndl.hxx index bea53e436c6d..12e15691fa55 100644 --- a/uui/source/iahndl.hxx +++ b/uui/source/iahndl.hxx @@ -54,6 +54,8 @@ #include #endif +#include + class Window; class LoginErrorInfo; struct CntHTTPCookieRequest; @@ -113,14 +115,17 @@ namespace com { namespace sun { namespace star { } } } } +typedef ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > > Continuations; + +typedef ::std::hash_map< ::rtl::OUString, ::rtl::OUString, ::rtl::OUStringHash > StringHashMap; + class UUIInteractionHelper { private: - osl::Mutex m_aPropertyMutex; - com::sun::star::uno::Reference< - com::sun::star::lang::XMultiServiceFactory > - m_xServiceFactory; - com::sun::star::uno::Sequence< com::sun::star::uno::Any > m_aProperties; + mutable osl::Mutex m_aPropertyMutex; + ::com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > m_xServiceFactory; + ::com::sun::star::uno::Sequence< com::sun::star::uno::Any > m_aProperties; + StringHashMap m_aTypedCustomHandlers; UUIInteractionHelper(UUIInteractionHelper &); // not implemented void operator =(UUIInteractionHelper); // not implemented @@ -152,298 +157,278 @@ public: throw (com::sun::star::uno::RuntimeException); private: - bool - handle_impl(com::sun::star::uno::Reference< - com::sun::star::task::XInteractionRequest > const & - rRequest) - throw (com::sun::star::uno::RuntimeException); + bool handle_impl( + com::sun::star::uno::Reference< com::sun::star::task::XInteractionRequest > const & rRequest + ) + throw (com::sun::star::uno::RuntimeException); - void - GetInteractionHandlerList(InteractionHandlerDataList &rdataList); + void GetInteractionHandlerList(InteractionHandlerDataList &rdataList); sal_Bool - isDomainMatch( rtl::OUString hostName, rtl::OUString certHostName); + isDomainMatch( + rtl::OUString hostName, + rtl::OUString certHostName + ); + static long - handlerequest(void* pHandleData, void* pInteractionHandler); + handlerequest( + void* pHandleData, + void* pInteractionHandler + ); com::sun::star::beans::Optional< rtl::OUString > - getStringFromRequest_impl(com::sun::star::uno::Reference< - com::sun::star::task::XInteractionRequest > const & - rRequest) - throw (com::sun::star::uno::RuntimeException); + getStringFromRequest_impl( + com::sun::star::uno::Reference< com::sun::star::task::XInteractionRequest > const & rRequest + ) + throw (com::sun::star::uno::RuntimeException); static long - getstringfromrequest(void* pHandleData, void* pInteractionHandler); + getstringfromrequest(void* pHandleData, void* pInteractionHandler); - Window * getParentProperty() SAL_THROW(()); + Window* getParentProperty() SAL_THROW(()); - ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow> getParentXWindow() SAL_THROW(()); + ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow> + getParentXWindow() const SAL_THROW(()); - rtl::OUString getContextProperty() SAL_THROW(()); + rtl::OUString + getContextProperty() SAL_THROW(()); - bool - initPasswordContainer(com::sun::star::uno::Reference< - com::sun::star::task::XPasswordContainer > * - pContainer, - com::sun::star::uno::Reference< - com::sun::star::task::XUrlContainer > * - pUrlContainer) - const SAL_THROW(()); + bool initPasswordContainer( + com::sun::star::uno::Reference< com::sun::star::task::XPasswordContainer > * pContainer, + com::sun::star::uno::Reference< com::sun::star::task::XUrlContainer > * pUrlContainer + ) const + SAL_THROW(()); com::sun::star::uno::Reference< com::sun::star::task::XInteractionHandler > - getInteractionHandler() const - SAL_THROW((com::sun::star::uno::RuntimeException)); + getInteractionHandler() const + SAL_THROW((com::sun::star::uno::RuntimeException)); - void executeLoginDialog(LoginErrorInfo & rInfo, + void executeLoginDialog(LoginErrorInfo & rInfo, rtl::OUString const & rRealm) SAL_THROW((com::sun::star::uno::RuntimeException)); - void - executeMasterPasswordDialog(LoginErrorInfo & rInfo, - com::sun::star::task::PasswordRequestMode nMode) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - executePasswordDialog(LoginErrorInfo & rInfo, - com::sun::star::task::PasswordRequestMode nMode, - ::rtl::OUString aDocumentName) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - executeMSPasswordDialog(LoginErrorInfo & rInfo, - com::sun::star::task::PasswordRequestMode nMode, - ::rtl::OUString aDocumentName) - SAL_THROW((com::sun::star::uno::RuntimeException)); + void executeMasterPasswordDialog( + LoginErrorInfo & rInfo, + com::sun::star::task::PasswordRequestMode nMode + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void executePasswordDialog( + LoginErrorInfo & rInfo, + com::sun::star::task::PasswordRequestMode nMode, + ::rtl::OUString aDocumentName + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void executeMSPasswordDialog( + LoginErrorInfo & rInfo, + com::sun::star::task::PasswordRequestMode nMode, + ::rtl::OUString aDocumentName + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void executeCookieDialog( + CntHTTPCookieRequest & rReques + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void executeFilterDialog( + rtl::OUString const & rURL , + uui::FilterNameList const & rFilters, + rtl::OUString & rFilter + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); - void executeCookieDialog(CntHTTPCookieRequest & rRequest) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void executeFilterDialog(rtl::OUString const & rURL , - uui::FilterNameList const & rFilters, - rtl::OUString & rFilter ) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - sal_Bool executeUnknownAuthDialog( const cssu::Reference< dcss::security::XCertificate >& rXCert ) - SAL_THROW((com::sun::star::uno::RuntimeException)); + sal_Bool + executeUnknownAuthDialog( + const cssu::Reference< dcss::security::XCertificate >& rXCert + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); - sal_Bool executeSSLWarnDialog( const cssu::Reference< dcss::security::XCertificate >& rXCert, - sal_Int32 const & failures, - const rtl::OUString & hostName) - SAL_THROW((com::sun::star::uno::RuntimeException)); + sal_Bool + executeSSLWarnDialog( + const cssu::Reference< dcss::security::XCertificate >& rXCert, + sal_Int32 const & failures, + const rtl::OUString & hostName + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); rtl::OUString - getLocalizedDatTimeStr( ::com::sun::star::util::DateTime aDateTime ); - - USHORT - executeErrorDialog(com::sun::star::task::InteractionClassification - eClassification, - rtl::OUString const & rContext, - rtl::OUString const & rMessage, - WinBits nButtonMask ) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - USHORT - executeMessageBox( rtl::OUString const & rTitle, - rtl::OUString const & rMessage, - WinBits nButtonMask ) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleAuthenticationRequest( - com::sun::star::ucb::AuthenticationRequest const & rRequest, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations, - rtl::OUString const & rURL) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleCertificateValidationRequest( - com::sun::star::ucb::CertificateValidationRequest const & rRequest, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleNameClashResolveRequest( - com::sun::star::ucb::NameClashResolveRequest const & rRequest, - com::sun::star::uno::Sequence< com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleMasterPasswordRequest( - com::sun::star::task::PasswordRequestMode nMode, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - - void - handlePasswordRequest( - com::sun::star::task::PasswordRequestMode nMode, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations, - ::rtl::OUString aDocumentName = ::rtl::OUString()) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleMSPasswordRequest( - com::sun::star::task::PasswordRequestMode nMode, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations, - ::rtl::OUString aDocumentName = ::rtl::OUString()) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleCookiesRequest( - com::sun::star::ucb::HandleCookiesRequest const & rRequest, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleNoSuchFilterRequest( - com::sun::star::document::NoSuchFilterRequest const & rRequest, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleAmbigousFilterRequest( - com::sun::star::document::AmbigousFilterRequest const & rRequest, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleFilterOptionsRequest( - com::sun::star::document::FilterOptionsRequest const & rRequest, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleErrorRequest( - com::sun::star::task::InteractionClassification eClassification, - ErrCode nErrorCode, - std::vector< rtl::OUString > const & rArguments, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations, - bool bObtainErrorStringOnly, - bool & bHasErrorString, - rtl::OUString & rErrorString) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleGenericErrorRequest( - sal_Int32 nErrorCode, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations, - bool bObtainErrorStringOnly, - bool & bHasErrorString, - rtl::OUString & rErrorString) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleMacroConfirmRequest( - const ::rtl::OUString& aDocumentURL, - const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xZipStorage, - const ::rtl::OUString& aDocumentVersion, - const ::com::sun::star::uno::Sequence< ::com::sun::star::security::DocumentSignatureInformation > aSignInfo, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations - ) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleFutureDocumentVersionUpdateRequest( - const ::com::sun::star::task::FutureDocumentVersionProductUpdateRequest& _rRequest, - com::sun::star::uno::Sequence< - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionContinuation > > const & - rContinuations - ) - SAL_THROW((com::sun::star::uno::RuntimeException)); - - void - handleBrokenPackageRequest( - std::vector< rtl::OUString > const & rArguments, - ::com::sun::star::uno::Sequence< - ::com::sun::star::uno::Reference< - ::com::sun::star::task::XInteractionContinuation > > const & - rContinuations, - bool bObtainErrorStringOnly, - bool & bHasErrorString, - rtl::OUString & rErrorString) - SAL_THROW((::com::sun::star::uno::RuntimeException)); - - bool handleMessageboxRequests( - ::com::sun::star::uno::Reference< - ::com::sun::star::task::XInteractionRequest > const & - rRequest, - bool bObtainErrorStringOnly, - bool & bHasErrorString, - rtl::OUString & rErrorString); - - bool handleDialogRequests( - ::com::sun::star::uno::Reference< - ::com::sun::star::task::XInteractionRequest > const & - rRequest); - - bool handleErrorHandlerRequests( - ::com::sun::star::uno::Reference< - ::com::sun::star::task::XInteractionRequest > const & - rRequest, - bool bObtainErrorStringOnly, - bool & bHasErrorString, - rtl::OUString & rErrorString); - - void handleLockedDocumentRequest( - const ::rtl::OUString& aDocumentURL, - const ::rtl::OUString& aInfo, - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< - ::com::sun::star::task::XInteractionContinuation > > const & - rContinuations, - sal_uInt16 nMode ) - SAL_THROW((::com::sun::star::uno::RuntimeException)); - - void handleChangedByOthersRequest( - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< - ::com::sun::star::task::XInteractionContinuation > > const & - rContinuations ) - SAL_THROW((::com::sun::star::uno::RuntimeException)); - - void handleLockFileIgnoreRequest( - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< - ::com::sun::star::task::XInteractionContinuation > > const & - rContinuations ) - SAL_THROW((::com::sun::star::uno::RuntimeException)); - + getLocalizedDatTimeStr( + ::com::sun::star::util::DateTime aDateTime + ); + + USHORT executeErrorDialog( + com::sun::star::task::InteractionClassification eClassification, + rtl::OUString const & rContext, + rtl::OUString const & rMessage, + WinBits nButtonMask + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + USHORT executeMessageBox( + rtl::OUString const & rTitle, + rtl::OUString const & rMessage, + WinBits nButtonMask + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + + void handleAuthenticationRequest( + com::sun::star::ucb::AuthenticationRequest const & rRequest, + Continuations const & rContinuations, + rtl::OUString const & rURL + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void handleCertificateValidationRequest( + com::sun::star::ucb::CertificateValidationRequest const & rRequest, + Continuations const & rContinuations + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void handleNameClashResolveRequest( + com::sun::star::ucb::NameClashResolveRequest const & rRequest, + Continuations const & rContinuations + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void handleMasterPasswordRequest( + com::sun::star::task::PasswordRequestMode nMode, + Continuations const & rContinuations + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + + void handlePasswordRequest( + com::sun::star::task::PasswordRequestMode nMode, + Continuations const & rContinuations, + ::rtl::OUString aDocumentName = ::rtl::OUString() + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void handleMSPasswordRequest( + com::sun::star::task::PasswordRequestMode nMode, + Continuations const & rContinuations, + ::rtl::OUString aDocumentName = ::rtl::OUString() + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void handleCookiesRequest( + com::sun::star::ucb::HandleCookiesRequest const & rRequest, + Continuations const & rContinuations + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void handleNoSuchFilterRequest( + com::sun::star::document::NoSuchFilterRequest const & rRequest, + Continuations const & rContinuations + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void handleAmbigousFilterRequest( + com::sun::star::document::AmbigousFilterRequest const & rRequest, + Continuations const & rContinuations + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void handleFilterOptionsRequest( + com::sun::star::document::FilterOptionsRequest const & rRequest, + Continuations const & rContinuations + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + + void handleErrorRequest( + com::sun::star::task::InteractionClassification eClassification, + ErrCode nErrorCode, + std::vector< rtl::OUString > const & rArguments, + Continuations const & rContinuations, + bool bObtainErrorStringOnly, + bool & bHasErrorString, + rtl::OUString & rErrorString + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void handleGenericErrorRequest( + sal_Int32 nErrorCode, + Continuations const & rContinuations, + bool bObtainErrorStringOnly, + bool & bHasErrorString, + rtl::OUString & rErrorString + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void handleMacroConfirmRequest( + const ::rtl::OUString& aDocumentURL, + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xZipStorage, + const ::rtl::OUString& aDocumentVersion, + const ::com::sun::star::uno::Sequence< ::com::sun::star::security::DocumentSignatureInformation > aSignInfo, + Continuations const & rContinuations + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void handleFutureDocumentVersionUpdateRequest( + const ::com::sun::star::task::FutureDocumentVersionProductUpdateRequest& _rRequest, + Continuations const & rContinuations + ) + SAL_THROW((com::sun::star::uno::RuntimeException)); + + void handleBrokenPackageRequest( + ::std::vector< rtl::OUString > const & rArguments, + Continuations const & + rContinuations, + bool bObtainErrorStringOnly, + bool & bHasErrorString, + ::rtl::OUString & rErrorString + ) + SAL_THROW((::com::sun::star::uno::RuntimeException)); + + bool handleMessageboxRequests( + ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest > const & rRequest, + bool bObtainErrorStringOnly, + bool & bHasErrorString, + ::rtl::OUString & rErrorString + ); + + bool handleDialogRequests( + ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest > const & rRequest + ); + + bool handleErrorHandlerRequests( + ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest > const & rRequest, + bool bObtainErrorStringOnly, + bool & bHasErrorString, + ::rtl::OUString & rErrorString + ); + + bool handleTypedHandlerImplementations( + ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest > const & rRequest + ); + + void handleLockedDocumentRequest( + const ::rtl::OUString& aDocumentURL, + const ::rtl::OUString& aInfo, + Continuations const & + rContinuations, + sal_uInt16 nMode + ) + SAL_THROW( ( ::com::sun::star::uno::RuntimeException ) ); + + void handleChangedByOthersRequest( + Continuations const & rContinuations + ) + SAL_THROW( ( ::com::sun::star::uno::RuntimeException ) ); + + void handleLockFileIgnoreRequest( + Continuations const & rContinuations + ) + SAL_THROW( ( ::com::sun::star::uno::RuntimeException ) ); + + bool handleCustomRequest( + const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest >& i_rRequest, + const ::rtl::OUString& i_rServiceName + ) const; }; #endif // UUI_IAHNDL_HXX -- cgit From fc0828d5a4e517a1a868a76cbf5b01b29a3c9b17 Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Thu, 4 Feb 2010 14:13:58 +0100 Subject: autorecovery: post-rebase build problems solved --- uui/source/iahndl.cxx | 2 ++ uui/source/iahndl.hxx | 4 ++++ 2 files changed, 6 insertions(+) (limited to 'uui/source') diff --git a/uui/source/iahndl.cxx b/uui/source/iahndl.cxx index 7d10a879ffe3..898081fd1bf8 100644 --- a/uui/source/iahndl.cxx +++ b/uui/source/iahndl.cxx @@ -112,6 +112,8 @@ using ::com::sun::star::task::XInteractionRequest; using ::com::sun::star::lang::XMultiServiceFactory; /** === end UNO using === **/ +using namespace ::com::sun::star; + namespace { class HandleData : public osl::Condition diff --git a/uui/source/iahndl.hxx b/uui/source/iahndl.hxx index a4db6632b664..e0b58f66ed58 100644 --- a/uui/source/iahndl.hxx +++ b/uui/source/iahndl.hxx @@ -174,6 +174,10 @@ private: getInteractionHandler() SAL_THROW((com::sun::star::uno::RuntimeException)); + bool handleTypedHandlerImplementations( + ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest > const & rRequest + ); + bool tryOtherInteractionHandler( com::sun::star::uno::Reference< -- cgit From 62a22fa9ea85d5e29e701e9649c01f52a5105559 Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Fri, 5 Feb 2010 13:04:20 +0100 Subject: autorecovery: when a handler is not yet in the cache, nonetheless use the first matching entry from the configuration, instead of continueing with other handlers when the first can't handle the request --- uui/source/iahndl.cxx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'uui/source') diff --git a/uui/source/iahndl.cxx b/uui/source/iahndl.cxx index 898081fd1bf8..e9f1b9e4c618 100644 --- a/uui/source/iahndl.cxx +++ b/uui/source/iahndl.cxx @@ -439,8 +439,7 @@ bool UUIInteractionHelper::handleTypedHandlerImplementations( Reference< XIntera // cache the information who feels responsible for requests of this type m_aTypedCustomHandlers[ aRequest.getValueTypeName() ] = sServiceName; // actually handle the request - if ( handleCustomRequest( rRequest, sServiceName ) ) - return true; + return handleCustomRequest( rRequest, sServiceName ); } } } -- cgit