diff options
author | Tor Lillqvist <tml@collabora.com> | 2018-04-25 19:08:42 +0300 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2018-05-31 15:46:25 +0300 |
commit | 3c041720304ec77202741b5d5c8df9b93bc70a70 (patch) | |
tree | e2559f7e5706d44fa0f2d0267123452eddaae0c4 /stoc | |
parent | Need to enter the AutomationInvokedZone here, too (diff) | |
download | core-3c041720304ec77202741b5d5c8df9b93bc70a70.tar.gz core-3c041720304ec77202741b5d5c8df9b93bc70a70.zip |
Simplify: Use AutomationInvokedZone::isActive()
Don't need the mbFromOLE boolean flag and the special "FromOLE"
parameter passed to the InvocationService::
createInstanceWithArguments().
Change-Id: I05e10a78955d87cb7c37e198c60c3ddcfdbc4275
Diffstat (limited to 'stoc')
-rw-r--r-- | stoc/Library_invocation.mk | 1 | ||||
-rw-r--r-- | stoc/source/invocation/invocation.cxx | 39 |
2 files changed, 13 insertions, 27 deletions
diff --git a/stoc/Library_invocation.mk b/stoc/Library_invocation.mk index 42f17556433c..dc22a2acb51b 100644 --- a/stoc/Library_invocation.mk +++ b/stoc/Library_invocation.mk @@ -16,6 +16,7 @@ $(eval $(call gb_Library_use_udk_api,invocation)) $(eval $(call gb_Library_use_libraries,invocation,\ cppu \ cppuhelper \ + comphelper \ sal \ )) diff --git a/stoc/source/invocation/invocation.cxx b/stoc/source/invocation/invocation.cxx index 5ffbb9cf586e..619c6f8942b7 100644 --- a/stoc/source/invocation/invocation.cxx +++ b/stoc/source/invocation/invocation.cxx @@ -18,6 +18,7 @@ */ #include <osl/mutex.hxx> +#include <comphelper/automationinvokedzone.hxx> #include <cppuhelper/queryinterface.hxx> #include <cppuhelper/exc_hlp.hxx> #include <cppuhelper/weak.hxx> @@ -99,8 +100,7 @@ class Invocation_Impl public: Invocation_Impl( const Any & rAdapted, const Reference<XTypeConverter> &, const Reference<XIntrospection> &, - const Reference<XIdlReflection> &, - bool bFromOLE ); + const Reference<XIdlReflection> & ); // XInterface virtual Any SAL_CALL queryInterface( const Type & aType) override; @@ -214,8 +214,6 @@ private: Reference<XExactName> _xENDirect, _xENIntrospection; - - bool mbFromOLE; }; @@ -224,13 +222,11 @@ Invocation_Impl::Invocation_Impl const Any & rAdapted, const Reference<XTypeConverter> & rTC, const Reference<XIntrospection> & rI, - const Reference<XIdlReflection> & rCR, - bool bFromOLE + const Reference<XIdlReflection> & rCR ) : xTypeConverter( rTC ) , xIntrospection( rI ) , xCoreReflection( rCR ) - , mbFromOLE( bFromOLE ) { setMaterial( rAdapted ); } @@ -254,7 +250,7 @@ Any SAL_CALL Invocation_Impl::queryInterface( const Type & aType ) { // Invocation does not support XExactName, if direct object supports // XInvocation, but not XExactName. Except when called from OLE Automation. - if (mbFromOLE || + if (comphelper::Automation::AutomationInvokedZone::isActive() || (_xDirect.is() && _xENDirect.is()) || (!_xDirect.is() && _xENIntrospection.is())) { @@ -308,7 +304,7 @@ Any SAL_CALL Invocation_Impl::queryInterface( const Type & aType ) { // Invocation does not support XInvocation2, if direct object supports // XInvocation, but not XInvocation2. - if ( mbFromOLE || + if ( comphelper::Automation::AutomationInvokedZone::isActive() || ( _xDirect.is() && _xDirect2.is()) || (!_xDirect.is() && _xIntrospectionAccess.is() ) ) { @@ -352,7 +348,7 @@ void Invocation_Impl::setMaterial( const Any& rMaterial ) // First do this outside the guard _xDirect.set( rMaterial, UNO_QUERY ); - if( !mbFromOLE && _xDirect.is() ) + if( !comphelper::Automation::AutomationInvokedZone::isActive() && _xDirect.is() ) { // Consult object directly _xElementAccess.set( _xDirect, UNO_QUERY ); @@ -448,7 +444,7 @@ Reference<XIntrospectionAccess> Invocation_Impl::getIntrospection() sal_Bool Invocation_Impl::hasMethod( const OUString& Name ) { - if (!mbFromOLE && _xDirect.is()) + if (!comphelper::Automation::AutomationInvokedZone::isActive() && _xDirect.is()) return _xDirect->hasMethod( Name ); if( _xIntrospectionAccess.is() ) return _xIntrospectionAccess->hasMethod( Name, MethodConcept::ALL ^ MethodConcept::DANGEROUS ); @@ -461,7 +457,7 @@ sal_Bool Invocation_Impl::hasProperty( const OUString& Name ) if (_xDirect.is()) { bool bRet = _xDirect->hasProperty( Name ); - if (bRet || !mbFromOLE) + if (bRet || !comphelper::Automation::AutomationInvokedZone::isActive()) return bRet; } // PropertySet @@ -484,7 +480,7 @@ Any Invocation_Impl::getValue( const OUString& PropertyName ) } catch (UnknownPropertyException &) { - if (!mbFromOLE) + if (!comphelper::Automation::AutomationInvokedZone::isActive()) throw; } try @@ -528,7 +524,7 @@ void Invocation_Impl::setValue( const OUString& PropertyName, const Any& Value ) } catch (UnknownPropertyException &) { - if (!mbFromOLE) + if (!comphelper::Automation::AutomationInvokedZone::isActive()) throw; } try @@ -602,7 +598,7 @@ void Invocation_Impl::setValue( const OUString& PropertyName, const Any& Value ) Any Invocation_Impl::invoke( const OUString& FunctionName, const Sequence<Any>& InParams, Sequence<sal_Int16>& OutIndices, Sequence<Any>& OutParams ) { - if (!mbFromOLE && _xDirect.is()) + if (!comphelper::Automation::AutomationInvokedZone::isActive() && _xDirect.is()) return _xDirect->invoke( FunctionName, InParams, OutIndices, OutParams ); if (_xIntrospectionAccess.is()) @@ -1111,22 +1107,11 @@ Reference<XInterface> InvocationService::createInstance() Reference<XInterface> InvocationService::createInstanceWithArguments( const Sequence<Any>& rArguments ) { - if (rArguments.getLength() == 2) - { - OUString aArg1; - if ((rArguments[1] >>= aArg1) && - aArg1 == "FromOLE") - { - return Reference< XInterface > - ( *new Invocation_Impl( *rArguments.getConstArray(), - xTypeConverter, xIntrospection, xCoreReflection, true ) ); - } - } if (rArguments.getLength() == 1) { return Reference< XInterface > ( *new Invocation_Impl( *rArguments.getConstArray(), - xTypeConverter, xIntrospection, xCoreReflection, false ) ); + xTypeConverter, xIntrospection, xCoreReflection ) ); } //TODO:throw( Exception("no default construction of invocation adapter possible!", *this) ); |